基于规则的双重否定识别
——以“不V1不V2”为例

2022-06-17 09:09袁毓林
中文信息学报 2022年4期
关键词:真值助动词双重

王 昱,袁毓林,2,3,4

(1.北京大学 中文系,北京 100871; 2. 澳门大学 人文学院中国语言文学系,澳门;3. 北京大学 中国语言学研究中心,北京 100871; 4. 北京大学 教育部计算语言学重点实验室,北京 100871)

0 引言

0.1 研究背景

在语义识别领域,否定对语义有着重要的影响,否定的有无影响整个句子的真值与情感。例如,“我喜欢这件衣服”,这句话的真值为真,情感为积极。但是如果在动词前加上否定词“不”(即“不喜欢”),真值便为假,情感便为消极。因此,句子中的否定成分是自然语言语义识别处理时必须考虑的内容。而在否定用法中,有一种特殊的用法——双重否定。丁声树先生在《现代汉语语法讲话》中将其概括为: “一句话先后用两个否定词,如‘不能不去’‘没有人不去’‘非去不可’之类,都是双重否定的句法。双重否定意思上是肯定的,不过跟单纯肯定不全一样”。[1]例如,“我不得不去学校”指“我得去学校”,“我不一定不同意这个观点”指“我也许同意这个观点”。虽然用的是否定的格式,表达的却是肯定的语义,且其语气还与单纯肯定有一定的区别。这种连用否定表达肯定的特殊结构即为双重否定。对于自然语言语义识别来说,双重否定是处理语料时必须考虑的内容。如果计算机无法识别双重否定,则可能会导致整个句子的语义真值和情感极性的判断错误。因此,我们有必要对双重否定进行更全面深入的研究与探索。双重否定的自动识别将有助于句子语义与情感识别的进一步发展。

0.2 文献综述

目前国内对于双重否定的研究主要集中在双重否定的定义、范围、语义和语用等理论问题方面。

双重否定的定义与范围方面,学界一直存在争议,如吕叔湘先生[2]、王力先生[3]等认为含有否定词的反诘句是双重否定,而符达维先生[4]则认为反诘句不是双重否定。

双重否定格式方面,已有研究都是从分类与举例的角度进行讨论,尚未有一篇论文从形式的角度对双重否定格式进行具体详细的遍历分析。目前对双重否定格式概括最为全面的是芜崧[5]所划分的八大类型,25个格式,但是其主要涵盖的是“构式”类的双重否定,对于非构式类的双重否定尚未进行全面的考察。

语义语用方面,叶文曦[6]、方绪军[7]、何爱晶[8]等引入了Ladusaw[9]的形式语义学,Horn[10]的元语否定等理论,对一些典型的结构进行了分析,得出了具有解释力的成果。然而,由于双重否定的范围、格式还未确定,目前学者只集中分析了几个典型的结构,覆盖面十分有限,无法直接应用于实践。

自然语言理解领域,关于双重否定识别的研究非常少。目前只有王勇等[11]在其极性词典的构建中,简单地搜集了一些典型的双重否定结构,构建了一个双重否定词典,具体如图1所示。

图1 王勇双重否定词典示意图

然而该词典所归纳的结构数量有限,大量双重否定结构未被收入,如“不应不”“不准不”“不该不”“非……不可”“无一不”“没有……不……”,等等。

0.3 本文的选题及意义

综上所述,目前国内多从分类与举例的角度对双重否定进行讨论,尚未有从形式的角度对双重否定格式进行遍历分析的成果。关于双重否定,我们只知道一些具体的实例,并没有归纳其完整的形式格式。另一方面,双重否定对于语义的真值与情感极值有着重大的影响,如“我不可能不去”与“我不去”真值完全相反,然而目前国内并未有学者对双重否定的识别予以关注。基于此,本研究选取了“不V1不V2”为研究对象,尝试对含“不”的双重否定结构实现自动识别功能。本文将对“不V1不V2”做全面的考察,判断属于双重否定结构的“不V1不V2”的具体特征,并根据归纳出的特征建立自动识别程序。最后,建立的自动识别程序能对含有多个“不”的语料进行识别,区分属于双重否定与不属于双重否定的句子,并返回其内部的双重否定结构。本研究可以作为预实验,为后续的全面的双重否定自动识别程序做基础。

