单词语义相似性计算综述

2020-02-18 15:16杨晓燕
计算机工程与应用 2020年4期
关键词:相似性语料词典

徐 戈,杨晓燕,汪 涛

闽江学院 计算机与控制工程学院,福州350108

1 引言

自然语言(中文、英文等)中的单词之间有着各种各样的语义关系。其中,单词的语义相似关系是非常重要的一种。通常,单词的语义是否相似主要的判断标准是待考察的两个单词是否可以相互替换。在自然语言处理领域,语义相似性的概念要更加广泛一些。除了同义词、近义词、上下位关系等,语义的相关性(如医生、病人),语义蕴含(如打鼾、睡觉),甚至部分与整体(如汽车、轮胎)也有可能被视为具有一定程度的语义相似性。

单词的语义相似性计算是指人们使用各种语言资源,通过计算机按照某种计算方法,用数值来度量两个单词间的语义相似程度。本文的目的就是针对这些相似性计算方法,通过对各种方法的概括介绍,了解其本质特征、优缺点、适用场景以及发展的必然性。

传统上,单词语义相似性的计算方法主要有两类:一类是基于知识的方法;另一类是基于语料的方法。随着两类方法的发展,互相融合是一个必然的选择。近些年,研究人员开始关注单词内部,利用词根词缀、字符串、部首甚至笔画等信息提升单词语义相似性的计算性能。

单词的语义相似性计算在自然语言处理中是基础性工作。由于单词在语言结构中处于较为底层的位置,通常人们先研究单词相似性计算,进而推广到句子、段落乃至整篇文章。

单词的语义相似性计算在自然语言处理中能够支撑各种类型的任务。比如,在机器翻译中,单词的相似性计算可以用于提升翻译质量。在信息检索中,单词的相似性计算可以反映出检索结果与检索词的匹配程度。在自动问答中,单词的相似性计算可以支撑问句的匹配,命中正确的问答对。在文本分类、聚类中,单词的相似性计算可以优化文本的聚集,从而产生更好的分类、聚类效果。

本文大致按照方法类型以及时间顺序两个维度,对已有的单词语义相似性计算方法进行介绍。

2 基于知识的方法

2.1 基于词典的方法

