Press "Enter" to skip to content

说说被NLP忽视的逗号

一、逗号的用法

 

逗号是很常用的一个标点符号。在国家技术监督局颁布的《标点符号用法》GB/T15834-2011中,汉语的逗号的功能主要有以下四种:

 

1.句子内部主语与谓语之间的停顿:

 

我们看得见的星星,绝大多数是恒星。

 

2.句子内部动词与宾语之间的停顿:

 

应该看到,科学需要一个人贡献毕生的精力。

 

3.句子内部状语后边的停顿:

 

对于这个城市,他并不陌生。

 

4.复句内各分句之间的停顿:

 

据说苏州园林有一百多处,我到过的不过十多处。

 

逗号的使用很灵活,经常和句号混用,汉语中有“一逗到底”的现象,也就是一个大段落中,只有最后一个句号,其他需要用到句号都使用逗号了。一个句子中,逗号使用越多,句子长度越长,其中包含的语言现象就越复杂,如下例所示:

 

在一种特定形式中,模具还包括密封装置,布置成与主体接合并且能将其操作为用来在主体和模具之间形成流体密封,以防止注入到模腔中的模制材料从模腔中渗出。

 

二、NLP技术对逗号的处理

 

逗号的4种功能中,第4种“复句内各分句之间的停顿”,和其他几个差别较大,也是逗号最重要的功能,作为句子切分符号。所以 对逗号的处理,关键是识别它是否是句子切分符。

 

如果逗号不是句子切分符,而是前3种功能之一,那幺,逗号并不影响前后内容的连贯性,即使去掉逗号,句子的含义也没有变化。

 

如果逗号是句子切分符,逗号实际上把前后两个分句分隔开了,对这两个分句完全可以独立进行句法语义分析,而不用考虑另外一个分句对它的影响。当然,分句间经常会有省略主语的现象,这可以激活另外一个独立模块来处理,而不用混杂在一起。

 

当前主流的机器学习、深度学习技术,对逗号的处理,基本都是简单粗暴。 要幺以句号为句子切分符,对逗号完全忽略,这 导致一个句子过于复杂
,处理难度指数级增长;要幺以逗号为句子切分符,全部切开,这 导致句子的上下文信息无法有效利用
。据统计,在一般的书面语中,只有50%左右的逗号,作为句子切分符,这使得上述两种方法都很难达到较好的效果。因此,当前的技术对逗号的处理能力都很弱。

 

以忽略逗号的方法为例,句子是以句号为单位,把逗号当做无意义符号过滤掉,进行预训练和匹配。这样的处理,本质上增加了NLP的混淆度,因为在向量空间中,引入了跨逗号的上下文信息,而这些信息从语言的角度,有很多是完全不相关的,属于 信息噪声
。如上面例子中“……形成流体密封,以防止注入……”,这里的跨逗号上下文信息,没有任何的语言学相关性。

 

三、逗号的形式化处理

 

神州泰岳人工智能研究院,与国内着名高校北京师范大学合作,将符号化语义表示与深度学习技术进行结合,形成了自主知识产权的智慧语义认知技术UltraNLP。 智慧语义认知技术,将逗号当做一个特殊的语言特征来进行形式化表示,将逗号带来的小句切分和句间语义关系等问题进行上下文关联处理。
逗号的处理分解为五个环节,下面分别说明。

 

1.逗号的功能识别

 

为了表示逗号的功能,我们给每一个逗号后面都要标注相应的切分标记。逗号后的切分标记根据是否独立成句分为以下两种:

 

(1)、SST 表示逗号前的内容是一个小句

 

(2)、DBT 表示逗号前的内容不是一个小句,而是句内的一个块

 

如下面的例子,其中第一个逗号前不是一个完整的小句,标注了“|DBT”,它将和第二个小句合并成为一个小句;第二、三个逗号前都是完整的小句,标注了“|SST”。需要说明的是,一般句号默认会有“|SST”标记。

 

在一种特定形式中,|DBT 模具还包括密封装置,|SST 布置成与主体接合并且能将其操作为用来在主体和模具之间形成流体密封,|SST 以防止注入到模腔中的模制材料从模腔中渗出。|SST

 

对逗号的SST标记和DBT标记识别的依据,主要是句子的完整性判断,也就是判断逗号前是否具有句子的核心动词,如果有,则给出SST标记,否则,给出DBT标记。在给出标记的同时,可以给出标记的属性值,用LC_EXP表示。

 

SST标记的LC_EXP属性取值,共有5个,分别表示逗号前的小句是核心小句(SS_CORE)、非核心小句(SS)、句蜕小句(SS_JT)、EK块(SS_EK)、缺GBKn的小句(SS_NGBKn)。这些属性是对小句内部的语义结构,进行总体描述而抽象出的。

 

DBT标记的LC_EXP属性取值,共有5个,这些属性分别对逗号前的字符串整体角色进行说明:

 

表示逗号前的字符串是一个组块(BK)、是一个块的一部分(BK_P)、一个辅块(ABK)、句间关联词语(LB)、插入语(FY)。

 