1 “不V1不V2”双重否定的类型及识别规则

目前关于双重否定的定义和标准,学界尚未有定论。鉴于语义真值识别和情感极值判断是计算机对否定结构进行语义识别时所面临的主要问题,本文借鉴形式语义学,对双重否定拟定了一个工作定义: 只要两次否定与肯定在语义真值上相同,“﹁ ﹁ P==P”,便属于双重否定。符合双重否定条件的结构即为双重否定结构。

为了得到完整的双重否定结构格式,本文结合前贤研究,采用遍历的方法,梳理了所有的“不V1不V2”的语法形式并对其进行考察,试图找出所有可能的双重否定结构。具体的遍历方法如下:

(1) 在CCL语料库中搜寻含有“不$Num不”的语料(Num取值为“1~20”);其中Num表示“不”与“不”之间相隔的字数。如“不得不”的Num为1,而“不觉得不”的Num为2;

(2) 根据所得语料,结合词性限制,在“不$Num不”中提取所有可能的“不V1不V2”,并进行数据统计;

(3) 根据统计结果与具体语料,对结果进行概括,抽象出具体的所有可能的“不V1不V2”结构。

具体结果如表1所示。

表1 “不V1不V2”格式表

1.1 不+助动词+不+V2

“不+助动词+不+V2”是目前公认的双重否定的结构,其具体格式为“不+表示可能或必要的助动词+不+V2”,如“不得不去”“不会不来”“不可不说”等等。例句如下:

[例1]a. 一些农村学校的校长为了保证学习的正常运转,不得不四处筹钱。

b. 一些农村学校的校长为了保证学习的正常运转,(必须)得四处筹钱。

[例2]a. 这样重大的事件新闻界不会不给予特别重视。

b. 这样重大的事件新闻界会给予特别重视。

例1、例2的a、b例句,虽然它们的语气强度存在区别,如例1a中的“不得不”比例1b中的“得”的肯定语气更强,然而这种语气变化并不影响语义的真值 。例1a、例2a仍与例1b、例2b的语义真值一致,符合“﹁ ﹁ P==P”双重否定的标准,属于双重否定结构。

对于“不+助动词+不+V”这种在长期使用中已经逐渐变为接近于构式的固化结构,本文采取简单的字符串匹配的方法,便可实现对其的识别。

1.2 不+是+不+V2/不+是+……+不+V21.2.1 不+是+不+V2

“不+是+不+V2”与“不+助动词+不+V2”结构类似,也是最为常见的双重否定结构之一,但是“不+是+不+V2”的情况更为复杂。因为“不+是+不+V2”中的“不是”除了可以表示描述性真值否定(descriptive truth-functional negation)外,还可以表示元语否定(non-truth-functional negation)。“所谓元语否定,就是用元语言对对象语言所描述的非真值语义的否定,……是一种非真值意义否定;与之相对应的是真值否定,否定的是句子的真值条件(truth condition)”。[8]这种元语否定常常是引述性否定,是对之前对话中已出现的内容的否定。例句如下:

[例3]a. “可现在杀他不容易啊。”有人说。不是不容易,是根本不可能。

b. #“可现在杀他不容易啊。”有人说。是容易,是根本不可能。

[例4]a. “可我不想跟她结婚。”刘东北进一步道,“不是不想跟她结婚,是不想结婚。”

b. #“可我不想跟她结婚。”刘东北进一步道,“是想跟她结婚,是不想结婚。”

[例5]a. 毛泽东同志反对的是教育脱离实际、脱离群众、脱离劳动,不是不要读书,而是要读得更好。

b. 毛泽东同志反对的是教育脱离实际、脱离群众、脱离劳动,是要读书,(而)是要读得更好。

上述例句,例3、例4中的“不是”为元语否定,它是对之前内容的语用否定,而不是对本句内容的语义否定,因此例3a、例4a无法转化成例3b、例4b。从语义来说,例3a、例4a中的“不是不”只包含一重语义否定,其逻辑式为“﹁ P”,并不符合“﹁ ﹁ P==P”双重否定的标准,因此,不属于双重否定结构。而例5a例句中的“不是”是对语义的否定,“不是不”符合“﹁ ﹁ P==P”双重否定的标准,因此,属于双重否定结构。

