HowNet义原标注一致性检验方法研究
2021-05-27刘阳光岂凡超刘知远孙茂松
刘阳光,岂凡超,刘知远,孙茂松
(1.清华大学 计算机科学与技术系,北京 100084;2.清华大学 人工智能研究院,北京 100084;3.清华大学 智能技术与系统国家重点实验室,北京 100084)
1 引言
近年来,随着人工智能从数据驱动发展到知识驱动和数据驱动相结合,人们结合大量知识库,将人类知识融入到人工智能,应用于自然语言处理(natural language processing,NLP)、计算机视觉(computer vision,CV)等多个子领域并取得了显著的效果提升,知识库越来越受到研究者的青睐。作为在中文世界有巨大影响力的语言学常识知识库,《知网》(HowNet)[1]同样倍受关注,且针对其的相关研究和应用不断增多。HowNet由董振东、董强父子前后耗时30余年构建而成,它包含了由2 134个义原(sememe)组成的概念描述体系,借此能为无限多词语的概念进行语义标注。HowNet中的义原被定义为人类语言中不可再分的最小语义单位[2]。HowNet现包含手工标注的具有层次结构的中英双语词语已超过10万条,其中汉语词语5万条和对应的概念6万多条,以及与之对应的英语词语5.5万条和概念7万多条[3]。HowNet已被广泛应用于多种NLP任务,如信息结构标注[4]、语义表示学习[5]、词义相似度计算[6]、词义消歧[7-8]、情感分析[9]、问题自动分类[10]、信息融合研究[11]、文本聚类[12]、关系抽取[13]、多通道反向词典[14]等。由此可见,HowNet研究意义重大,应用前景广阔。
尽管HowNet应用价值大,但其存在一个缺陷:专家构建HowNet前后总耗时达30余年,时间跨度大引入许多标注误差,导致义原标注不一致,使HowNet整体一致性难以保证,降低了其应用价值。
下文对HowNet中存在的标注义原不一致问题进行说明。“生老病死”“生死”“生生死死”“生死存亡”“死活”是五个近义词,语义上都包含“生”和“死”两层含义。五个词在HowNet中的义原标注如表1所示,后四个词标注的义原一致为“事情、活着、死”,印证了“语义相同的词,具有相同的义原标注”的思想。但“生老病死”却只标注“事情、活着”两个义原,缺失义原“死”,和四个近义词存在明显的不一致。这个不一致问题在很大程度上会影响HowNet的应用价值,也会影响人们对HowNet义原知识的研究,因此亟需解决。
表1 HowNet中存在的义原标注不一致问题
另外,义原标注的不一致问题也制约着专家和研究者对HowNet的扩充。目前HowNet已标注词语数量还比较少,这严重限制其在各项NLP任务上的应用。因此,提升HowNet标注数据量,能显著提升它在多项任务上的应用效果。然而,无论是费时又费力的人工标注义原,还是利用机器学习自动预测义原,都会给HowNet引入不一致问题,导致义原标注一致性难以保证。因此,对义原标注一致性的检验非常重要,它是保证HowNet一致性的关键。
人工进行一致性检验费时费力,因此应用机器学习的方法进行一致性检验十分必要。但是,针对HowNet的一致性检验研究尚属首次,因此没有任何思路和方法可供参考,这大大增加了开展本研究的难度。另外,基于义原标注的知识库HowNet遵循还原论思想构建,本身缺乏形式化的标注规则,这也给一致性检验研究带来了不小挑战。
本文首次提出了对HowNet义原标注一致性检验(consistency check of sememe annotations,CCSA)方法。本方法基于“相同或相关义项,其义原标注具有相似性”的思想,旨在提升现有HowNet义原标注的一致性,并为进一步扩充HowNet数据进行一致性把关。我们利用神经网络语言模型预训练得到义原向量,并由此构造义项向量,通过协同过滤算法推荐出义项的义原列表,将列表与HowNet现有标注的义原进行比对,设置阈值,当两者MAP值大于等于阈值时,默认该义原标注和HowNet一致。通过设置大小不同的阈值进行实验,得到不同方法在不同条件下的一致性检验准确率。实验结果表明,CCSA方法在一致性检验上切实有效。
本文的贡献可以概括为:
(1) 研究发现HowNet义原标注的不一致问题,并分析其存在原因、主要特点及大致分类。
(2) 首次提出HowNet义原标注一致性检验方法,将“相同或相关义项,其义原标注具有相似性”作为基本理论[15],能参照知识库整体的义原标注来检验部分标注是否符合整体的一致性。
(3) 提出的方法能够计算义原标注的不一致性得分。实验结果表明,与所有基准模型相比,我们的方法有更高的检错率,能够从整体的义原标注更准确地计算出待检验数据的标注一致性大小,进而发现标注不一致的数据。
(4) 为进一步验证CCSA方法的有效性,我们将标注数据的不一致得分从小到大排序,然后进行人工核验,结果证实本方法切实有效。同时我们对存在不一致问题的数据进行修改和更正,提升了HowNet知识库的标注一致性。
1 相关工作
随着对HowNet的研究和应用不断扩展深入,其有限的数据量越来越无法满足研究的需要。而人工标注又费时费力,因此,一些研究者开始研究利用机器学习方法自动预测义原的工作。如Xie等[15]第一次提出了义原预测方法——基于协同过滤的方法SPWE和基于矩阵分解的方法SPSE。Jin等[16]提出了利用中文词语中的汉字信息进行义原预测的方法SPWCF和SPCSE,以及同时考虑中文词语内、外部信息的集成模型CSP。Qi等[17]探索了跨语言义原预测进而能够构造属于不同语言的义原知识库。
一致性检验在NLP领域是一个重要且常见的研究工作。如词义标注一致性检验[18]是通过将多义词每个释义对应的宾语与标准模式库进行匹配,或计算宾语与标准模式库宾语之间的相似度来检验词性标注的一致性;语料库词性标注一致性检查[19]是按照语境来判断的,以每个兼类词及其上下文语境所形成词性标记序列作为研究对象;还有中文文本语料库分词一致性检验[20]、规则与统计相结合的分词一致性检验[21]等。这些一致性检验方法的共同点是将词语的上下文或语境作为研究对象。但HowNet是为词语标注义原的常识知识库,每个词语都不存在上下文,因此已有的一致性检验方法[18-21]无法适用于HowNet的义原标注一致性检验。
2 方法
2.1 HowNet对词的义原标注
在HowNet中,一个词(word)包括一个或多个不同语义的义项(sense),每个义项由一个或多个义原(sememe)的组合共同描述。义原是人类语言中不可再分的最小语义单元,其思想和语言通用的语义元的思想密切相关[22]。
与一般语义词典不同,HowNet对词的解释不是通过文字定义,而是通过对词的形式化描述,即“词—义项—义原”三级组织结构化描述。词“折腾”的义原树如图1所示,“折腾”有四个义项,每个义项又由若干个义原共同描述。
图1 HowNet中词“折腾”的义原树
2.2 CCSA方法
在本文中,我们将与之前的工作[18-21]一样,将义原标注看成是义项的语义标签,只关注义项和义原之间的标注关系。本文提出的CCSA一致性检验方法的整体框架如图2所示。
图2 CCSA一致性检验方法的整体框架
在CCSA方法进行一致性检验后,我们对发现的不一致标注进行人工核验,并将存在明显不一致的数据进行修改、更正,提升HowNet义原标注的一致性。
2.2.1 义项向量的表示学习
1) 融入义原的神经网络语言模型
在神经网络语言模型中融入义原信息,可以学习义原的嵌入表示。融入义原的神经网络语言模型[23]如图3所示。
图3 融入义原的神经网络语言模型
•输出层:当前词语的词向量。
实验时,我们首先在语料库上预训练连续词袋模型CBOW[24]得到词的嵌入表示,然后将得到的词向量保持不变,对其所辖的义原向量不断进行更新。在不断地将词所辖义原向量训练逼近该词向量的过程中,便能学习得到能够较好预测这些义原共同描述的词向量的义原向量。
本方法采取义原向量求和平均作为义项的向量,目的是将义原包含的语义信息平等地赋予义项。这是因为每一个标注义原作为语义标签,对于义项是同等重要的,因此求和取平均可以使得每一个义原的语义对义项语义的贡献相同,能使之后计算的义项向量相似度更加准确。本文之后用“+S”表示融入义原的神经网络语言模型。
2) 为当前词引入义原的注意力机制模型
通过关注当前词的上下文,可以为当前词选择恰当的语义。对当前词引入义原的注意力机制(sememe attention)模型[25]如图4所示。
图4 对当前词引入义原注意力机制模型
本模型可以学习得到上下文的词嵌入表示和当前词的义原嵌入表示。关注多义项的当前词w的上下文,构建w的嵌入表示如式(5)所示。
实验时我们发现当前词w的义项选择只受上下文中有限的词影响,因此我们选择更小的K′代替K。本文之后用“+SA”表示对当前词引入义原注意力机制的模型。
2.2.2 基于参照集对检验集进行义原标注一致性检验方法
受Xie等[15]提出的义原预测方法SPWE启发,本文采用协同过滤推荐算法的思想针对每一个义项的义原标注进行一致性检验。
对于待检验一致性的义项,我们以“相同或相似的义项,它们的义原标注具有语义的相似性”作为理论依据,参照整体与其最为接近的词来得到其义原标注。
(9)
得分函数P(pj,si)的值越大,则表明义项si越应该被标注有义原pj。
3 实验设置和结果分析
3.1 数据集
我们在中文数据集上评测了所有模型,包括CCSA(+S)、CCSA(+SA)、SPWE和SPSE。利用SogouT(1)https://www.sogou.com/labs/resource/t.php语料库预训练了词向量、义原向量和义项向量。将数据集按照9∶1的比例随机切分,将其中1/10作为检验集,其他作为参照集,进行一致性检验。数据集的部分统计数据如表2所示。
表2 数据集数据大小
3.2 评价方法
由于大部分义项具有若干个标注义原,因此可以将义原标注一致性检验任务视为多标签分类是否准确的任务。
现有HowNet中的义原标注整体上是相对一致的,我们提出的CCSA一致性检验方法,将义项及其对应的原有标注义原当作“原有样例”,随机抽取一定数量的“原有样例”并将其标注的义原随机替换为2 134个义原集合中的其他义原(新替换的义原不是原有义原,且数量和原有义原保持一致),得到若干的随机“负样例”,将随机“负样例”合到一起作为一致性检验的检测数据集。
在评测指标上,我们参考了之前相关工作的设定,使用平均准确率均值(mean average precision,MAP)[26]作为评测指标。MAP是多标签分类任务中常用的评测指标之一,在信息检索[27]等领域被广泛使用。MAP的计算如式(10)所示。
其中,N是检测数据集J的随机“负样例”的数量,AveP(i)是第i个随机“负样例”的平均准确率,AveP(i)的计算如式(8)所示。
其中,n是HowNet中全部义原的数量,numi是第i个随机“负样例”的义项在HowNet中标注的义原数。在计算AveP(i)时,我们首先将所有义原的推荐得分从高到低排好序,然后依序判断是否为 HowNet里原标注的义原。Pi(j)是第i个随机“负样例”截至第j个义原时的准确率,而函数correcti(j)表示一个指示函数,其定义如式(12)所示。
根据参照数据集,每一种方法都得到了义项的推荐义原标注结果,计算该结果和检验集中现有义原标注的MAP值。由式(10)可知,MAP值越大,结果的准确率越高;MAP值越小,结果的准确率越低。所以,我们设置阈值(Threshold,T)并且当MAP值小于阈值T时,则认为当前义项原有的义原标注和HowNet整体的标注是不一致的。由于随机“负样例”的义原标注和原有标注情况差距较大,因此,我们参考相关工作,并根据实验结果的MAP值大小设置了阈值T。
在评估中,我们使用检错率(error detection rate,EDR)作为评估指标。检错率,即方法能够从“负样例”检验数据集中找出存在不一致随机“负样例”的能力,可通过式(13)计算得到:
其中,N是检测数据集J的随机“负样例”的数量,k表示实验方法能找出来的不一致的随机“负样例”个数,计算如式(14)所示。
函数error(i)是一个指示函数,其定义如式(15)所示。
3.3 基准方法
我们从HowNet中随机抽取义项,将其原有标注的义原随机替换,得到包含8 518个随机“负样例”的检验数据集。将每一种方法的义原推荐结果在检测集上计算MAP值,当MAP值小于阈值时,认为该种方法能够从检测集中找出随机“负样例”。
目前已有的义原预测方法[18-21],预测准确率在60%~65%之间,若预测的标注义原比已有的标注更加符合一致性,则预测的义原对随机“负样例”的MAP值将会小于所设阈值,即可找出不一致的随机“负样例”,因此可以将义原预测方法作为一致性检验的基准实验方法。
我们选择目前义原标注预测效果最好的SPWE和SPSE两种方法作为基准方法:
(1) SPWE[15],一种基于预训练词向量的方法。首先利用相似度计算在同一低维稠密向量空间中求得目标词的相似词,通过相似度从大到小将相似词的义原推荐给目标词。
(2) SPSE[15],一个基于义原向量的方法。首先利用矩阵分解方法求得和预训练词向量在同一低维稠密向量空间中的义原向量,通过相似度计算求得目标词和使用义原向量的相似度,从大到小将相似词的义原推荐给目标词。
3.4 义原标注一致性检验准确率
通过设置多组大小不同的阈值,通过式(13)得到各种方法在不同阈值下找出“负样例”的检错率,据此可判断方法对一致性检验的有效性。检错率越高,即该方法找出“负样例”的能力越强,则检验HowNet一致性的能力也越强。
根据提出的CCSA一致性检验方法和所有基准模型在检测数据集上的义原一致性检测结果和MAP值大小,我们设置四组以不同间隔大小递减的阈值进行实验,分别是A组0.4~0.1(阈值间隔0.1)、B组0.09~0.01(阈值间隔0.01)、C组0.009~0.001(阈值间隔0.001)、D组0.000 9~0.000 1(阈值间隔0.000 1)。四组实验结果如表3~表6所示。
表3 各种方法的检错率结果(阈值间隔0.1)
表4 各种方法的检错率结果(阈值间隔0.01)
表5 各种方法的检错率结果(阈值间隔0.001)
表6 各种方法的检错率结果(阈值间隔0.000 1)
续表
阈值从0.4开始设置,是考虑到当各种方法推荐的义原标注和随机“负样例”的MAP值小于0.4时,基本上就意味着两者的准确率是较低的,这也说明“负样例”和推荐的义原相比差距很大,可以认为是不一致的标注数据,即该“负样例”被认定为是不一致样例。实验结果表明,各种方法推荐的义原标注和“负样例”的MAP值基本都小于0.4,当阈值T大于0.4时,所有方法都会把“负样例”判定为错误,不能体现各种方法间的性能差异。
从实验数据我们可以看出:CCSA方法在0.4~0.000 1的阈值区间内,均取得了高于其他基准模型的检错率。尤其是随着阈值越来越小,相比较于其他基准模型,CCSA方法的性能优势更为明显。阈值越小,即要求方法对误差的容忍度越小,越能发现误差小的标注数据。具体地,当阈值下降到0.000 7时,基准方法的检错率就已经开始降低为0,而CCSA方法仍然保持着一定的检错率(CCSA(+S)为13.14%和CCSA(+SA)为12.8%);即使是阈值下降到0.000 1,CCSA方法仍然具有一定程度的检错能力。这也就是说,CCSA方法比其他基准模型有着更高的误差检测性能,能够发现更细小的标注误差。
通过实验可以发现,计算各种方法(CCSA方法和所有基准模型)推荐的义原结果和随机“负样例”得到的MAP值较小,这个其实好理解:我们替换原有真实标注义原得到的随机“负样例”,和原有真实标注差距是比较大的,而我们各种方法的推荐准确率比较高,因此,各种方法推荐的义原标注和错误的随机“负样例”之间计算得到的MAP值较小。
3.5 义原标注一致性分析
在将知识库应用于各项任务时,知识库的质量将决定任务能取得的实验效果。义原标注是HowNet知识库构建的核心环节,因而义原标注的一致性直接决定着HowNet知识库的质量和应用价值。只有保证了义原标注的一致性,那么将义原应用于NLP任务才有意义,才能取得好的实验效果。
义原标注一致,是指具有某种特定语义关系的词,其标注的对应义原之间也具有此种语义联系。这一特点在HowNet现有词语标注的义原中得到了很好地体现:
(1) 同义词或近义词,其标注的义原相同或语义相似,如图5所示。
图5 同义词(说媒、说亲)标注义原相同
(2) 反义词,其标注的义原语义相反,如图6所示。
图6 反义词(早熟、晚熟)标注义原语义相反
(3) 语义不同但相关的词,其标注的义原语义对应相关,如图7所示。
图7 相关词(怪味、酸味)标注义原对应相关
3.6 人工核验义原标注的一致性
为了更准确地找到相近义项作为参照,我们借助《哈工大社会计算与信息检索研究中心同义词词林扩展版》(简称《同义词词林》),其目前包含77 343条词语。根据词义的远近和相关性,《同义词词林》将这些词语分成了三类:同义词(词义相等或十分接近)、相关词(词义不同但有很强的相关性,属于同类词语)、独立词(在词典中既没有同义词,也没有相关词),且每一类独占一行。
将检验集中义项通过CCSA方法得到的一致性得分(MAP值)从小到大排序,借助《同义词词林》将这些义项和参照义项的义原进行对比研究,过滤掉《同义词词林》中不存在同义词或相关词的义项,然后人工核验这些义项的义原标注一致性。
3.7 案例分析、不一致问题分析
表7是部分义项的一致性人工核验结果。表中被加粗义原,表示该义原是待检验义项和参照义项标注义原不一致。例如,对于第二个义项“割地”,其在汉语词典中的定义是“割取土地给别国”,《同义词词林》给出的同义词参照义项是“割让”,其在汉语词典中定义是“由于外力威胁或战争失败,被迫把一部分领土让给别国。”无论是参考《同义词词林》,还是根据汉语词典定义,“割地”和“割让”都是同义词。但前者标注“放弃、政、陆地”三个义原,后者却只标注一个义原“放弃”。很显然,同义词义项“割地”和“割让”的义原标注存在不一致问题。
表7 部分义项的一致性人工核验结果
通过研究发现:现有HowNet存在的义原标注不一致问题,其形成原因主要分两类:一是不同标注者对义原标注的主观标准不一致;二是同一标注者在不同时间段对义原标注的标准不一致。不一致问题的主要表现是,本该有相同或相似义原标注的同义词/近义词,真实标注的义原却不相同/不相似。不一致标注问题大致可以分为如下三类:
(1)同义词标注义原不同或错误。例如,词语“做媒”标注义原是“调解、结婚”,但四个同义词“说媒,保媒,说亲,提亲”标注义原都是“引导、结婚”。
(2)同义词/同类词标注义原缺失。例如,①“发排”释义“编辑工作已做完,把稿件交给印刷厂排版”,标注义原“交、读物、编辑”。同义词“付排”释义“稿件交给印刷部门排版”,标注义原“交、编辑”,后者缺失义原“读物”;②“早稻”标注义原“庄稼、早期”,同类词“中稻”和“晚稻”标注义原只有“庄稼”,分别缺失义原“中期”“晚期”;③“中式、中国式、欧式”标注义原都有“样式值”,但同类词“男式”缺失该义原。
(3)同义词标注的义原同义,但未统一为同一义原。例如,义项“秃”和“钝”,根据HowNet中对前者的举例释义“E_C=笔~,箭头磨~了,针~了,锥子~了扎不进去”可知其和后者同义。后者被标注义原“钝”总标注频次为8,而前者标注义原“秃”总标注频次仅为1。义项“秃”和“钝”标注义原存在不一致,且若从标注频次上看,义原“秃”应由义原“钝”进行替代。
3.8 存在同义词或相关词对义原标注一致性检验准确率的影响分析
本文方法是参照整体检验部分的标注一致性,将待检验数据放到整体知识库中,让其和周围同属于一类的其他数据进行对比:无论是待检验数据,还是周围其他数据,只要存在标注不一致性问题,它们之间就会因不同而显得“格格不入”,而我们的方法能“感知”到这一情况,计算得到的不一致得分也会因此变高。因此,待检验数据可参照的同类词越多、和其相似度越高,则不一致性检验得分就越准确。从理论上,我们能够设想待检验数据不一致性得分的准确率按不同情况会有如下关系:“存在同义词”大于“存在相关词”,“无同义词”大于“既无同义词,也无相关词”。
我们统计了义项在《同义词词林》中存在同义词或相关词的数量,人工核验结果如表8所示。不一致得分最低100个义项中,存在同义词的义项有42个,经人工核验有35个不一致,不一致检验准确率为83.33%;存在相关词的义项有58个,经人工核验有38个不一致,准确率为65.52%;全部义项,经人工核验有73个不一致,准确率为73.00%。实验结果表明,CCSA方法对义原标注一致性检验是切实有效的,且本节第一段的设想也是合理的。CCSA方法的不一致性得分准确率,对于在参照集中存在同义词的义项,比只存在相关词的义项的准确率更高。另外,我们还发现,一致性检验的准确率高低也会随着同义词或相关词数量多少而变化,同义词或相关词的个数越多,则一致性检验的准确率也会越高。
表8 人工核验存在同义词或相关词的义项数量及其义原标注不一致检验准确率
3.9 人工修正不一致的义原标注
在人工核验Top100不一致的义原标注后,对于其中存在明显不一致性的数据,我们借助《同义词词林》参照其他同类义项的标注,并查阅义项在汉语词典中的语义,依据HowNet规定的2 134个义原组成的义原集合,人工修正了这些标注数据(2)对71个不一致标注的修正结果详见附录1。。
4 总结和展望
本文的主要目的是检验HowNet义原知识库中义原标注一致性问题,为提升知网一致性,扩充知网以便更好应用于各类NLP任务提供一种有效的方法。我们提出了CCSA方法,可以检验标注一致性较差的义原,通过对不一致性进行排序,我们人工验证并修正不一致的数据,从而提升HowNet知识库的一致性。
发现并提出问题,然后科学合理地提出解决问题的方法不是轻而易举的,需要反复尝试。在本文中,我们的方法有助于发现标注不一致的数据,但是仍然存在不足之处,在之后的研究工作中,我们还会在以下几个方向进行继续探索和改进:
(1) 是否存在义原标注树结构的不一致问题。和之前工作一样,本文着重解决了义原标注语义上的不一致性检验。如何考虑和解决义原标注结构上的不一致问题,是值得进一步研究的内容。
(2) 不存在或较少存在同义词或相关词的义项的一致性检验准确率较低。如何进一步提升这类情况的准确率,是接下来要继续努力的方向。
(3) HowNet是汉英双语语言常识知识库,本文工作目前只研究了中文义原标注的一致性检验,在将来的工作中,为构建更多语言版本的跨语言检验一致性工作值得尝试。
(4) 本文方法是针对HowNet的义原标注一致性检验提出的,而如何迁移应用于其他类似的知识库,形成一致性检验的普适方法,是非常值得研究并且很有意义的。