每个属性的详细说明,这里不一一展开。下例中,第一个逗号前是一个句内块,不是一个完整小句,标记为DBT,属性值LE_EXP=ABK,表示为一个辅块;第二个逗号是小句,标记SST,属性值LE_EXP=SS_CORE,表示为核心小句,后面两小句都跟它有关联;第三个逗号和最后一个句号,都是小句,标记SST,属性值LE_EXP=SS,表示为非核心小句。

 

在一种特定形式中,|DBT, LC_EXP=ABK

 

模具还包括密封装置,|SST, LC_EXP=SS_CORE

 

布置成与主体接合并且能将其操作为用来在主体和模具之间形成流体密封,|SST, LC_EXP=SS

 

以防止注入到模腔中的模制材料从模腔中渗出。|SST, LC_EXP=SS

 

2.逗号切分的两小句间语义关系识别

 

每个有SST标记的逗号,其前后都是两个小句,这两个小句之间位置上是连续的,它们之间一定具有特定的语义关系,这种语义关系,我们用QFC属性来标记:

 

逗号的QFC属性值,共有19个,分别表示逗号前后两个小句之间的关系,包括块扩关系(QFC=SS_EP_ER)、句蜕关系(SS_EG_EL)、并列关系(SS_AND)、前一小句包含后一小句(SS_WHEREIN)、目的关系(SS_TO)、逗号内部的目的关系(SS_FOR)、说明关系(后一小句补充说明前一小句内容 SS_THAT)、因果关系(SS_YG)、推断关系(SS_TD)、假设关系(SS_JS)、条件关系(SS_TJ)、目的关系(SS_MD)、连贯关系(SS_LG)、递进关系(SS_DJ)、选择关系(SS_XZ)、转折关系(SS_ZZ)、让步关系(SS_RB)、假转关系(SS_JZ)、以及逗号前是辅块,逗号后是小句(DBT_EG)。如属性值SS_AND表示前后两个小句之间是并列关系,SS_EP_ER表示前后两个小句之间是块扩关系,SS_YG表示前后两个小句之间是因果关系。

 

小句间语义关系主要从显性关联词标记、句类知识、特定的语言形式以及隐性语义关联几方面认定。下面给出一个示例。例子中,第一个逗号后面的内容,都是“说明”的宾语,这在第一个逗号的标记上用属性QFC=SS_EP_ER来标示,最后一个逗号前后是并列关系,这在逗号的标记上用属性QFC=SS_AND来标示:

 

这里要着重说明,|SST, LC_EXP=SS_CORE, QFC=SS_EP_ER

 

在社会主义市场经济条件下,|DBT, LC_EXP=ABK

 

政府提出国内生产总值增长速度的目标,|SST, LC_EXP=SS, QFC=SS_DJ

 

是一个预期性、指导性指标,|SST, LC_EXP=SS, QFC=SS_AND

 

是提出财政预算、就业、物价等宏观经济指标的重要依据。 |SST, LC_EXP=SS

 

3.逗号间的省略与共享

 

每个有SST标记的逗号,其前后两个小句之间经常共享部分内容,这就造成了其中一个小句形式上有部分内容省略。如下面例句,第二个小句省略了“制品”:

 

该制品是红色的,具有相反的两端。

 

我们用SHR属性来标记逗号前后紧邻两个小句间的共享关系。根据小句之间是否存在语言成分共用的情况,可以分为共享、半共享、无共享等情况。SHR具体取值及说明如下:

 

SS_BGBK1 表示后一小句共享第一个小句的GBK1

 

SS_GBK1 表示后一小句共享前一小句GBK1

 

SS_PGBK1 表示后一小句共享前一小句GBK1的一部分

 

SS_GBK1H 表示前一小句共享后一小句GBK1

 

SS_GBKn 表示后一小句共享前一小句最后一个GBKn

 

SS_PGBKn 表示后一小句共享前一小句最后一个GBKn的一部分

 

SS_GBKn_R 表示重复前一小句最后一个GBKn,可有“该”,也可没有“该”

 

SS_QI_GBK 表示有“其、它”等指代,且“其、它”代表一个语义块

 

SS_QI 表示有“其”等指代说明符,且“其”只是语义块一部分

 

下面给出几个示例,其中SHR属性用红色标示,“[]”中包含的内容,是省略的内容,原始句子中没有。

 

该制品是红色的,|SST, SHR=SS_GBK1 [制品]具有相反的两端。

 

当第二通信终端空闲时,向第一通信终端发送一个消息, |SST, SHR=SS_GBK2[消息]指示现正处于空闲状态。

 

形成一个在导电构件与地之间连接的电流路径A, |SST, SHR=SS_GBKn_R 该电流路径A不经过电子源和驱动电路中的任何一个。

 

判断小句之间是否存在共享关系,首先就要考察是否有小句存在语义块缺省的情况,如果有省略,一般优先考虑三种情况:共享上一个小句的最后一个块;共享上一句的第一个块;或共享第一个小句的第一个块。需要根据上下文信息具体判断。

 