综上所述,对于“不+是+不+V2”,需要使计算机先区分其中的“不是”是元语否定还是真值否定,然后才能判断其是否为双重否定结构。在单纯的文本里,绝大多数表示元语否定的“不是”都只出现在“不+是+不+x,(而)是+y”的结构中。因此,下面我们将以“不+是+不+x,(而)是+y”为对象作进一步的讨论。

由于真值否定,其修订的是命题真值,因此,其修正内容(y)的真值应与错误内容(不x)的真值相反。而元语否定不对语义真值进行否定,因此其修正内容(y)的真值应与错误内容(不x)的真值一致。

根据这一观察,我们提出判断“不+是+不+x,(而)是+y”是否为双重否定结构的具体方法如下:

提取“不+是+不+x”中的x,并匹配y与“不+x”的真值(1)判断真值的方法为,计算其谓语真值。一次否定为-1,两次否定为1,以此类推。判断真值时,也包括内含否定的谓词,如“讨厌”、“丑”等。。若“不+是+不+x,(而)是+y”中“y”的真值与“不+x”不一致,则句中的“不是不”属于双重否定结构;若一致,则不属于双重否定结构。

结合这一方法,本文对例3、例5句子分析如下:

[例3]a. “可现在杀他不容易啊。”有人说。不是不容易,是根本不可能。

(y真值: -1,不x真值: -1,不属于双重否定)

[例5]a.毛泽东同志反对的是教育脱离实际、脱离群众、脱离劳动,不是不要读书,而是要读得更好。

(y真值: 1,不x真值: -1,属于双重否定)

根据上述方法,本文可以判断出上述两个例句中的“不是不”,是否是双重否定结构。因此,本文采用字符串匹配与计算真值的方法,实现计算机对“不是不”双重否定结构的识别。

1.2.2 不+是+……+不+V2

不+是+……+不+V2除了需要满足“‘不是’表示语义否定”的条件外,还需要满足“不是”的否定焦点落在“不V2”上的条件。如“不是我故意不来”并不等于“是我故意来”。因为在该例中,“不是”的否定焦点在“故意”上而不在“不来”上。具体否定焦点的限制条件本文将会在1.4.2节中进行讨论。

1.3 “不+V1+不+V2”/“不+V1+……+不+V2”(非述宾结构)

“不+V1+不+V2”指“V1”不是助动词、不是“是”的结构,它的结构类型有主谓、并列、紧缩、述宾等。“不+V1+……+不+V2”则指“不V1”与“不V2”之间不紧邻的“不+V1+其他内容+不+V2”结构。下面本文将对以上各个结构类型一一进行讨论。

主谓结构的“不V1(……)不VP”,指“不隐藏不代表泄露”“不买票不是我的决定”这一类表达,语料数量很少。在该类结构中,“不V1”只是一个命题陈述,是交流中的旧信息,“不V1”的“不”与“不VP”的“不”,没有语义上的关联,并不构成,“双重”否定的关系。主谓结构的“不V1不VP”只是“不V1VP”结构的否定,不属于双重否定结构。如“不隐藏不代表泄露”不等于“隐藏代表泄露”“不买票不是我的决定”不等于“买票是我的决定”。紧缩结构的“不+V1+(……)+不+V2”包括“不x不行”“不x不成”等固定形式的短语结构,也包括“不买票就不让进”“不给钱不办事”这一类表达。其语义为“如果不V1,那么不V2”。关于紧缩条件类的结构是否为双重否定未有定论。在这里本文从形式语义学的角度对其进行讨论。

以“不x不行”为例。“x行”语义为“如果x,那么行”。P命题可以分解为q1“x”,q2“y”,逻辑式为蕴含式q1→q2,它的等值式为﹁ q2→﹁ q1。而“不x不行”语义为“如果不x,那么不行”,逻辑式应为蕴含式﹁ q1→﹁ q2。从下列真值表可以看出,q1→q2与﹁ q1→﹁ q2的语义真值不一致,不符合 “﹁ ﹁ P==P”的标准,因此从形式语义学来看,紧缩语义结构不是双重否定结构(2)虽然紧缩语义结构不是双重否定结构,但是比起普通的并列结构,紧缩语义结构仍然具有其独特的表达功能,应该与其他结构区分开,未来我们希望能对其展开进一步的研究。。

表2 紧缩结构语义真值表

