《同义词词林》的嵌入表示与应用评估

2018-12-06 03:37段宇光俞士汶
关键词:词义语料库句式

段宇光,刘 扬,俞士汶

(1.北京大学计算语言学教育部重点实验室,2.北京大学元培学院,3.北京大学计算语言学研究所,北京 100871)

在机器智能时代,自然语言的理解和分析具有重要价值.在实现途径上,大体分为基于知识库的理性方法和基于语料库的经验方法.在理性方法方面,《同义词词林》(以下简称《词林》)作为汉语知识库的一个典范代表,由语言学家对汉语中的词进行划分、归类,形成语义上的层级结构,在词义相似度计算[1-3]、实体关系抽取[4-5]、语义角色标注[6]、文本分类[7]等多种任务或应用中有广泛影响;在经验方法方面,建立在语料统计分析上的分布式表示也在不断发展,早期基于词共现矩阵获得词嵌入表示[8-10],后来通过前馈神经网络学习词嵌入的方法成为主流[11],并广泛应用于自然语言处理的多种任务或应用[12-14].

基于知识库的理性方法,解释性强,但一般情况下需要针对不同任务设计不同算法,在不同领域间的适用性较差.而基于语料库的经验方法,往往采用无监督训练,自动化程度高,获得的词向量可以适用于多种任务.因此,如何将两者的优势结合起来,采用经验方法在知识库中自动地提取词义信息,最大程度地重复使用已有的人类专家知识,获得适用于多种任务的嵌入表示,是一个较新的研究课题.

此前,有研究者注意到将理性知识注入以改善嵌入表示的潜在需求,挖掘WordNet图结构中简化的邻接关系信息[15]或者参照多部词典的释义条目信息[16],以此作为训练内容来获得词嵌入表示;也有人关注如何由已有的词嵌入表示获得义素嵌入表示和同义词集嵌入表示[17],以及通过建立词嵌入表示到同义词集的映射来提高词向量的解释性[18];另有一些工作希望在语料库训练中加入词义、句法知识以获得更有效的词嵌入表示[19];或者采用随机游走(random walk)方法利用知识库构建伪语料,再通过神经网络训练获得词嵌入表示[20].这些方法大多是在基于真语料库训练词向量,部分地加入或联结了知识库中的词义、句法知识.之后邻接关系信息及随机游走方法对此有所改进,不再依赖于真语料库的预训练,但在利用知识库知识构建嵌入表示或构建伪语料时采用了相对间接、繁琐的手段,其生成过程较为复杂.除此之外,针对一般的知识库资源,目前也没有相对直接的应对策略和解决方法.

本研究使用哈尔滨工业大学研发的《词林》扩展版(http:∥www.ltp-cloud.com/download)为知识本体,提出并展示基于知识库训练嵌入表示的伪句式构造方法.根据《词林》词义编码的层级结构,将其扩展为词义描述式并构造3类伪句式:义素编码句式、义素编码扩展句式、词编码句式,以此生成符合理性知识分布规律的不同的伪语料库,在此基础上使用word2vec训练义素向量及词向量;考察不同训练模型、不同窗口大小在不同伪语料库上的训练效果,并将获得的向量分别应用于词义合成、类比推理和词义相似度计算等自然语言处理任务上.

1 研究基础与任务简介

1.1 《词林》知识表示

《词林》是由梅家驹编撰的汉语同义词或相关词的划分、归类词库[21],经哈尔滨工业大学社会计算与信息检索研究中心扩展后,目前共包含77 343个词、90 102个义项,这些义项被分为12个大类、95个中类、1 428个小类、4 026个词群和17 797个原子词群.其大类编码为1位大写英文字母,中类编码在之后加1位小写英文字母,小类编码在之后加2位十进制整数,词群编码在之后加1位大写英文字母,原子词群编码在之后加2位十进制整数并附1位符号对分类结果作特别说明;符号“=”代表该词群内的不同词为同义词,“#”代表该词群内的不同词为相关词,“@”代表该词群内只有一个词.例如,原子词群编码“Aa01A01=”代表具有特定义项的同义词集{人,士,人物,…}.《词林》结构与编码如图1所示.在下文中,以词义编码来泛指以上各类编码.