4.逗号的层级识别

 

一个句号中的多个逗号切分的小句,虽然形式上是一样的,实质上它们之间有层次。我们把这种层次也作为一个属性标示在SST符之上,用LEVEL属性来表示。一般情况下,LEVEL=1,表示这个逗号前的小句是核心小句,一个句号中经常可以有多个LEVEL=1的小句。

 

下例中第一个小句是核心小句,其逗号后标示有LEVEL=1,第四个逗号和其后的句号,是“说明”的主体内容,标示有LEVEL=2,第二个和第三个逗号前的内容是一个小句,是后面小句“是”的指示对象,标示有LEVEL=3:

 

① 这里要着重说明,|SST, LC_EXP=SS_CORE, QFC=SS_EP_ER, LEVEL=1

 

在社会主义市场经济条件下,|DBT, LC_EXP=ABK

 

② 政府提出国内生产总值增长速度的目标,|SST, LC_EXP=SS, QFC=SS_DJ, LEVEL=3

 

③ 是一个预期性、指导性指标,|SST, LC_EXP=SS, QFC=SS_AND, LEVEL=2

 

④ 是提出财政预算、就业、物价等宏观经济指标的重要依据。 |SST, LC_EXP=SS, LEVEL=2

 

这里的逗号的层次,如果翻译成英文,看起来会更直观一些,层次较低的小句,一般翻译为英文的从句。示例对应的英文如下。

 

It is important to mention here that in a socialist market economy, a target for GDP growth set by the government is a guide and an indicator of the anticipated level. It serves as an important basis for setting macroeconomic targets for the budget, employment and prices.

 

逗号的层次识别,可以根据句间连词等显式标记词来判定,如表因果关系的“因为……,所以……”,后一个小句的层次高于前一个小句。对没有句间连词的小句,只能通过上下文,来判断小句间语义的包含关系或递进关系。

 

5.语义关系的传递

 

在逗号的层次识别中,我们一般处理的是两个相邻小句之间的关系,从而给出相邻小句两两之间的层次。如果有多个逗号的话,在相邻两两关系确定后,对于每个小句和LEVEL=1的核心小句之间的语义关系,则需要利用其中的并列关系、递进关系等来进行传递。

 

我们来看下上节例子中的传递。示例共有4个小句,发生了2次小句关系的传递。

 

首先,小句①的核心是“说明”,是核心小句,从语义上来说,它与后面的小句②构成SS_EP_ER关系,此时,小句①的LEVEL=1,小句②的LEVEL=2 。

 

其次,小句③中核心为“是”,语义上来说,小句②和小句③是SS_EG_EL关系,小句②的层次比小句③低一级,因此,把小句②与小句①之间的SS_EP_ER关系传递给小句③,即小句①与小句③的关系是SS_EP_ER关系,此时,小句②的LEVEL=3,小句③的LEVEL=2。

 

再次,小句③和小句④是并列关系,因此将小句①和小句③的关系SS_EP_ER传递给小句④。

 

上面的例子是小句关系向后传递的,也可以有向前传递。看下面示例。

 

① 建立巩固的国防,|SST, QFC=SS_AND, LEVEL=2

 

② 建设强大的人民军队,|SST, QFC=SS_EG_EL LEVEL=2

 

③ 是社会主义现代化建设的战略任务。|SST, LEVEL=1

 

示例共有3个小句,小句②和小句③是SS_EG_EL关系,其中,小句③是核心小句,其LEVEL=1。由于小句②和小句①是并列关系SS_AND,因此小句③和小句①也是SS_EG_EL关系。

 

通过上述五个环节的处理,我们可以对每个逗号,都标示出其切分功能(SST或DBT),并通过形式化属性,给出逗号前小句的抽象描述(LC_EXP属性),给出逗号之间的语义关系(QFC属性),并给出逗号的层次。

 

四、逗号形式化处理的启示

 

我们可以从上述逗号处理中得到如下启示:

 

1、 我们 需要充分认识每一个语言符号
。即使如逗号这样看似功能简单、容易忽视的语言符号,也具有丰富的语言知识。这些知识可以帮我们将复杂的语言现象,分解为相对简单的小句来处理,不仅简化了NLP处理的复杂度,而且可以进一步推动深层次语义理解的能力。

 

2、我们 不能把自然语言简单的作为一个sequence序列来处理
。自然语言是非线性的,有其内在结构。这一点,在以逗号切分的小句间,也是成立的。小句间的语言结构,不仅有层次性,而且其关系也可以传递。

 

3、 NLP技术的研究开发,需要将语言知识与计算技术很好地融合

脱离语言知识,而追求算法的普适性,是舍本求末。

 

认识、尊重每一个语言特征,是NLP人必须具备的基本素养。

 

作者:晋耀红博士,神州泰岳首席科学家,人工智能研究院院长,北京师范大学教授,博士生导师。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注