并列结构的“不V1(……)不V2”,指“不哭不闹”“不高不低” 这一类表达。袁毓林[12]提出并列结构“通常不能通过直接在这种谓词性并列结构的前面加上‘不、没有’等否定词来构成否定式,而是要在这种并列结构的各个直接成分之前分别加上‘不、没有’等否定词。”因此,“不V1不V2”只是“V1V2”并列结构的一重否定结构,不属于双重否定结构。如“不哭不闹”不等于“哭闹”。

1.4 “不+V1+不+V2”/“不+V1+……+不+V2”(述宾结构)

述宾结构的“不+V1+(……)+不+V1”指“不觉得不好”、“不知道你不来”等V1为述语,“不V2”为宾语的结构。该结构中存在一部分结构,其“不V1”对“不V2”有语义指向,属于双重否定结构,如例7所示;同时还存在一部分结构“不V1”与“不V2”之间没有语义指向,不是双重否定结构,如例6所示。

[例6]a. 我不知道你不来。(述宾)

b. #我知道你来。(述宾)

[例7]a. 平时也是人来人往,我不相信你不难受。(述宾)

b. 平时也是人来人往,我相信你难受。(述宾)

因此,对于述宾结构的“不+V1+(……)+不+V2”,本文的主要任务是找出其中“不V1”对“不V2”存在语义指向、属于双重否定的结构,并提取其特征,制定识别规则。下面将以“不+V1+……+不+V2”为对象进行讨论。

1.4.1 第一个条件: V1为非叙实动词

首先我们需要确定在什么情况下“不V1”对“不 V2”具有语义指向与管辖功能。

[例8]a. 我不知道他不来。

b. #我知道他来。

[例9]a. 我不幻想他不来。

b. #我幻想他来。

[例10]a. 我不认为他不来。

b. 我认为他来。

通过例句,可以发现,当V1为“认为”时,“不+V1+……+不+V2”可以转换成“V1+……+V2”,而当V1为“知道”“幻想”时却不能转换。同样是动词,“知道”“幻想”“认为”却存在着区别。本文认为,“不V1”对“不 V2”是否有语义指向或管辖的作用与V1的语义有关,具体来说与V1的叙实性有关。

李新良等[13]将叙实性定义为“叙实性是动词的一种语义功能,即动词预设其宾语小句真值的能力。具体来说,肯定式和否定式都预设其宾语小句为真的动词是叙实动词……肯定式和否定式都不预设其宾语小句为真,也不预设其宾语小句为假的动词是非叙实动词……肯定式和否定式都预设其宾语小句为假的动词是反叙实动词”。因此,对于叙实动词和反叙实动词来说,由于其预设固定,无论主句有无否定,宾语小句的真值都不变,因此主句无法影响宾语小句的真值,不构成“﹁ ﹁ P==P”。然而,对于非叙实动词(如: 认为)来说,由于非叙实动词对宾语小句并没有预设,在述宾结构中,主句中的V1可以对宾语的真值造成影响,具有“﹁ ﹁ P==P”的可能。因此,本文提出述宾结构“不+V1+……+不+V2”构成双重否定的第一个条件: V1为非叙实动词。

1.4.2 第二个条件: “不V1”的否定焦点包含V2

该条件只对分开的“不+V1+……+不+V2”有约束,对于紧连的“不+V1+不+V2”并无影响。当主句V1确定为非叙实动词时,该句子并不一定为双重否定句。示例如下:

[例11]a. 我不认为他不来。

b. 我认为他来。

[例12]a. 我不认为他故意不来。

b. #我认为他故意来。

[例13]a. 我不相信他不喜欢我。

b. 我相信他喜欢我。

[例14]a. 我不相信他不喜欢我到了看见我就恶心的地步。

b. #我相信他喜欢我到了看见我就恶心的地步。

在例句中,例11a、例13a可以转换为例11b、例13b,而例12a、例14a却不能转换为例12b、例14b。为何?本文认为这主要与否定的焦点有关。袁毓林[14]指出“有的成分表达的是句子的预设意义,属于旧信息,事实上它们的意义在否定的情况下仍然得以保持;有的成分表达的是句子的焦点意义,属于新信息,它们是真正被否定的。”当V2不是否定焦点时,“不V1”并不会对V2进行否定,不构成“﹁ ﹁ P”,不满足“﹁ ﹁ P==P”的条件,不属于双重否定结构。例如“我不认为他故意不来”中的“不V1”否定的是“故意”而不是“不来”,其中的“不来”是预设成分,属于旧信息,其真值不受“不V1”的影响。如:

[例15]a. 我不认为他故意不来。预设: 他不来。

b. 我认为他故意不来。预设: 他不来。

结合袁毓林[14]关于否定词焦点与辖域的观点,本文将“不V1……不V2”中“不V1”的否定焦点的情况归结如下:

(1) 若V2存在谓语状语或者谓语补语,则谓语状语或者谓语补语是否定焦点;反之,则V2是否定焦点;

(2) 若V2的状语、补语、宾语中含有全称量词或者“一+量”时,量词为否定焦点。

[例16]a. 我不认为他每一天都不来。

b. #我认为他每一天都来。

[例17]a. 我不认为他不喜欢所有人。

b. #我认为他喜欢所有人。

由此本文提出述宾结构的“不V1……不V2”构成双重否定的第二个条件: 不V1的否定焦点包含V2。这一条件同样适用于“不+是+……+不+V2”。具体参照1.2.2。

2 双重否定自动识别程序的建立

2.1 词库的建立

为了使计算机能够识别助动词、非叙实动词,本文对助动词与非叙实动词进行了梳理,在常用的基础词表中补充了助动词词表与非叙实动词词表。

助动词方面,本文以郑贵友[15]整理的助动词范围为基本,结合鲁晓琨[16]等前人的研究以及现代汉语的使用情况,选取了26个助动词,构成常用助动词词表。具体如下:

能、能够、可能、会、可以、应该、应、应当、要、得、愿意、愿、甘愿、肯、可、情愿、想、要、敢、该、配、当、准、许、得、容;

非叙实动词方面,结合袁毓林、李新良等人对非叙实动词的研究,本文认为非叙实动词多为心理动词。因此本文对心理动词进行了考察。若一个心理动词的宾语真值未被预设,则该心理动词为非叙实动词。以此为标准,本文在心理动词中筛选出了24个非叙实动词(3)非叙实动词的界限并不是完全清晰的。非叙实动词与叙实动词、反叙实动词之间还存在漂移现象。由于其情况较为复杂,且对本文研究的影响较小,故暂不讨论。 ② “不是不”结构199句中包含了“岂不是”等“不+反问句式”的句子,排除后,为192句。整理如下:

认为、觉得、想(料想、猜想)、感到、情愿、相信、乐意、愿意、盼望、希望、猜、猜测、揣测、揣摩、推测、估计、估摸、猜想、考虑、打算、说(认为)、同意、赞同、允许;

2.2 双重否定自动识别程序的流程

以第1节所讨论的语法规则为核心,本文设计了双重否定自动识别程序。程序的输入为含有两个副词词性“不”的语料txt文件,输出为一个结果txt文件。输出的结果分为两个部分,一是所有识别出的含有双重否定结构的句子及其双重否定结构类型;二是语料总句数、双重否定句子句数、各双重否定结构的句子句数等统计信息。示例如图2所示。

图2 实验结果示例图②

具体程序的识别步骤如下:

(1) 通过Python程序使用哈工大LTP对语料进行分句、分词、词性标注;对每一个句子进行以下(2)~(6)操作。

(2) 检测其是否含有“不+助动词+不+V”结构,若含有,则为双重否定句,其双重否定结构为“不+助动词+不+V”,将句子写入文件并归入数据统计,跳过后续步骤。若不含有,则进行下一步。

(3) 检测其是否含有“不+助动词+非叙实动词+不+V”结构,若含有,则为双重否定句,其双重否定结构为“不+助动词+非叙实动词+不+V”,将句子写入文件并归入数据统计,跳过后续步骤。若不含有,则进行下一步。

(4) 对句子进行句法分析。

(5) 检测其是否含有述宾关系的“不+非叙实动词(+……)+不+V”结构,若含有,则为双重否定句,其双重否定结构为“不+非叙实动词(+……)+不+V”,将句子写入文件并归入数据统计,跳过后续步骤。若不含有,则进行下一步。