图1 《词林》结构示意图

1.2 分布式语义与分布式表示

分布式语义是一种数据驱动的语义分析,旨在对语料中的语义相似性进行量化和归类,它基于Harris[22]提出的著名的分布式假设,即“上下文相似的词,其语义也相似”.

在此基础上,Hinton等[23]提出了词的分布式表示,又称嵌入表示(embedded representation),其思想源于如下认知看法:词义或称概念可以通过刻画它的各种属性来高效表示,而这些属性又同时与多个概念相关联,因此,一个概念可以通过这些属性的激活状态来表示.这种表示方法显著区别于传统的独热表示(one-hot representation).在形式上,独热表示使用向量的一个维度来表示不同的词,嵌入表示则用低维、稠密的实数向量来表示所有的词,如表1所示.嵌入表示将词之间的语义关联进行了适当的编码,使近义词在大多数维度上都相近,因而比独热表示有更强的表达能力.比如,即使只使用二值表示(即将每一维的取值限定为0或1),长度为n的独热表示只能表示n个不同的概念,而嵌入表示则可以表示2n个不同的概念[24].

表1 独热表示与嵌入表示对比

1.3 词义合成任务

语义合成一直是自然语言理解关注的重点,使用有限单位组合出无限的含义,这是人类可以有效交流的重要原因[25].基于此,不少研究者致力于使用神经网络训得的词向量合成表示短语、句子等更大语言单位的向量[14,26-28].但是,建立在神经网络模型上的语义合成不易捕获和解释,这仍是计算和认知科学中反复探讨的一个未解难题[29-30].

此前,有关语义合成的研究大多将注意力放在词以上的语言单位上,鲜有学者关注更基本的语言层级上的语义合成问题.事实上,词并不是语言中的基本意义单位,文献[31]中指出,语言中的一个基本语义单位是义位,相当于词的一个义项表达,通过分解义位可以进一步得到最小的义素单位.比如,男人=“人”ד男性”ד成年”[32],其中,“人”、“男性”、“成年”都是最小的义素单位.基于此,本研究提出一种由词以下单位进行词义合成的任务,即由义素向量合成词向量的测试.在本研究中,将以《词林》为例衡量该任务,其测试集由《词林》中的所有词及其词义编码构成.

1.4 类比推理任务

类比推理任务由Mikolov等[33]提出,目的在于用词向量来预测句法和语义的关联性.比如,一个标准的表述形式如“男人∶女人∷父亲∶wi”,在理想状态下,词wi的词向量V可通过“男人”“女人”“父亲”的词向量的加、减运算得到,即V(wi)=V(女人)-V(男人)+V(父亲).在类比推理任务中,人工预先给定wi的理想答案,计算给定词的词向量与理想词向量的夹角余弦,以此评价词嵌入的实际效果.

Chen等[34]给出了类比推理任务集(https:∥github.com/Leonard-Xu/CWE),其中包含3种类型,共计953组推理,包括:首都与国家506组,州/省与城市175组,亲属关系272组.在《词林》中,实际包含该任务集中的921组,包括:首都与国家506组,州/省与城市175组,亲属关系240组.

1.5 词义相似度计算任务

词义相似度计算是同义词检测、歧义消解、信息抽取等任务或应用的基础,其计算方法分为2种[35]:一种是利用语料进行统计分析,将词频及分布等情况作为词义相似度计算的依据[36],其结果依赖于选取的语料库[37],目前常用神经网络模型获得词向量,并依据夹角余弦计算词义相似度;另一种方法是通过发掘知识库中概念之间的共性与差异性,以此来评估词义相似度[38],包括基于路径、特征、信息内容和利用概念注释等不同方法[39].

汉语中,常用的词义相似度计算任务集包括MC30(https:∥github.com/huyingxi/Synonyms/blob/master/VALUATION.md)和wordsim297(https:∥github.com/thunlp/SE-WRL/blob/master/datasets/wordsim-297.txt).测试者使用计算模型对测试集中限定的词对进行相似度评分,并与人工判定标准做比较,通常使用皮尔森相关系数r,对模型方法的有效性进行评价.

