基于依存句法与词语语义的汉语句子相似度计算
2022-07-11黄树成周尓昊
申 震,王 逊,黄树成,周尓昊
(江苏科技大学 计算机学院, 镇江 212100)
句子相似度计算广泛用于自然语言处理的多个领域[1],具有很高的学术价值和应用价值,在文档查重中用来定位不同文档间的相似内容;在信息检索中,通过相似度计算返回给用户想要的信息;在问答系统、推荐系统中,经过相似度计算返回最佳的答案或方案.在考试自动评分系统中,句子相似度用来衡量考生答案与参考答案的文本相似程度,直接影响考生成绩的评定;为了更好地衡量两个或多个文本内容的相似或相关程度,需要进一步改进提高句子相似度计算的准确性.国内外学者对句子相似度计算方法的研究现状[2-3]如表1.
表1 国内外研究现状
句法分析是对句子的语法结构分析[8],也属于语义分析的一种,但其不依赖于某种语料库或世界知识.混合方法是对几种方法的融合.针对现有基于句法分析的计算方法中,未充分考虑句子中各成分依存信息,并且忽略单个词语的语义信息等问题,文中提出在句法分析的基础上,加入基于本体知识词典的词语语义相似度计算方法,考虑到句子成分、依存关系、词语语义等多个层面的语义特征,更准确的计算句子间的相似程度,正确判断句子内容的一致性.
1 相关工作
1.1 依存句法分析
文中使用哈工大语言技术平台(LTP)提供的依存句法服务分析句子内各成分之间的依存关系以揭示其句法结构.语言技术平台是哈工大社会计算与信息检索研究中心历时十年研制的一整套开放中文自然语言处理系统,该系统提供了中文分词、词性标注、依存句法分析、语义依存分析等服务,目前所有服务已经部署到讯飞开放平台.讯飞开放平台是一个开放的移动互联网智能交互技术服务平台.
通过构造HTTP请求访问相应的Web API接口就可以使用语言技术平台提供的服务.例如:句子“我们即将以昂扬的斗志迎来新的一年.”调用https://ltpapi.xfyun.cn/v1/{dp}依存句法分析接口后得到json格式的响应数据:
{ "code": "0", "data": { "dp": [ {"parent": 6,"relate": "SBV"}, {"parent": 6, "relate": "ADV"}, {"parent": 6, "relate": "ADV"},
{"parent": 5, "relate": "ATT"}, {"parent": 3, "relate": "RAD"}, {"parent": 2, "relate": "POB"}, {"parent": -1, "relate": "HED"}, {"parent": 10, "relate": "ATT"}, {"parent": 7, "relate": "RAD"}, {"parent": 10, "relate": "ATT"}, {"parent": 6, "relate": "VOB"}, { "parent": 6, "relate": "WP"} ] }, "desc": "success", "sid": "ltp00fefb0c@dx487a1323f800a00100"}
句子分词后对词语编号,root根节点记作-1,后面词语和标点符号依次编号,parent字段为父节点,relate字段代表依赖关系类型.对数据经过结构化整理后,得到句子的依存分析树如图1.
图1 依存句法分析
依存句法分析树中的依存关系标注如表2.
表2 依存关系的标注类型
1.2 知网的词语相似度计算
知网中有两个重要的单位名词:“概念”与“义原”.一个词汇的语义可能由多个概念描述,而概念又是由一种“知识表示语言(即义原)”来表述的.多个义原之间的关系错综复杂,以义原之间的上下位关系为主线可以将所有的义原组成一个有层次的树状结构,如图2.知网的词语相似度计算以义原相似度计算为基础.
图2 树状的义原层次结构
文献[9]提出了将义原之间的路径距离转化为计算两个义原之间的相似度,义原距离越小,义原相似度越大.若s1和s2表示两个义原,Dis(s1,s2)为s1和s2在知网中的路径距离,α为一个调节参数,代表相似度是0.5时的取值,文献中α取值为1.6.计算为:
(1)
对于两个汉语词语W1和W2,如果W1有m个概念:C11,C12,…,C1m;W2有n个概念:C21,C22,…,C2n,W1和W2的相似度为所有概念的相似度的最大值,为:
(2)
两个概念语义表达式的计算方法为:
(3)
式中:βi(1≤i≤3)是不同义原的所占比重,分别代表独立义原、关系义原和关系符号义原各自所占的权重,且β1+β2+β3=1,β1≥β2≥β3.文献[10]中取值为:β1=0.7,β2=0.17,β3=0.13.采用连乘积的形式是让主要义原的相似度制约次要义原的相似度,如果词语的主要义原部分相似度不高,那么词语的次要义原部分对词语整体影响也不能过大.
1.3 同义词词林词语相似度计算
《同义词词林》是由梅家驹等人编写的一部大词典,所有词语也是被组织成一种有层次的树状结构.鉴于同义词词林中很多词语为生僻词且没有更新,哈工大信息检索研究室利用大量词语相关资源,完成了《同义词词林扩展版》的编写,剔除了原版中的非常用词,含有丰富的语义信息.《同义词词林扩展版》继承了《同义词词林》的编码体系.如没有加以说明,文中“词林”指的是《同义词词林扩展版》.词林将所有的词语分为大、中、小3类,为了体现各个词语间的词义远近和相关程度,又将小类分为词群和原子词群[11].树状结构及每一类的层次编码规则如图3,例如:“东西南北”的编码为Cb02A01=,词语的编码规则如表3.
图3 树状结构及编码规则
表3 词语编码表
在第五层之后,分别使用“=”,“#”,“@”3个符号标记加以区别描述.“=”代表属于同义词;“#”代表属于同类或相关词语;“@”代表既没有同义词,也没有相关词.
文献[11]利用词林的树状层次结构和词语的义项编码,计算两个义项之间的相似度为:
(4)
式中:A,B为两个义项;α为根据作为叶子节点的两个义项在哪一层分支取相应的系数值;n为分支处的节点总数;k为两个分支间的距离.一个词语可能有多个义项编码,两两计算两个词语所有的编码,取其中的最大值作为词语的语义相似度值.
2 改进的句子相似度计算方法
句子相似度计算是一个较为复杂的过程,既要包含组成句子的词语之间的词义相似度计算,又要考虑到句子语法结构对句子语义相似度的影响.文中首先通过调用讯飞开放平台提供的哈工大研发的语言技术平台依存句法分析接口得到句子中的依存句法信息,然后使用基于本体知识的词语相似度计算获得词语之间的相似度.
定义1:依存关系树Tree(V,E,R):V是树中所有节点的集合,E是树中所有分支的集合,R是所有分支上的依存关系集合.且满足:① ∀e∈E,∃u,v∈V(u≠v),使得e=;②R的取值是依存关系的15种标志类型.
2.1 基于依存句法的句子相似度计算
文献[12]通过计算句子中所有词语之间的相似度得到句子相似度.假设计算句子A和句子B的句子相似度,句子A所有的词语为:A1,A2,…,Am.句子B所有的词语为:B1,B2,…,Bn;相似度为:
(5)
式中:
ai=max(S(Ai,B1),S(Ai,B2),...,S(Ai,Bn))
bj=max(S(A1,Bj),S(A2,Bj),...,S(Am,Bj))
S(Ai,Bj)(1≤i≤m,1≤j≤n)为词语Ai和Bj的词语相似度.
该方法单纯的考虑了词语方面的语义特征,存在语义缺失,不能准确的反应句子的含义.对一词多义、结构复杂的句子计算相似度时,相似度结果不可靠.因此,文中提出在计算词语相似度的基础上,加入依存句法分析中依存关系特征.结合词语和词语间依存关系进行相似度计算,增加了相似度结果的可靠性.
文献[13]根据依存句法分析将句子中的词语分为:核心词、关键词和其他词,各部分分配相应的权重进行词语相似度计算.虽然考虑到了所有词语,但只是简单的将词语分为3类,未利用句子中各个词语或成分之间的依存关系信息.文献[14]结合依存句法与词林计算句子相似性,通过依存关系图提取出关系路径,计算相同长度的关系路径上的词语相似度,最后对不同长度的路径进行语义相似度加权求和,是一种较为理想的方法.但尽管关系路径长度相同,对路径上不同句法关系的词语之间计算相似度,难免会造成相似度偏低.
针对这些问题文中提出构造依存关系三元组,同时考虑句中词语层面上的相似度和句子依存句法层面上的相似度.具体步骤和计算方法为:
定义2:依存关系三元组T(p,q,r):p是依存词,q是被依存词,r是两者之间的依存关系.且满足:
① (p,q∈V)∩(p≠q)∩
∈E
②r∈R
(1) 假设待计算相似度的两个句子为A和B,调用语言技术平台的依存句法分析接口得到依存句法分析信息,经过结构化数据整理得到依存关系树Tree(V,E,R),并去掉其中没有实际意义的标点符号的依存关系;
(2) 根据两个句子的依存关系树分别构造依存关系三元组TA(pA,qA,rA)和TB(pB,qB,rB).例如在1.1小节的依存句法分析例句中“我们”是主语,“迎来”是谓语,两者之间是主谓关系;“我们”是依存词语,“迎来”是被依存词语,构成依存关系三元组T(我们,迎来,SBV).
(3) 假设句子A和句子B分别有m和n个依存关系三元组.句子A的第i个依存关系三元组记作TAi(pAi,qAi,rAi)(1≤i≤m),pAi,qAi和rAi分别表示句子A的第i个依存关系三元组的依存词、被依存词和依存关系;句子B的第j个依存关系三元组记作TBj(pBj,qBj,rBj)(1≤j≤n),pBj,qBj和rBj分别表示句子B的第j个依存关系三元组的依存词、被依存词和依存关系.
(4) 一般句子中可能有多个像定中、状中、并列等关系的依存关系三元组,为了尽量让主谓和主谓关系、动宾和动宾关系、状中和状中关系等这样有相同依存关系的依存关系三元组进行相似度计算,对A和B句子中提取出的依存关系三元组按一定的依存关系顺序进行排序.并增加了一个依存关系相似度标志R_Sim(rAi,rBj),取值为:
1≤i≤m,1≤j≤n
(6)
(5) 将词语间的依存关系信息加入相似度计算中,依存关系三元组之间的相似度为:
Sim(TAi,TBj)=Sim(pAi,pBj)×Sim(qAi,qBj)×R_Sim(rAi,rBj)
(7)
式中:(1≤i≤m)和(1≤j≤n);Sim(pAi,pBj)是句子A的第i个依存关系三元组的依存词和句子B中第j个依存关系三元组的依存词的词语相似度;Sim(qAi,qBj)是句子A的第i个依存关系三元组的被依存词和句子B中第j个依存关系三元组的被依存词的词语相似度;R_Sim(rAi,rBj)是依存关系相似度标志.
考虑到,依存关系三元组相似度体现的是两对词语以及语法结构的相似度[15],如果相似度数值较小,不足以体现依存关系的重要程度.所以将式(7)改进得:
R_Sim(rAi,rBj)
(8)
(6) 句子A和B中所有的依存关系三元组之间相似度计算一一对应,构成m*n维的相似度矩阵:
(9)
使用式(8)计算相似度矩阵中的每个元素Sim(TAi,TBj)的值.
(7) 考虑到不同依存关系对整个句子相似度的影响可能不同[16],一个句子中主要成分是主语、谓语和宾语,辅助成分为“定状补等”.因此,构成主干成分比如:主谓、动宾等的依存关系占的比重较大,而其他比如:定中、状中、介宾等依存关系,在句子中只是起到修饰的作用,所占的比重要小些.用W(r)代表依存关系r的权重,使用文献[17]的研究成果进行赋值,每个标注类型对应的权重如表4.
表4 依存关系的权重
(8) 综上,对式(5)进行改进,融入依存关系的语义影响因素,得到句子相似度为:
(10)
2.2 综合知网与词林的词语相似度计算
文献[11]将义原之间的路径距离转化为计算两个义原之间的相似度,义原距离越小,义原相似度越大.但是影响义原相似度的因素还有节点密度和节点层次等语义信息[18-19].
文献[10]中提出了一种综合知网与词林的词语相似度计算方法,根据不同情况选择不同权重计算词语相似度,是一种比较简单直观的计算方法.但没有考虑到还有两种情况的处理:① 一个词语被知网和词林收录,另一个词语没被收录;② 两个词语都没被收录.文中对于第一种情况给定一个较小的常数值;对于第二种情况,转化为比较两个字符串是否相同,从而更全面,有更高的容错率.
假设W1、W2是待计算相似度的两个词语,基于知网和词林计算出的词语相似度设为Sim1和Sim2,分别赋予权重λ1和λ2,且满足:λ1+λ2=1,相似度计算为:
Sim(W1,W2)=λ1Sim1+λ2Sim2
(11)
词语在知网和词林中的分布状况如图4,集合U表示所有的词语;集合A表示知网中收录的词语,共计50 222个;集合B表示词林中收录的词语,共计52 256个;集合C表示知网和词林同时收录的词语,共计30 926个[20];目前知网和词林仍在更新发展中,词语的收录情况也在不断地变化.
图4 词语分布图
采用如下的动态加权策略计算:
(1) 当W1∈C,W2∈C时,使用知网和词林分别计算W1和W2的词语相似度,记为Sim1和Sim2的值,式(9)中λ1= 0.5,λ2= 0.5.
(2) 当W1∈(A-C),W2∈(A-C)或W1∈(B-C),W2∈(B-C) 时,使用知网或词林计算W1和W2的词语相似度,记为Sim1或Sim2,此时,式(9)中λ1=1,λ2=0或λ1= 0,λ2= 1.
(3) 当W1∈(A-C),W2∈(B-C)时,在词林中查找W2的所有相似词,并依次与W1使用知网计算相似度,取其中的最大值作为词语相似度值,记为Sim1,如果词林中无相似词,则取Sim1=0.2,此时,式(9)中λ1=1,λ2=0.
(4) 当W1∈(A-C),W2∈C;或W2∈C,W1∈(B-C)时,首先对W1和W2使用知网或词林计算,记为Sim1或Sim2,然后在词林中找到W2或W1的所有相似词,依次与W1或W2使用知网计算相似度,取其中的最大值,记为Sim2或Sim1;如果在词林中找不到相似词,取Sim1=Sim2;此时,式(9)中λ1=0.6,λ2=0.4或λ1=0.4,λ2=0.6.
(5) 当W1∈(A∪B),W2∉(A∪B)时,Sim(W1,W2)=0.2.
(6) 当W1∉(A∪B),W2∉(A∪B)时,则对W1和W2进行字符串的比较.如果字符串相同取Sim(W1,W2)=1,否则Sim(W1,W2)=0.
综合知网和词林两个知识库的词语相似度计算方法,可计算的词语范围得到了一定的扩充,充分利用了词语在两个不同知识库中层次体系结构和语义的信息,从而使词语相似度的计算更加全面,也更加精确.
3 实验结果与分析
3.1 实验设计
实验数据集:选自西安科技大学提供的中文语义相似度训练集,该训练集将句子相似度值控制在[0,5]区间,5表示相似度最高(意思一样),0表示相似度最低(语义相反或不相干).从中筛选了具有代表性的20个句子作为标准集,每个标准句有10个相似句子作为相似集,另外选取500个与标准集中句子不相似的句子作为噪声集.测试集由相似集和噪声集组成,共计700个句子.
实验方法:依次选取标准集中的第i(1≤i≤20)个句子,与测试集中的700个句子两两计算相似度,然后选取相似度数值大的10个句子,根据这10个句子与第i个句子的10个相似句子的共有句子数,判断该计算方法的准确程度.
评价指标:主要采用准确率P(Precision)、召回率R(Recall)和F值作为实验效果的度量标准[21].准确率是选取的句子样本中有多少是真正的相似句子样本;召回率是在相似句子样本中被选取的比例;F值是准确率和召回率的组合度量,F值越大,实验结果越准确.具体计算公式为:
(12)
(13)
(14)
式中:R1为200个相似句子的集合,R2为计算方法选取的句子集合.
3.2 实验结果分析
根据实验方法,对标准集中的每个句子和测试集句子进行相似度计算,选取正确的相似句子样本个数分布如图5.
图5 各方法相似度计算效果
提中出的基于依存句法与词语语义的汉语句子相似度计算方法与其他4种方法的3个评价指标如表5.
表5 4种方法的性能对比
通过表5中的实验数据可以看出,文中计算方法F值最高,与同类方法相比有一定程度的改进.基于HowNet的计算方法由于仅仅考虑了词义的相似程度,且概念和词库在一定程度上不够丰富,因此测试结果不太理想;基于Word2Vec的计算方法通过大规模语料库训练得到词向量模型来衡量句子相似度,相比基于词典的方法3个指标都得到了提升,但依赖于强大的语料库,同时受数据噪声的干扰比较大,导致计算正确率不高;结合依存关系和词林的计算方法通过提取两个句子之间的关系路径来计算语义相似度,并结合词林树状体系结构计算词语的相似度,考虑的比较全面,所以实验结果比较理想;第四种方法通过对句子模式归纳,识别出句子中的问题元,对中心词扩展.采用融合向量空间模型、TF-IDF方法、同义词词林的方法计算句子相似度.对特定规范和格式的句子计算性能较好,但需要大量归纳句子模式及问题元,适应性比较窄,稳定性低.文中方法的F值有了一定的提升是因为在依存关系的基础上,构建“依存关系三元组”,更加精确地计算句子中相同依存关系的相似度,对句子格式没有要求.并且更加全面地利用了词语在知网和词林本体知识中的语义信息.既考虑了句子语法结构的深层信息,也考虑了句子中词汇词义上的表层信息.
4 结论
文中提出的汉语句子相似度计算方法,在词语相似度计算研究的基础上,从句子的依存句法分析树中构造依存关系三元组,进而考虑到了句子成分、依存关系、词语语义等多个语义特征对句子相似程度的影响.对两个句子中的有相同依存关系的依存关系三元组进行相似度计算,不同的依存关系赋予不同的权重,并且在词语相似度计算中充分利用了词语在两个不同知识库中的语义信息.实验表明:该算法的准确率相比同类方法有了一定的提高,证实了其有效性,但其未考虑专业领域中专业词汇对相似度计算的影响,下一步将根据专业词汇获取句子主题特征,并加入到相似度计算,最后将相似度计算方法应用于考试系统中主观题自动评分中.