最典型的知识就是各种语义词典,如WordNet(http://wordnet.princeton.edu/)、知网(HowNet,http://www.keenage.com/)、同义词词林(http://ir.hit.edu.cn/demo/ltp/Sharing_Plan.htm)等。人们利用词典中单词之间的关系,量化它们的语义距离,从而给出语义相似性。

2.1.1 英文词典

Rada等[1]提出利用WordNet中概念间的语义距离来计算概念间单词的语义相似性。Resnik等[2]在Rada方法的基础上,综合考虑概念共有祖先所拥有的信息量,提出了改进算法。Wu和Palmer[3]则采用WordNet的上下位关系,利用概念及其最近邻共有祖先的深度计算语义相似性。Jiang和Conrath[4]通过度量概念及其最近邻共有祖先的信息量计算概念相似性。Lin[5]也利用了概念信息量,但与Jiang和Conrath所提方法的区别是使用了不同的概念相似性计算公式。类似的工作还有Lord等[6]提出的方法。通常,该类方法主要利用词典中的语义相似和上下位关系,因此更多的是用来计算语义相似性。Yang和Powers[7]提出了一种基于本体中关系边数的语义相似性算法,使用了部分与整体的关系。

2.1.2 中文词典

在中文方面,刘群与李素建[8]提出了一种基于知网(HowNet)语义相似性的计算方法,假定整体的相似性等于部分相似性的加权平均,对两个义原的相似性,根据上下位关系得到语义距离并转换成相似性。夏天[9]提出了通过概念切分解决知网中未登录词的语义相似性计算。田久乐与赵蔚[10]为解决词语在语义网自适应学习系统中相似性计算不清的问题,以同义词词林为基础,充分分析并利用了同义词词林的编码及结构特点,同时考虑了词语的相似性,提出相关算法。

2.1.3 基于属性

有一类基于词典的方法可以被称为基于属性的方法。Tversky[11]提出的方法是其中的典型代表。该方法没有考虑概念的语义关系,而是利用相应本体的属性集信息来计算两个概念之间的语义关系。Banerjee和Pedersen[12]提出了基于词典中注释(gloss)的方法,其思想是概念相似性通过两个概念在本体中的注释重叠程度来获得。通过在注释集合中提取共同属性或判断属性的相似程度来判断两个概念的语义相似程度,也属于基于属性的方法。类似的工作还包括文献[13-14]。传统的基于词条编纂的词典,也常采用这种方法提供相似性的计算。

2.2 基于百科类知识的方法

随着互联网的不断发展,出现了各种百科类的知识库,其中以Wikipedia为代表。与WordNet比较,Wikipedia覆盖的范围更加广泛,知识描述更加全面,信息内容更新速度更加迅速。Wikipedia中对词条进行解释,并对相关的词条给出链接关系,这相当于提供了高质量的语义关系标注语料。Strube和Ponzetto[15]提出了名叫WikiRelate的方法,该方法利用Wikipedia的文档内容与结构代替WordNet的概念层次结构,进行语义相似性的计算。Gabrilovich和Markovitch[16]提出了类似于信息检索中向量空间模型的ESA(Explicit Semantic Analysis)方法,以Wikipedia中的所有文档为向量元素构造词汇的属性向量,通过比较词汇向量之间的相似性来判断词汇的相似性。Milne[17]提出了一种只利用Wikipedia文档之间的链接信息,基于向量模型计算语义相似性的方法。在中文方面,詹志建等[18]提出了一种新的基于百度百科的词语相似性计算方法,通过分析百度百科词条信息,从表征词条的解释内容方面综合分析词条相似性,并定义了词条间的相似性计算公式,通过计算部分之间的相似性得到整体的相似性。

2.3 基于知识方法的小结

除了以上工作,还有许多有意义的探索,它们采用了各种各样的语言知识资源。比如,Eger和Sejane[19]利用双语词典进行相似性计算;张瑾等[20]结合《中图法》内容和结构体系,利用语义逻辑关系等手段进行语义相似性计算。其他基于知识的单词语义相似性计算工作不再赘述。

基于知识的方法的关键在于从知识库所描述的关系和属性中推导出单词之间的语义相似性,这会导致一些严重的问题:首先,现有的知识库大都是将“单词”作为最小的描述单元,而单词又是开放的,总会有大量的单词无法收入知识库,这些未收录的“未知”词便成为相似计算的障碍。其次,人们在设计知识库时,不一定很好地考虑词与词之间的相似性计算问题,即使有考虑,实际构建时也难以把控。比如,在WordNet中,有些分支的层次非常密集(粒度细),有些分支相对稀疏(粒度大),如果按照统一的度量标准,就会出现偏差。

3 基于语料库的方法

该类方法认为,人们能够不依赖语言知识,直接从语料中挖掘出单词的语义相似性。

3.1 基于共现的方法

有一类工作是基于单词和单词的共现(不考虑词序)的频率统计,主要用来计算单词的相关性。这类方法往往可以直接使用搜索引擎,将其看成是海量语料,返回两个单词共现的频率。Turney[21]提出了基于搜索引擎返回的搜索页面数,利用点互信息计算语义相似性的方法,该方法要求待计算语义相似性的两个单词出现在大小为10的窗口内。Higgins[22]提出的方法的基本思路与Turney[21]相似,也采用Alta Vista搜索引擎,但是该方法限制单词的共现必须是单词相邻,减少了噪声的干扰,代价是降低了方法的适用性。Bollegala等[23]提出Web-PMI(Pointwise Mutual Information)算法,除了利用搜索引擎返回搜索页面的个数外,该方法还从返回的文本片段中提取句法模式来计算词语的相似性,使得相似性的计算质量大大提升。Cilibrasi和Vitanyi[24]则利用Google搜索引擎进行单词语义相似性的计算。

Deerwester等[25]提出的隐性语义索引(Latent Semantic Indexing,LSI)不仅可以用于文档的相似性计算,也可以对单词的语义相似性进行计算。LSI中降维后的语义空间就是之后流行的主题模型(Topic Model)中主题概念的雏形。LSI之后的PLSI(Probabilistic Latent Semantic Indexing)模型[26]将LSI进行概率化,随后出现了LDA(Latent Dirichlet Allocation)模型[27],至此主题模型形成,并引出了一系列的相关工作。

3.2 基于上下文的方法

与前面基于单词共现的方法不同,基于上下文的方法,假设相似的单词具有相似的上下文[28-29]。该类方法的基本思路是为单词构建特征向量,特征则从上下文(可以是经过句法分析的结果)中抽取,将计算单词语义相似性转换成计算两个特征向量的距离。

Salton和Buckley[30]将特征向量中的元素进行TFIDF(Term Frequency-Inverse Document Frequency)修正;Lee[31]采用相关熵模型进行计算,Lin[32]采用句法分析后的共现特征来构造单词的表示向量,再使用基于信息理论的模型进行相似性计算。Lin[33]基于一个6.4亿词的英文语料进行依存句法分析,将上下文语境表示成有依存关系的三元组,而后基于互信息提出一种算法来计算词语之间的相似性。Dagan等[34]提出概率模型来计算单词间的语义相似性,用一个词周围的相似词来表达该单词。Curran[35]将多种上下文表征方式进行混合,包括句法分析、窗口特征,实验结果表明,集成方法显著优于单个方法。Weeds等[36]基于BNC语料,采用9种相似性算法,所得相似性结果差别很大,因而指出面对不同任务时应选择合适的计算方法。Hagiwara等[37]深入研究基于上下文方法中特征的选择,选取依存关系、窗口词语、句子共现三类特征。依存关系特征和窗口词语特征效果优于句子共现特征,三者的结合超越任何单一的特征。Geffet和Dagan[38]采用自举的方法来计算特征的权值,认为相似词共有的特征是那个意义最好的表征,其权值应该被加大。石静等[39]对上下文特征的选择、相似性的计算公式、特征的权重方案等做了对比研究,结果显示用PMI来进行特征权重设置能够取得较好效果。类似的工作还有许多,不再赘述。

3.3 基于向量嵌入的方法

随着大规模语料和以深度学习为代表的计算方法的出现,在单词语义相似性计算领域,基于上下文的特征向量构造方法逐渐被单词的向量嵌入方法所取代,成为基于大规模语料方法的主流。

单词的向量嵌入,把单词表达成一个固定长度的向量,该长度可取几百,远远小于语料的单词空间规模。把单词表达成固定向量后,就可以采用简单的向量距离来求出单词的语义相似性。该方法与之前介绍的LSI、PLSI、LDA等方法有相似之处,都是对大规模语料训练出单词的低维向量表达,区别在于使用的信息不同,训练的方法也不同。比如,LDA采用的是单词共现信息,Word2Vec侧重上下文信息,LDA的训练通常采用Gibbs采样算法,而Word2Vec是基于神经网络的参数学习。

Bengio等[40]提出了神经网络概率语言模型(Neural Network Language Model,NNLM),加入隐层使得神经网络可表达的函数空间变大,可使用树状加速方法加速,但隐层的加入使得参数变多,训练效率一般。Mikolov等[41]发布了他们在Google Search的研究工作Word2Vec,引起了工业界和学术界的广泛关注。该模型计算简单,并在一些有趣的任务上取得了很好效果,比如单词类比任务(Tokyo vs.Japan=?vs.France)。Word2Vec中有两种上下文设置模式Skip-Gram和CBow,前者倾向于语义相似性,而后者倾向于语义相关性。Levy与Goldberg[42]提出,Word2Vec中基于负采样的Skip-Gram模型,是隐含的word-context矩阵的分解,矩阵中的元素是单词和上下文对(pair)的互信息,仅差一个全局常量。Pennington等[43]提出了GloVe模型,融合LSA等算法思想,利用全局的单词共现提升单词向量的学习效果。Santus等[44]提出了基于排序的相似性度量,相比基于向量余弦的计算方法,该方法在异常点监测任务上表现更优秀。最近几年,Word2Vec相关的单词向量嵌入工作成为研究热点。

3.4 基于语料方法的缺点

基于语料的方法通过单词所在上下文的统计信息来表示该词,这存在两个问题:首先,大量的词具有多义性,而多义词的每一次具体出现究竟呈现什么义项并不容易判断。其次,语料库方法的核心思想是统计,当统计量不够时,就会出现偏差,即便在大数据时代容易获得大量的文本数据,对很多词也难以保证足够的统计量。

4 基于融合的方法

人们一直在尝试将基于知识的方法和基于语料的方法进行融合。Li等[45]研究了基于多个信息源的单词语义相似性计算,其中包括语义词典的结构化语义关系和语料库。该方法将单词在树中最短路径和密度信息非线性融合来计算单词语义相似性,结果优于传统方法。Agirre等[46]对基于WordNet的方法和基于分布式的单词相似性计算进行分析,找出各自的优缺点,并给出了组合方案。Rothe与Schütze[47]提出了一种不同的思路:不是从语料中做向量嵌入,而是用已有的语义相似关系对同义词集(Synset)和单词进行向量嵌入。这些研究对词之间的相似性计算起到了很好的作用,彼此之间也有一定的补充,但还远远不够。Zhang等[48]提出了使用知网(HowNet)和搜索引擎来共同计算单词语义相似性;Zhou等[49]提出使用无标注语料和词表来对多义词的语义相似性进行计算;Sugathadasa等[50]提出了利用Word2Vec和词表来提升特定领域的单词语义相似性计算性能;Pawar等[51]提出了使用词表数据库和语料的方法来计算单词和句子的相似性,在Pearson相关系数上表现良好。

以上介绍的两类方法以及两者的融合,都可以看作利用了单词的外部信息。对于词典而言,传统词典利用词条之间关系(通过属性或者注解),本体词典利用单词的上下位、相似、相反、整体部分关系,同义词词典利用单词之间的相似性和层次关系。对于语料而言,则是单词共现关系,若考虑词序就是上下文关系。这些工作的本质就是如何把外部关系转换成语义相似性。

5 单词语义相似性计算的新趋势

单词的语义相似性研究在自然语言处理领域一直受到关注,但是绝大部分的工作集中在使用外部信息(语料中的共现、词典的语义关系等)来计算单词的语义相似性。

5.1 传统主流方法的不足之处

Wu等[52]在NLPCC-ICCPOL2016发布的单词语义相似性计算评测中(总共500对单词),排名靠前的几支队伍都采用了基于语料分布或词典的方法。然而,对其中典型方法进行实验的结果表明,这些方法仍然存在许多问题。

对于基于词典的方法,在500对单词中,知网(HowNet)有118对未覆盖,同义词词林有46对未覆盖。这反映出该类方法受未登录词的影响较大,如“驴友”“备胎”“闺蜜”等未收录。此外,相似性不够稳定,有时过高,有时过低。相似性计算公式依赖人的主观经验。

对于基于语料的方法(Word2Vec模型,2G语料,最低频率5),有12对没有覆盖。相比基于词典的方法,说明了基于语料的方法能够捕捉更多的单词。当然,该方法也存在一些问题:(1)频率低于5的词无法进行相似性计算。(2)频率超过5的低频词若无法获得充分的上下文,也会出现计算结果不准确。(3)超高频词语义分散(多义性)较为严重。

基于词典的方法,由于单词覆盖率较低且得分波动较大,其总体性能已经落后Word2Vec(2G语料)较多。对于Word2Vec方法,它会忽略低于预设频率的单词,无法获得其向量表示,也就无法进行相似性计算。即便是高于预设频率的单词,也存在着计算不够合理的地方。

在NLPCC-ICCPOL2016单词相似性评测任务发布的500对单词中,有一些单词对(Word Pair)通过Word2Vec方法计算出来的相似性与参考答案差异较大,表1列出了其中一些例子。Word1、Word2、Freq1和Freq2分别表示第一个单词、第二个单词、第一个单词在语料中频率、第二个单词在语料中频率。

表1 与参考答案差异较大的单词对

如果考虑汉字等内部信息,可以对表1中的一些问题进行修正甚至解决。以表1中的“拖后腿”和“拉后腿”为例,考虑“拖后腿”与“拉后腿”都是动宾结构,且宾语相同,由于“拖”与“拉”语义相似,则能推出“拖后腿”与“拉后腿”具有较强语义相似性。“高峰”和“山巅”计算语义相似性时,前者为“形容词”+“名词”的偏正结构,后者为“名词”+“名词”的偏正结构。因此语义的重心应该是“峰”和“巅”,而“巅峰”中两个汉字具有语义相似性,从而最终能推出“高峰”和“山巅”具有较高语义相似性。表1中其他带*号的行,或多或少都能通过单词的内部结构解析和汉字的语义相似性进行修正。这说明,使用单词内部信息的确可以作为一种补充,提高单词语义相似性计算的质量。

5.2 利用单词内部信息的语义相似性计算

近几年来,已出现了利用单词内部信息辅助进行单词相似性计算的工作。比如,一些研究者使用汉字甚至部首来辅助中文单词的向量嵌入,以提高语义相似性计算的质量。对于英文单词的向量嵌入,词根词缀、字符序列等都被用于提高单词语义相似性计算的准确度。

Jin等[53]提出了利用共同的汉字个数,或者共同的部首个数进行两个单词相似性的修正。Chen等[54]提出了同时对中文单词和汉字进行向量嵌入,考虑了基于位置和基于聚类的两种汉字嵌入方式。Sun等[55]用部首来提升汉字的向量嵌入质量,不过其中并未对部首进行细分。考虑到同一个部首的汉字集存在较大差异,该方法仍然可能引入一定的噪声。Hang等[56]和Tao等[57]提出了使用汉字笔画,甚至象形文字信息对中文进行向量嵌入。

Botha等[58]提出了一个将词根词缀等成分集成到基于向量的概率语言模型中。Bojanowski等[59]提出了著名的fastText模型。对于单词的向量嵌入,该模型考虑所有该单词的ngram字符序列。以单词“where”为例,n=3的情况下,其子串分别为,模型对这些子串分别进行向量嵌入,然后再与“where”单词本身的向量嵌入进行加权平均,得到“where”单词最终的向量嵌入。

除了英语和汉语,其他语言利用单词内部信息提升性能的工作也已经出现。比如Lankinen等[60]针对芬兰语,利用单词中的字符串作为输入和输出来对单词进行向量嵌入。Ajees等[61]利用类似的单词内部信息提升印度语的单词语义相似性计算性能。

当然,使用单词内部信息提升单词语义相似性计算性能也存在着一些问题,比如对单词内部结构没有进行深入分析,内部成分(汉字串、字符串、笔画串等)向量嵌入时噪声较大。相关的工作还有文献[62-63]。

6 结束语

单词的语义相似性计算在自然语言处理领域有着广泛的应用。例如,在信息检索中,要通过“电脑”查到“计算机”和“笔记本”,就要有这些词之间的语义相似性作为基础;在问答系统中,需要匹配用户所提的问题与系统中存储的问题,句子相似性计算的基础就是词汇间的相似性。

然而,目前无论是基于知识的方法,还是基于语料库的方法,都存在很多问题,尤其是覆盖性问题。近几年,越来越多的研究工作从单词的内部着手,利用单词的内部结构,尝试从细粒度到粗粒度的语义推导,最终计算出单词间的语义相似性。

从单词语义相似性计算的发展来看,基于知识的方法和基于语料的方法几乎交织在一起。经历了多年的同步发展,两类方法的融合也是必经阶段。近些年,研究者从单词外部信息转向单词内部信息,如何更有效利用单词内部信息以及如何将内外信息共同用于单词语义相似性计算是大势所趋。

猜你喜欢
相似性语料词典
一类上三角算子矩阵的相似性与酉相似性
基于归一化点向互信息的低资源平行语料过滤方法*
浅析当代中西方绘画的相似性
米兰·昆德拉的A-Z词典(节选)
米沃什词典
词典引发的政治辩论由来已久 精读
低渗透黏土中氯离子弥散作用离心模拟相似性
《苗防备览》中的湘西语料
国内外语用学实证研究比较:语料类型与收集方法
漫画词典