2 《词林》的嵌入表示方法

2.1 《词林》结构的调整

在《词林》层级结构中,每一层上的词义编码并没有明确标出词义的分类特征与取值.但是,在描写词义时,每增加一层编码,客观上都会对意义表达产生进一步的约束和限定.因此,可以将每层新增的编码信息视为构成词义的一个新增义素,而低层的词义编码中,则包含了此上各层的义素信息.换言之,每个词义可以等价于一组义素的组合.此外,在《词林》中,所有的词都分布在叶子节点上,其词义描写程度一样,但这并不符合语言事实.实际上,每个词的语义颗粒度不同,颗粒度大的应位于较高层节点,而颗粒度小的应位于较低层节点.基于以上看法,对《词林》结构进行调整.

考虑到位于群首的词往往能表征该原子词群的一般含义,其代表程度较高,颗粒度也较大,按如下方法进行《词林》结构的调整:由下至上,依次将低层中每个编码对应的首词汇集起来并挂在上一层的父节点下,从而使高层编码也有对应的词集,并通过高层词集中的所有词的共性来反映特定编码的义素信息.最终不同抽象程度的词均获得了不同的语义颗粒度描写.整理后的《词林》结构如图2所示.

图2 调整后的《词林》结构示意图

2.2 基于《词林》的伪句式构造

神经网络训练依据词在上下文中的分布信息来捕捉词义,因此,使用该方法在《词林》中提取词义,就需要依据其中的知识描述来构造上下文分布合理的伪句子和伪语料库.

整理后的《词林》层级结构中共有23 570个节点,每个节点代表的概念都不相同.利用每个词的词义编码信息构造3类伪句式,即:义素编码句式、义素编码扩展句式、词编码句式.由于《词林》中的词义编码代表了该层上的概念含义,在造句时,依照层级结构确定编码和词的距离具有分布合理性,适合用word2vec模型来训练义素向量及词向量.3类伪句式的定义如下,相应的示例如表2所示.

表2 《词林》中不同句式示例

1) 义素编码句式:根据义素的编码构造伪句式,每个词的所有祖先节点编码构成代表该词义的义素组合,依据祖先节点在层级结构中与该词的距离,确定该祖先节点编码在句中与该词的距离.句式呈回文数形,词前后均有5个编码,如果编码不足5个,则将距离该词最近的编码复制多次进行占位处理.这样的造句方式,保证句长固定且前后对称,同时满足连续词袋(CBOW)方法和跳字(Skip-Gram)方法对窗口词形式的要求.

2) 义素编码扩展句式:依据不同的词义相似度计算方法,预先对每个词筛选出和该词相似度达到特定阈值的近义词集,并将义素编码句式中的词依次代换为其近义词集中的其他词,以此扩大伪语料库的规模.这种句式实质上是借助已有的理性方法,提升近义词在伪语料库中的分布相似度,从而使依据分布信息训得的词向量能够析取近义词.本研究中采用田久乐等[1]的、吕立辉等[2]、朱新华等[3]提出的词义相似度计算方法 .比如“人”的近义词集,如果采用田久乐等[1]的算法,在特定的相似度阈值设定下,则包括{人,士,人物,人士,人氏,人选,人类,生人,全人类,人口,口,食指,翁}等词.

3) 词编码句式:将义素编码句式中的每个义素编码替换为该编码词集中的所有词.在这种句式假定下,每个义素编码代表的义素信息可以通过该编码词集中的所有词的共性反映出来,也由此代表了该义素信息.这种句式的句长不固定,但前后依然对称.

2.3 《词林》的嵌入表示训练

Word2vec 模型基于上下文对词进行概率预测,包括CBOW和Skip-Gram方法,它可以从大量无标的语料库中学习词的嵌入表示.其中,CBOW根据当前词wi上下文的词向量表示求和或平均后,直接预测wi;而Skip-Gram则与CBOW对称,使用当前wi预测其上下文中的每一个词.

本研究利用gensim自然语言处理库中的word2vec模块(https:∥github.com/RaRe-Technologies/gensim),使用CBOW和Skip-Gram方法在3种伪语料库上进行平行训练,完全不借助于任何其他真语料库,并考察不同窗口词大小对训练结果的影响.