(6) 检测其是否含有述宾关系且“不是”为语义真值否定(通过否定值判断)的“不+是(+……)+不+V”结构,若含有,则为双重否定句,其双重否定结构为“不+是(+……)+不+V”,将句子写入文件并归入数据统计,跳过后续步骤。若不含有,则该句不含有双重否定结构,进行数据统计。

3 双重否定自动识别实验

3.1 实验语料来源

本文在CCL语料库中,提取了100 000条含有“不”的语料,并通过程序从中抽取含有两个副词词性“不”的句子,共计28 033句,以此为“不”的基础语料,测试双重否定识别程序的正确率。同时,本文从28 033句语料中选取了1 000条语料作为人工检测语料,以测试双重否定识别程序的召回率。

3.2 实验结果

本文使用双重否定识别程序对28 033句语料进行识别,获得了894句含有双重否定结构的句子。经人工的检校,发现以上894个句子中,含有双重否定结构的句子数为878,该程序识别正确率为98.21%。具体如表3所示(4)由于文章讨论的范围限制,删去了“岂不是”这类“不+反问词”的句子。。

表3 实验结果统计表

为了测试该程序的召回率,本文人工对1 000句语料进行检校,筛选出了29句含有双重否定结构的句子。本文将这1 000句语料输入到双重否定识别程序中,程序识别出了27句含有双重否定结构的句子。因此,该程序的召回率约为93.10%。根据F1值公式与上述数据,该程序的F1值为95.58%。

3.3 实验分析

无论是正确率还是召回率,实验的准确率都是在百分之九十多,未达到百分之百。我们对以上三个未达到百分百正确率的双重否定结构的语料进行分析。结果显示,程序识别与召回错误主要与句子的句法分析错误有关。由于分词与句法分析等基础自然语言处理工具的问题,程序对一些句子的句法判断错误,导致一些原本应被判为并列结构、因果关系的成分,被误判为述宾结构,从而使整个双重否定结构的识别错误。例句如下:

[例18]如果用适用各种土质的几十台钻机同时作业,电力条件不允许,地下管网不安全。

[例19]……每到拔棉柴时,农民心里直犯愁,用手拔吧,费工费时不说,拔不了多少,便满手血泡。有的急于求成把将来要办的事情,拿到今天来办,由于条件不允许迟迟开展不了。

以上例句中,V1与V2都不构成述宾结构,不符合程序中双重否定结构的规则,然而程序并未检索出这一点,导致识别错误。这个问题主要与句法分析的处理工具有关,本文暂时无法对其进行进一步的改进。

除此之外,还有一些句子的识别错误,是由于结构格式总结疏漏所造成的。例句如下:

[例20]因为他们不是不懂足球,便是偏爱市井蜚闻的帮闲之辈。

上述例句,其结构为“不是……便是……”,整体为选择并列的关系。其中“不是不懂足球”中的“不是”并不表示否定,而是选择。可以理解为“要么是不懂足球”,因此不属于双重否定结构。然而由于我们归纳结构格式时,没有考虑到类似的特殊结构,将其简单地归入了“不是不”,从而导致了错误。这一问题,可以通过更多次的实验与总结来改进。

4 结语

本文通过遍历考察对现有的双重否定结构形式进行了补充,从“非叙实动词”与“否定焦点”的角度对述宾式“不+V1+……+不+V2”双重否定结构成立的条件进行了讨论。实践方面,基于文中所提识别策略,设计了“不”的双重否定自动识别程序,对28033句语料进行了识别,识别正确率为98.21%,召回率约为93.10%,F1值约为95.58%,并在此过程中补充了助动词词表与非叙实动词词表。以上结果表明基于规则的双重否定自动识别具有一定的实践性。然而,本文的讨论范围还限于“不V1不V2”这一个格式。未来,将引入更多的双重否定结构,全面地对双重否定进行考察,以期能够真正地实现计算机对双重否定的自动识别,将其应用于文本分析、问答系统等自然语言处理应用当中。

猜你喜欢
真值助动词双重
基于双重预防机制创新化工企业管理模式
从推量助动词看日语表达的暧昧性
“助动词”相关语法知识集锦
助动词的用法
浅析弗雷格的涵义与指称理论
化解“双重目标”之困
分析师关注对财务重述的双重作用
分析师关注对财务重述的双重作用
浅谈弗雷格的“函数和概念”
维吾尔语助动词及其用法