杨延娇,赵国涛,王丕栋
西北师范大学 计算机科学与工程学院,兰州730070
句子相似度计算是自然语言处理中一项重要的基础性研究,相关研究成果可以广泛应用到许多方面。在智能问答系统中,使用句子相似度从原始数据库中找出与目标句子最相似的句子[1];在机器翻译中,使用句子相似度从实例集中找出与待翻译语句最相似的源语句[2];在文本自动分类中,使用句子相似度作为判别构成文本的句子集归类的主要标准[3];在文本检测和文本查重中,句子相似度计算作为核心标准,决定了文本检测和查重的准确率[4]。因此,句子相似度是一项重要的计算标准,其计算效率和准确率可影响到许多相关系统的运行效率。
目前国外成熟的句子相似度计算方法有简单匹配、最长公共子序列(Longest Common Length,LCS)、莱文斯坦距离(Levenshtein Distance)、Jaccard等[5]。不同于印欧语言以单词为语义的最小单位,中文因为其构词表意的灵活性,使得上述方法应用于中文句子相似度计算时,只考虑到了词语的字面信息与句子相互转化的次数等特征,而忽略了词语的语义信息和操作可能引起的语义差异,导致此类方法对中文句子相似度计算准确率较低。
在此基础上,Ruan等[6]使用词嵌入技术,结合Word2vec与神经网络来计算句子相似度,这种方法考虑到了句子形态信息,但未考虑到句子语义信息。Gokul等[7]使用句子中关键词的同义词,结合余弦相似度在喜马拉雅语中查找相似短语,取得了不错的效果,但该方法适用于特定语言,通用性小。李晓等[8]使用哈尔滨工业大学LTP平台,结合Word2vec模型提取句法结构来计算句子的语义相似度,提高了相似度计算的准确率。翟社平等[9]提出一种融合多特征的句子相似度计算方法,分别提取词性、词序及句长特征计算句子相似度,提高了句子相似度计算的准确率,但该方法计算过程依靠本体词语库,若本体词语库很小则方法计算结果会出现偏差。陈俊月等[10]结合词向量技术对传统莱文斯坦距离方法和Jaccard方法进行了改进,提出一种多特征组合的句子相似度算法,提升了句子相似度计算的精度和效率。邓涵等[11]在词语相似度的基础上分析句子的句法结构和依存关系,提取出句子中的“主谓介宾”结构,并结合修饰词分别计算各部分相似度。实验证明该方法有不错的准确率与F值,但该方法在提取“主谓介宾”的同时忽略了其他句子成分,遗漏了许多重要信息。纪明宇等[12]通过词向量和神经网络提取词语级与句子级的语义特征,在金融领域智能客服句子相似度计算上取得了不错的效果。
综上所述,现有句子相似度计算方法计算句中关键词以及关键词附加部分相似度,或者直接比较组成句子词语的相似度,以之代表整个句子的相似度,容易造成信息遗漏问题,且无法从语句表意内容方面综合计算,为此本文提出一种基于语义与情感的句子相似度计算方法,从更细粒度方面综合比较句子中各个语义独立成分以及各个语义独立成分组成部分,结合情感与句型因子计算出一种综合的句子相似度值。
相似度是两个事物之间的相似程度,句子是由词或词组按照一定的语法结构组成的表达一个完整意思的语言单位,句子作为一个整体,其相似性建立在部分相似性的基础上。起初的汉语句子相似度计算方法是基于字的,后来出现基于词语的句子相似度计算方法,词语类似于英文中的单词,实验证明,基于词语的句子相似度计算方法在准确率上远高于基于字的句子相似度计算方法。
传统的句子相似度计算方法基于词语,以两句中词语的相似度表示两句相似度,基于词语的相似度计算方法通过链式最大匹配法计算句子相似度,方法过程简单,准确率低。之后学者们在此基础上加入了词序词长等影响因子,取得了一定效果,但这些方法未考虑到词语在句中的语义语法特性,因此方法的效率受到限制。
文献[8]与文献[11]使用哈工大LTP平台对句子进行句法依存分析,以得到句子主谓宾部分,通过计算主谓宾部分相似度得到两句相似度。这两种方法考虑到了句中词语的语法特征,相较于上述仅基于词语的方法效率有所提升,但仅仅通过依存关系并不能准确得到词语在句中的语义定位,且只提取主谓宾部分计算句子相似度容易遗漏其他重要成分,造成计算结果的偏差。
因中英语言的差异性,适用于英文单词体系的句子相似度算法在移植到中文时,未考虑到中文句子灵活多变的表达特点。以上两种方法虽然在依存关系上对句子进行句法结构分析,但还是基于词语的句子相似度计算方法,句子相似度计算仍停留在词语阶段。
考虑到中文语言的特性,相较于基于词语的句子相似度计算方法而言,基于句意即基于理解的句子相似度计算方法具有更强的合理性与可解释性。本文方法从表意层面计算两句之间的相似度,在句法依存关系分析的基础上对句子进行语义角色标注,使用语义角色标注结果将句子划分为语义上独立的若干部分,提取出句中动作发起者(广义主语)、谓语、动作目标(广义宾语)、动作效果、时间状语、地点状语、原因状语等语义独立成分,这些语义上的独立成分囊括句中所有词语,没有遗漏任何信息,保证了本文方法计算结果的可靠性。
得到两句语义独立成分后,本文方法根据语义独立成分的标签对各语义独立成分赋予相似度权重系数,然后计算两句中相同标签语义独立成分(相同性质的完整表意部分)相似度,计算过程中使用依存关系判别核心词与修饰词,参照词法关系赋予各部分权重系数,之后加权计算语义独立成分相似度,从而得到句子整体相似度。最后使用情感值字典定量计算两句的情感总值,在句子整体相似度的基础上对情感差值大于阈值的两句计算情感减益,对符号不同的高相似句子计算句式减益得到句子最终相似度。本文方法在表意层面上综合情感与句式因子,使计算结果更加准确。本文方法句子整体相似度计算公式如式(1)所示:
其中,S1、S2表示第一句与第二句;Pi为句子语义独立成分,例如动作发起者、谓语、动作目标、动作效果、时间地点状语;Sim(S1Pi,S2Pi)为两句中此语义独立成分的相似度;αS1Pi、αS2Pi为第一、二句此语义独立部分的全局权重系数(当任一句此部分为空时,值为0);min()为取最小值方法。
句子相似度计算依赖于词语相似度计算,本文方法使用哈工大《同义词词林》扩展版[13]计算词语相似度。《同义词词林》是梅家驹等人[14]编撰的可计算汉语词库,用于同义词及近义词的归类,经哈尔滨工业大学社会计算与信息检索中心扩展后,包含7万多词语,9万多概念,这些概念被分为12个大类、95个中类、1 428个小类、4 026个词群以及17 797个原子词群[15],基本上涵盖了日常生活中使用的大部分词语。《同义词词林》扩展版中词语具体编码示例如表1所示。
表1 同义词词林编码示例Table 1 SynonymCilin coding example
文献[16]提取词林词语编码的最大公共块,根据最大公共块的长度计算词语相似度,计算公式如式(2)所示:
其中,coeff是不同层的影响系数,公共块的长度越大,coeff值越高;n是词语所在分支的分支数,即分支所在父节点的分支总数;k是两个词语编码对应分支的距离;degree是内置值,取180。
文献[17]提出一种以词语距离d为主要因素,以分支节点数n与分支间隔数k作为调节参数的词林词语相似度计算方法,计算公式如式(3)所示:
文献[17]将同义词词林编码分为五层树结构,层次从高到底依次为大类、中类、小类、词群、原子词群,五层树连接边w1、w2、w3、w4的权重分别取0.5、1.0、2.5、2.5。式(3)中Dis()为词语在树状结构中的距离函数,函数值等于词语对的连接路径中各边的权重之和,取值为2w1、2(w1+w2)、2(w1+w2+w3)、2(w1+w2+w3+w4)。
文献[18]在《同义词词林》扩展版的基础上进行本体改造,提出一种基于信息内容的词林词语相似度计算方法,通过计算两个概念及其父节点的信息内容得到词语相似度,计算公式如式(4)所示:
其中,MaxDiff表示差异上界;MinDiff表示差异下界;Dis(C1,C2)表示词语C1与C2的差异值。
以上三种词语相似度计算方法各有侧重,各方法在计算某些词语时会因为方法限制出现相似度过小的现象。而本文方法计算过程中多次进行乘法操作,为了保证计算结果的可靠性,使用上述词语相似度计算方法结果最大值作为词语相似度值,计算公式如式(5)所示:
哈尔滨工业大学语言技术平台(Language Technology Platform,LTP)提供了包括分词、词性标记、依存关系分析、语义角色标记等一系列中文信息处理功能[19]。
本文使用哈工大LTP平台作为句子结构分析工具,通过哈工大LTP平台对句子进行预处理,包括分词、词性标记、句法依存关系分析、语义角色标注,并将分词结果与其对应的词性标记、句法依存标记共列为一项,将语义角色标注结果单独列出。
哈工大LTP平台语义角色标注结果由语义角色标签和分词区间组成,本文方法根据语义角色标签和分词区间将句子划分为语义上的独立成分。LTP平台语义角色标签及其意义如表2所示。
表2 语义角色标签及其意义Table 2 Semantic role tags and their meaning
例句“这本好看的书什么时候上架?”经过哈工大LTP平台预处理后,得到词项列表:[(这,r,2,ATT,1),(本,q,5,ATT,2),(好看,a,5,ATT,3),(的,u,3,RAD,4),(书,n,8,SBV,5),(什么,r,7,ATT,6),(时候,n,8,ADV,7),(上架,v,0,HED,8),(?,wp,8,WP,9)]与语义角色标注结果[(A1,1,5),(TMP,6,7)]。
词项列表中词项为元组,元组中第一项为分词,第二项为分词词性,第三项为句法依存关系中分词指向位置序号,第四项为句法依存标记,第五项为此项在句子中的位置序号。
以词项(好看,a,5,ATT,3)为例,分词词语为“好看”,词性为“a”即形容词,依存关系指向为5即修饰句中位置序号为5的词项(书,n,8,SBV,5),依存标记“ATT”说明此词语为形容词性修饰部分修饰依存关系指向词语,位置序号为3说明此词语为句中第三个词。需要注意的是,LTP句法依存标记中标记为“HED”的部分指向0项,此项为句子虚拟根节点,并无实际意义。
语义角色标记结果中第一项为此区间的标签意义,二、三项为此区间的起始位置与结束位置。如(A1,1,5)中A1表示此项为动作目标,1为此区间在句中的起始位置。5为此区间在句中的结束位置,例句中“这本好看的书”为A1区间内容,作为“上架”的动作目标,是语义上完整独立部分。得到语义独立成分后,根据语义角色标签给句中语义独立成分分配权重系数,如式(6)所示。
其中,α1,α2,…,αn表示n个语义独立成分权重系数,和为1。
在汉语言中,词法、形态与句法之间并没有明确的界限[20],词法结构和句法结构具有同一性。文献[21]整理了各类型构词结构词语贡献度,鉴于词法结构与句法结构的同一性,本文方法使用文献[21]中相关系数参照语义角色标签对句子中各语义独立成分赋予全局相似度权重系数,其中A0视为主语、A1视为宾语、A2视为补语、TMP与LOC等视为定语或状语。表3为文献[21]构词结构贡献度表。
表3 构词结构贡献度Table 3 Contribution of word formation
语义独立成分中A0区间为动作发起者,A1区间为动作目标,A2区间为动作效果,其他区间意义如表2所示。在简单的主谓宾结构句子中,A0为句法依存标记为“SBV”的词语(主语),A1为句法依存标记为“VOB”的词语(宾语)。在带有从句的复杂句子结构中,A0与A1为名词性短语,并不仅仅是句法依存标记中“SBV”与“VOB”词语,且在A0区间中可能出现句法依存标记为“VOB”的词语,在A1区间中可能出现句法依存标记为“SBV”的词语。综上所述,本文认为A0部分为句子广义主语(动作发起者),A1部分为句子广义宾语(动作目标)。
本文将句法依存标记为“HED”的词语作为单独的HED部分即谓语部分,除单名词组成句子外,所有句子都有谓语部分,此部分不出现在语义角色标注结果中,由本文方法单独标识。
因此当语义角色标注结果仅为A0时,说明句子是主谓结构,参考表3中主谓结构相关系数,对A0与HED部分分别赋予权重系数0.4、0.6。
当出现两个或以上语义角色标签时,各语义独立成分权重系数赋值方法如下:当语义角色标签数目为2时,HED部分权重系数为0.4,当语义角色标签数目大于2时,HED部分权重系数为0.3,其他部分中名词性部分A0与A1占1.5个最低优先级,其余部分占1个最低优先级(实词性部分相较于虚词性部分具有更大的表意属性)。如式(6)所示,各语义独立成分权重系数之和为1,除HED部分外其他部分权重系数总和为1-αHED。首先使用(1-αHED)/n(n为其他部分所占最低优先级数目之和)计算出每个最低优先级单位所占权重系数,然后乘于独立成分所占最低优先级数得到独立成分的全局权重系数。
例如当语义角色标记结果为A0、A1时,说明句子为主谓宾结构,参考表3相关系数和上述权重系数赋值方法,对A0、HED与A1部分分别赋予权值0.3、0.4、0.3,其他情况时分别参考表3相关系数赋值。
得到各语义独立成分权重系数之后,本文方法将两句中相同标签语义独立成分进行比较。例如用第一句A0部分比较第二句A0部分,即比较两句动作发起者(广义主语)的相似度。在语义独立成分内部比较时,根据语义独立成分标签找出独立成分的核心词语,在A0和A1等名词性语义独立成分中,句法依存标记为“SBV”与“VOB”的词语为核心词语,在TMP等状语定语性语义独立成分中,句法依存标记为“ADV”的词语为核心词语。
找到核心词语后,根据依存关系找出指向核心词语的修饰词,并将修饰词按词性加入对应修饰词表。例如将词性为“a”的词语加入形容词修饰词表,将词性为“q”的词语加入量词修饰词表,将词性为“n”的词语加入名词修饰词表,并根据修饰词表种类分配修饰词表与核心词语的权重系数,权重系数分配参考表3。
独立成分中修饰词种类越多,核心词语权重越小,没有任何修饰词时,核心词语权重为1.0。当修饰词表只有一种成分时,查表3得修饰词与核心词语权重系数。例如当修饰词表只有形容词表时,修饰词与核心词语形成定中结构,查表3得形容词与核心词语权重系数分别为0.3、0.7。当修饰词表有多种成分时,核心词权重系数为0.5,形容词表与名词表占1.5个最低优先级,其余词表占1个最低优先级,计算方法如语义独立成分权重系数计算方法。
词表相似度为表中词语相似度,实验发现,绝大多数句子中同一类型修饰词语为0或1个,极少出现两个及两个以上同一类型修饰词语。为了简化计算,鉴于汉语重心后移现象,逆序选择两句同类型修饰词表中第一个词语(后置位词语)计算词语相似度得到修饰词表相似度。
式(7)为A0与A1部分相似度的计算公式,以A0部分为例:
其中,S1A0HED、S2A0HED为第一句与第二句A0部分核心词语;SimATT(S1A0ATT,S2A0ATT)为两句A0部分形容词表相似度;Simq(S1A0q,S2A0q)表示两句A0部分量词表相似度;以α开头的为对应部分的权重系数。
式(7)省略的部分有名词词表、代词词表等,此类词语最多只有一种黏着性修饰部分(修饰此词语的部分),参照表3相关系数对词语与其黏着性修饰部分赋予权重系数,加权计算得到词表相似度。
修饰词中,形容词性修饰词可能会有副词或者前附加词作为黏着部分。例如在短语“非常快乐的”中,副词“非常”修饰“快乐”,“的”作为快乐的前附加部分修饰“快乐”(前附加是双词组合结构,核心词在前,附加词在后,后附加同理),参考表3分别对副词“非常”、形容词“可爱”、前附加词“的”赋予0.3、0.6、0.1的权重系数。式(8)为形容词性修饰词相似度计算方法。
其中,A1、A2为形容词及其黏着部分;WS()为本文词语相似度计算方法;A1ATT、A2ATT为形容词本身;A1ADV、A2ADV为修饰形容词的副词;A1RAD、A2RAD为修饰形容词的前附加部分;以α开头的为对应部分权重系数。
计算HED部分相似度,即谓语部分相似度时,需要考虑到语义角色标注结果中的ADV部分,此部分为谓语副词,用于修饰句子的HED部分(句法依存标记为“HED”的词语)。本文方法并未将ADV部分当作一个语义独立成分看待,而是将其加入到HED部分的计算中。本文使用知网总结的否定词表判断ADV部分中的否定词,使用知网总结的程度词表判断ADV部分中的程度词,在此基础上参照文献[11]中相关系数对程度副词赋予程度系数,例如“极其”类系数为1.4,“欠”类系数为0.4。
本文方法设置一个谓语系数λ,初始化为1,当谓语部分出现否定副词时,λ=-λ,当出现程度副词时,λ=κλ,κ为程度系数。这种方法解决了双重否定以及多重否定句子的相似度计算问题。HED部分相似度计算公式如式(9)所示:
计算其他语义独立成分例如TMP(时间状语)相似度时,本文方法依照两句语义独立成分的词语数目,对满足条件的部分使用缩略词语相似度计算方法。实验发现,在许多时间地点等定语、状语性语义独立成分中,常有缩略词语出现,如缩略词语“明晚”与短语“明天晚上”意义完全相同,表达却不同,使用普通的计算方法容易得到极小的相似度值,本文针对此类特征设计了缩略词语相似度计算方法。特别是两部分出现一二结构时(一部分只含一个词语,另一部分包含两个词语),方法取唯一词语的前一个字与另一部分中第一个词语计算相似度乘前语贡献系数0.4,取唯一词语后一个字与另一部分中第二个词语计算相似度乘后语贡献系数0.6,相加得到缩略词语与短语的相似度。
本文词语相似度计算方法使用《同义词词林》扩展版,在词的编码中,单字总是排在相关词语的原子词群中,非常有利于缩略词与短语的相似度计算,保证了缩略词语相似度计算方法的可行性。
将上述各部分语义独立成分计算公式代入式(1),得到句子整体相似度具体计算公式,如式(10)所示:
式(10)省略的语义独立成分相似度计算方法较为简单,省略部分无复杂的构造,一般只由一至两个词语构成,计算词语相似度得到语义独立成分相似度。
由式(10)可知,本文方法将句子分成语义上的独立成分,加权计算语义独立成分相似度得到句子整体相似度,即使两句组成不一致,仍能计算出一种合理的相似度值。本文方法通过灵活赋值的方式增加了句子相似度计算的鲁棒性。
在上一节得到句子整体相似度之后,还需对句子进行情感分析,进一步提高句子相似度计算的准确率。在情感计算方面,文献[11]使用知网褒贬义词典提取句中定中或状中关系形容词,比较两句形容词褒贬性是否相同,以此粗粒度地判断两句是否为相同情感指向(同褒或同贬),对情感进行定性计算。而在现实世界中,情感除了有褒贬之分,亦有强度之别,“喜”“大喜”“狂喜”同为喜悦,表意程度上大有不同,通过定性计算难以区分情感程度。
本文使用BosonNLP情感值词典[22]对句中词语进行定量情感计算。BosonNLP情感词典是从大规模网络语料库中自动构建的情感极性词典,包括114 767个词语及其情感值,基本囊括了所有规范用语与非规范用语,词典中褒义词词性为正,贬义词词性为负,其值随词语褒贬义程度强弱而变化,取值范围为-6.5~+6.5。
因为动词与名词也有强烈的情感趋向,所以本文方法不仅计算句子中形容词的情感值,还计算句子中名词与动词的情感值。
句子是表达情感的表意结构,在一个完整的句子中,极少出现褒贬义词同时存在的情况,句子整体情感趋于稳定,因此本文计算句子的情感总值衡量句子的情感倾向。直接使用情感字典计算句子情感总值会因词语数目差异出现突兀现象,当句子出现许多情感词语,尤其是情感趋向强烈的词语时,直接计算情感总值会得到过高或过低的结果,与正常句区分明显,如此机械地判断句子情感倾向是不合理的。
受到经典聚类算法K-Means的启发,本文方法使用简单K-Means方法聚类句中词语的情感值(单维度聚类),取类中心词语情感值做和处理,作为句子的情感总值。具体方式为:依序选择句中情感词语,将其作为初始聚类中心,并将情感值位于此词语1.0范围内的词语加入此类,循环此过程直至遍历所有情感词语,最后使用K-Means聚类过程聚类两次得到最终聚类结果。这种变K值的单维K-Means方法将两句的情感值平滑处理,避免因两句情感词语数目差异影响本文情感值的计算。
通过大量实验发现,当两句的情感总值差值(绝对值)大于1.7(约为情感词典极值的1/4)时,句子的情感倾向开始出现明显差距,说明两句情感倾向不同。为此当两句的情感总值相差大于1.7时,在上一节句子整体相似度的基础上计算情感减益,如式(11)所示:
其中,Mood(S1)与Mood(S2)表示第一句与第二句的情感总值。
最后,参考文献[8]对句式因子的处理,本文方法使用句法依存标记中WP(标点符号)部分判定句式,将句子分为疑问句、祈使句、陈述句三种类型。参考文献[8]中句式影响因子,对不同句式设置惩罚因子,将疑问句与其他句式的惩罚因子设置为0.1,其余句式间的惩罚因子设置为0.5。计算情感减益之后,对相似度大于0.8的句子对(高相似句子对)计算句式减益,即在句子相似度值上乘于句式惩罚因子得到句子最终相似度。
硬件环境:Intel®CoreTM4510-U,内存8 GB。软件环境:Win10 64位,Python3.6+Pycharm2019.3.4。LTP库:ltp_data_v3.4.0。
中文句子并没有标准的相似度计算句库,本文从人工构建的简单句库、复杂句库、主谓句库与非主谓句库共600句中随机选取30组句子作为测试集,并请12位专业人士对句子进行判断,给出相似度值取平均作为核定标准,判断核定标准0.1范围内的句子相似度值为正确结果。
本文使用语义方法、Word2vec方法、海明距离方法、VSM方法、文献[8]方法和文献[11]方法6种句子相似度计算方法做对比实验,使用准确率、MSE与RMSE评价实验效果。
MSE为均方误差函数,用来检测模型预测值与真实值之间的偏差,MSE值越小,说明模型预测结果越贴近于真实值。RMSE为MSE的平方根。MSE的计算公式如式(12)所示,RMSE的计算公式如式(13)所示。
其中,ym为真实值,ŷm为模型预测值。
表4 为各方法在测试集上的实验结果,表5从测试集中随机选取了5组句子,展示了本文方法与对比方法对例句的相似度计算结果。
表4 实验结果Table 4 Experimental results
表5 部分实验结果数据对比Table 5 Comparison of some experimental results
由表4可知,不考虑语义特征的句子相似度计算方法准确率较低,基于句法依存关系与情感信息的方法准确率较高,本文提出的基于语义与情感的句子相似度计算方法具有最高的准确率与最小的MSE值,优于上述对比方法,具有优良的实用性。
语义方法使用文献[17]方法计算词语相似度,通过链式法则以计算两句中词语最大相似度的方式得到两句相似度;Word2vec方法基于WordEmbedding(词嵌入),通过One-Hot和神经网络将词语转化为词向量,将词向量的均值归一化作为句向量,计算句向量的余弦相似度得到句子相似度;海明距离方法使用SimHash将分词后句子转化为编码,计算两句编码海明距离,以此作为两句之间的相似度;VSM方法将句子映射为一个特征向量,通过对比特征向量的相似度得到句子相似度。
上述四种句子相似度计算方法基于词语、词向量或句向量,并未考虑语义关系与情感信息,当计算语义结构不同或情感倾向不同(情感差值大于阈值)句子的相似度时,方法准确率较低。
文献[8]方法结合Word2vec与句法结构,使用Word2vec计算主谓宾相似度,使用词语依存关系计算句法结构相似度,综合得到句子相似度。该方法有一定准确率,但其对主谓宾部分赋予固定的0.3、0.5、0.2的全局权重系数,并非所有句子都有完整的主谓宾结构,对主谓宾部分固定赋值的方式降低了句子相似度计算的鲁棒性与灵活性,且该方法并未考虑到句子的情感信息,无法有效计算不同情感倾向句子的相似度。
文献[11]方法提取主谓介宾与修饰部分计算句子相似度,在本文测试集上取得了不错的效果,但该方法只提取主谓介宾与修饰词计算句子相似度,存在信息遗漏问题。在情感计算方面,该方法提取定中或状中关系中的修饰词,参照知网总结的褒贬义词表对两句做褒贬义的情感趋向判断,忽略了句中其他单元的情感信息。如表5第五组句子所示,“笑”与“哭”作为谓语,并不参与到情感计算中,导致该方法对第五组句子相似度值计算过高。
不同于上述基于词语的句子相似度计算方法,本文方法计算范围包含句中所有词语,解决了信息遗漏问题,计算结果更具可靠性;从表意层面计算句子相似度,通过对比两句表意单元的相似性得到句子整体相似度,相对于上述基于词语的句子相似度计算方法而言,从句子表意属性上计算句子相似度更加符合人类认知规律,更具合理性;使用分层次的计算策略,通过灵活赋值匹配比对的方式得到句子整体相似度,对比于上述基于词语或关键词语的句子相似度计算方法而言,具有更强的鲁棒性,方法在计算结构不同或长短不同的句子时总能得到一个合理的相似度值。
在情感计算方面,以往句子相似度计算方法基本没有参考句子的情感属性,因此该类方法无法有效计算不同情感趋向句子的相似度。文献[11]方法从句子褒贬义方面对句子情感趋向做粗粒度判断,提升了句子相似度计算的准确率,但该方法的使用范围有限,无法定量计算句子情感值。在句子整体相似度的基础上,本文使用变K值的单维K-Means方法,结合情感词典计算情感减益,以此对句子相似度进行情感修正。情感减益在情感倾向明显不同的客观句子相似度计算中作用显著,如表5第五组句子所示,若不计算情感减益会得到0.939 671的相似度值,与人类理解出现较大偏差。通过情感减益,在计算不同情感倾向句子的相似度时,可以得到一个合理的相似度值,进一步提升句子相似度计算的准确率与可靠性。
本文方法计算句子构成简单尤其是单一结构句子相似度时,在不考虑情感因素的情况下与其他方法效果相当;计算句子构成复杂尤其是带有从句部分句子的相似度时,能有效地提取各语义独立成分及其组成部分,计算得到更为精准的句子相似度值。
综合来看,本文提出的基于语义与情感的句子相似度计算方法对比其他方法具有更高的准确率与鲁棒性,计算结果更加符合人们对汉语言的认知,具有良好的实用性。
本文基于语义和情感,提出一种更细粒度的句子相似度计算方法。该方法以语义独立成分代替词语作为判断句子相似度的主要标准,从语义层面计算句子相似度,计算过程中结合了依存关系、词法关系、情感与句型因子得到一种更为精确的句子相似度结果,通过实验证明了本文方法的有效性。但本文方法句子相似度计算依赖哈工大LTP平台,当哈工大LTP平台处理结果中语义角色缺失时,方法效率会受到影响。因此,下一步工作是在LTP平台处理结果中语义角色缺失时补全语义角色,并尽可能综合更多语义与情感信息,继续提升基于语义与情感的句子相似度计算方法的效率。