值得注意的是,在构造义素编码句式和义素编码扩展句式时,《词林》中各层的词义编码在伪语料库中都有分布,并且与词的出现形成合理的分布关系,经过word2vec模型训练,可以同时获得针对《词林》嵌入表示的义素向量和词向量.并且本研究也在中文维基百科语料(https:∥dumps.wikimedia.org)上训练词向量,用于相关任务的效果对比与验证.

3 嵌入表示结果的应用评估

3.1 词义合成任务评估

由于《词林》的词义编码中包含了各层的义素信息,词义等价于一组义素的组合,理论上,可以将一个词的词向量替换成一组义素向量的归一化求和结果,以此考察义素向量在词义合成任务上的表现.在本研究中,采取如下公式来计算义素合成的词向量:

其中,w1为所要计算的词,si为与词义相关的义素,V(x)为义素向量或词向量,αi为权重参数.权重参数按义素所处的层级位置,采用等比递减或等比递增等不同方法,即:αi+1=0.5αi或αi+1=2αi.

通过计算义素向量合成的词向量和原词向量的余弦相似度,可以评价词义合成任务的有效性.由于多义词有多种义素编码表达式,进而生成多种义素合成的词向量,在任务评估时,对每个词对,需取得和原词向量余弦相似度最高的一组义素合成的词向量.在该任务上,本研究使用CBOW和Skip-Gram方法在不同句式、不同窗口词大小下的训练结果如表3所示.

其中,扩展句式取αi+1=0.5αi和αi+1=2αi两种权重分配中得分较高的一种,最优模型均采用αi+1=0.5αi. 依据3种相似度计算算法的不同特点,扩展句式的相似度阈值ρ分别定为:ρ[1]=0.89,ρ[2]=0.65,ρ[3]=0.84,训练中迭代次数为5,词向量维度为300,最小词频为0,其他参数取默认值.

从实验结果可以看出,Skip-Gram训练效果普遍优于CBOW,较合适的窗口大小为3~4.使用义素编码句式效果最优,达到95.84%,表明义素信息实现了成功注入,可以有效地用义素合成的词向量来表征原词向量.这也说明《词林》对词义的分层描述具有一定的合理性,生成的伪句子在分布上依然保持了这种性质,经训练获得的义素向量和原词向量之间存在合成关系.在加入了理性算法后,合成效果反而有所下降,可能原因是扩展的句子采用了近义词,给语料带来了噪音,这也反过来说明理性算法与知识确实被注入进去了.

总体来说,《词林》知识的采用,在语义合成任务上具有显著优势.

3.2 类比推理任务评估

对于类比推理任务,使用CBOW和Skip-Gram方法在不同句式、不同窗口词大小下训练得到的结果如表4所示.

其中,扩展句式取αi+1=0.5αi,扩展句式的相似度阈值ρ同上,训练模型参数同上,维基百科语料训练中的最低词频为3,其他模型参数和伪语料库相同.

可以看出,Skip-Gram效果更好,最佳句式为义素编码句式,使用该句式的义素合成的词向量成绩达到94.37%,其效果明显优于原词向量.该结果进一步说明,《词林》知识的采用,可以有效实现词义合成,并将义素合成的词向量应用于其他任务上.在模型参数相同的条件下,在伪语料库上训得的词向量的效果优于在维基百科上训得的词向量.可能原因在于:与词单位相比,知识库中的义素单位不存在歧义,且有不重不漏的特性;此外,《词林》中的词义描述式格式整齐,在此基础上生成的伪句式分布具有规范性,句式生成过程中可以人为地控制信息分布,减少噪音,而语料库往往带有无法消解的歧义和噪音问题.

总体来说,使用新方法获得的《词林》嵌入表示在类比推理任务上具有显著优势,且普遍优于Chen等[34]报道的72.99%的最好效果.

3.3 词义相似度计算任务评估

对于词义相似度计算任务,上述不同来源的词向量在MC30、wordsim297测试集上的相似度评分,以及与人工判定标准比较的皮尔森相关系数r评分,分别如表5和表6所示.

表3 词义合成任务评估:义素合成的词向量与原词向量的余弦相似度

注:表中3~7表示窗口词大小,*分别表示采用相应文献中的词义相似度计算方法进行计算,下同.

表4 类比推理任务评估:推理词向量与标准词向量的余弦相似度

表5 MC30词义相似度计算任务评估:r

其中,扩展句式取αi+1=2αi,扩展句式的相似度阈值ρ同上,训练模型参数同上,维基百科语料训练的模型参数同上.《词林》中包含wordsim297中的277个词对,最后评分以这277个词对为标准,受最低词频限制,维基百科训练结果中仅包括wordsim297中的 277个词对,表6中相应为这277个词对上的得分.

在词义相似度的计算任务上Skip-Gram效果更好,最佳窗口大小是7.义素合成的词向量比原词向量的表现要好,再次证明应用《词林》中的词义合成性可以提高相关任务的性能.加入理性算法的扩展句式后进一步提升了其性能,其中,r最高的是加入了田久乐等[1]提出的相似度计算算法,其义素合成的词向量达到了84.95%,表明理性方法在训练过程中被成功注入,在近义词的嵌入表示中得到了体现.考查初始的理性方法,文献[1-3]中的词义相似度计算方法在MC30上的r分别为49.39%,74.03%和79.24%,在wordsim297上的r分别为35.53%,34.11%和42.22%,新方法获得的《词林》嵌入表示的效果普遍更好,优于传统的知识库理性方法并可能接近《词林》知识表示的能力上限.

和维基百科训练结果相比,在迭代次数等模型参数相同的情况下,新方法获得的《词林》嵌入表示在MC30测试集上超过了维基百科,而在wordsim297上则落后于维基百科.此外,有意思的是,和MC30相比,wordsim297上理性方法计算得到的结果与新方法得到的结果都表现出随迭代次数大致相同的下降趋势,这或许与MC30选词特殊及样本过小等因素有关.

表6 wordsim297词义相似度计算任务:r

总体来说,在词义相似度计算任务上,语料库上的训练结果更加稳定.《词林》嵌入表示在wordsim297上表现不佳,有可能是因为《词林》知识表示与数据本身存在先天的局限性,比如在颗粒度表达问题或者语义分类不合理等.

4 结论及展望

本研究以《词林》为知识本体,提出并展示了基于知识库训练嵌入表示的伪句式构造方法,考察不同训练模型、不同窗口大小在不同伪语料库上的表现,并分别应用于词义合成、类比推理和词义相似度计算等自然语言处理任务上.实验结果表明,新获得的义素向量及词向量资源CiLin2Vec在不同任务上都取得了进展或突破.其中,在词义合成和类比推理任务上表现突出,准确率达到90%以上,显示该方法在应用上的巨大潜力.本研究也将《词林》的CiLin2Vec嵌入表示资源发布在网络上(https:∥github.com/ariaduan/CiLin2Vec),以方便科研和业界验证、使用、推广.

在性质上,该方法有效复用已有的知识库资源,利用句式构造控制向嵌入表示中注入的理性知识,并借鉴已有的计算方法进行预处理,发掘理性知识和计算方法结合的最优方式,这些做法易于理解,有很强的解释性;该方法在训练过程中完全不使用真语料库,基于知识库生成伪语料的方式更加直接、简便,降低了获得嵌入表示的复杂度,极大地缩短了训练周期.

在未来,针对其他各类知识库,希望探究该方法的通用模型与一般特征,考察知识库上训得的词向量与语料库上训得的词向量的联合应用,并由此形成对不同资源的知识表示及数据特点的评价.这些观点和方法,也将支持用于描述汉语语素及构词意义的北京大学《汉语概念词典》的研究与开发.

猜你喜欢
词义语料库句式
满文简单句式之陈述句
“诛”的词义演变及其在古籍中的释义
西夏语“头项”词义考
《语料库翻译文体学》评介
词义辨别小妙招——看图辨词
基于JAVAEE的维吾尔中介语语料库开发与实现
特殊句式
语篇元功能的语料库支撑范式介入
《诗经》词义考辨二则
关心健康状况的问答