基于同义词词林的句子语义相似度方法及其在问答系统中的应用

2019-08-14 10:02周艳平李金鹏
计算机应用与软件 2019年8期
关键词:词序词形中心词

周艳平 李金鹏 蔡 素

(青岛科技大学信息科学技术学院 山东 青岛 266061)

0 引 言

随着智能时代的来临,问答系统引起了国内外研究和教育机构的广泛关注。问答系统按问题集来源可分为三类[1]:基于常问问题的问答系统、基于Internet日志的开放域问答系统和基于百科全书知识库的知识问答系统。

在中文问答系统中,问句信息匹配最大的难点就是一词多义问题,如何准确地计算中心词之间同义项的相似程度是当前研究的重要课题[2]。现有的计算句子相似度的方法可以分为四类:文字匹配方法、概率方法、词频-逆向文档频率向量方法和语义依存方法。文字匹配方法基于两个句子中包含的相同词或同义词的数量来计算句子相似度,如基于overlap的改进方法[3]、余弦相似度算法。概率方法通过借助语言模型框架,利用概率方法计算两个句子的相似度[4]。词频-逆向文档频率向量方法需要计算句子中心词的词频和权重,然后生成频率向量组,使用余弦相似度计算方法得出句子之间相似程度[5]。上述三种方法只通过句子中心词的表意来比较相似度,无法对整个句子语法结构进行分析判断。语义依存方法借助本体或字典,对词进行语义分析[6-7]以解决句法问题。但传统的语义依存法不能从词义的角度上考虑句子相似度信息,因此会出现句法一致,句子相似度低的情况。

本文提出了一种基于同义词词林的句子语义相似度方法,采用同义词词林的编排及其语义特征,完成多义词的信息匹配,通过加权词形、词序和语义的相似性来获得最终句子相似程度。然后将本文提出的方法应用于常问问题的问答系统中,用来提高问句匹配的准确率。

1 一种同义词词林的句子语义相似度方法

1.1 中心词抽取

在语言学中,句子由中心部分(如主语、谓语和宾语等)和修饰语部分(如定语、状语和补语等)组成。中心部分在句子中起主导作用,本文只考虑句子中心部分的相似性。一般来说,句子中的主语和宾语通常是名词或代词,谓词通常是动词或形容词。在计算句子相似度时,重点考虑这些中心部分的词[8]。

本文利用哈尔滨工业大学信息检索研究中心开发的在线语言技术平台(Language Technology Platform,LTP)[9]获得句子之间的依存句法关系。该平台将整个句子转换为结构化语义依存树,依赖弧反映了句子中词与词之间的依赖关系。该平台可以用于分词、词性标注、命名实体、词义消歧、句法分析和语义分析。例如句子“今年我弟弟考上了青岛科技大学”可表示成树状结构,并能得到句子的中心词和词性标注,如图1所示。

图1 使用LTP抽取句子的中心词和词性标注

1.2 词形相似度计算方法

词形相似度需要考虑到同义词识别判断的情况,本节借助同义词词林的编排及语义特点完成一词多义的信息匹配。

同义词词林利用树状结构表示词语义项间的关系[10],共有5层分支编码,第1、4层为大写英文字母、第2层为小写英文字母、第3、5层为两位十进制数。借助同义词词林计算词语相似度步骤如下:

(1) 判断两个词语的同义词词林编号在第几层不同。两个词语编号不同的层需要乘以该层的系数d。如:Ae05A02与Ae05A03是第5层不同,则乘以第5层系数d;Ae05A02与Ae05B03是第4层不同,则乘以第4层系数d。为了将结果控制在[0,1]范围内,需要乘以调节参数cos(lπ/180),l为该层分支元素个数。

(2) 词语所在的分支上的元素会影响到词语义项的相似度,为了将分支元素与义项相似度对应起来,需要乘以控制参数(l-k+1)/n,l为分支元素个数,k为两个分支的距离。相似度计算如下:

通过实验分析,本文将不同层数对应的参数d设置为:第1层d=0.1,第2层d=0.65,第3层d=0.8,第4层d=0.9,第5层d=0.96。

实验发现,中心词W、W′之间相似度SIM(W,W′)≥0.8时,才能将W、W′作为同义词或相同词使用。但该方法只是针对同义词词林中存在的词语进行对比,如词林中并无该词语,就会默认不是相同词或同义词。为避免这种情况发生,本文根据词林中有无某个词语进行判断,步骤如下:

(1) 判断同义词词林中有无W、W′,若有,则用上述方法直接计算词语相似度;若没有,则需要对W扩展近义词,并将扩展的近义词按顺序加入数组中。

(2) 判断W近义词组中是否包含W′。在近义词组中,序数越小的近义词与原词W的相似度越高,因此W、W′的词语相似度SIM(W,W′)计算如下式所示:

式中:arrayW是W的近义词组,orderW(W′)是W′在W近义词组中的序数,countW是W近义词组的元素个数。

在语言学中,一个词在不增加任何词缀的情况下转化为另一词性的现象在构词法中称作词性转化[11]。例如句子A=“怎么做好协调工作”中的“协调”是动词,而句子B=“和老板的关系一直不是那么协调”中的“协调”是形容词。研究证明,同义词或相同词在不同词性下含义不同。针对词性转化问题,本文提出词性匹配加权方法,对同义词或相同词的不同词性所得出来的相似度进行加权处理,从而使计算得出的中心词相似度更加准确。本文只对词语相似度SIM(W,W′)≥0.8并且词性不同的中心词进行加权处理,权值γ=0.85,处理之后的中心词W与W′词形相似度SIMnew(W,W′)按下式计算:

SIMnew(W,W′)=γ×SIM(W,W′)

(3)

(4)

本文计算句子之间的词形相似度的步骤:

(3) 按式(4)计算句子S、S′的词形相似度Sword(S,S′)。

1.3 词序相似度计算方法

词序相似性反映的是相同词或同义词在两个句子中的位置相似性,在某些情况下词序会直接影响到句子所要表达的意思[12]。例如句子S=“我今天买了从青岛到北京的车票”,句子S′=“我今天买了从北京到青岛的车票”。经过词形匹配发现这两句话相似度是100%,但实际意义有差别。通常用逆序数法计算词序相似度,但其时间复杂度要高。为了降低时间复杂度,本文采用基于向量的词序相似度算法进一步提高词序相似度的计算效率。

下面举例说明计算句子S与句子S′之间的词序相似度的方法。

句子S的中心词={“我”,“今天”,“买”,“青岛”,“北京”,“车票”};

句子S′的中心词={“我”,“今天”,“买”,“北京”,“青岛”,“车票”};

句子S、S′的公共词语:CSS′={“我”,“今天”,“买”,“青岛”,“北京”,“车票”}。

对应的标准排列向量u=(1,2,3,4,5,6)。

将句子S′中的公共词语映射为位置向量u′=(1,2,3,5,4,6)。则u′到u的向量距离可用下式表示:

(5)

从而得出distance(u,u′)=2,基于向量的词序相似度算法定义为:

式中:maxDistance为distance(u,u′)的最大值:maxDistance=n2/2,c是两个句子中相同中心词的个数。最终得出句子S与S′的词序相似度Sord(S,S′)=0.89。

1.4 语义相似度计算方法

词形相似度算法通过句子中心词的表意来比较相似度,不能分析和判断整个句子的句法结构。本文引入了语义依存树来弥补词形相似度算法的不足。因句子中心部分占主导作用,所以在使用依存句法进行相似度计算时,只需计算两个句子中心部分的词语组成的关键配置对的相似程度。关键配置对是指句子中的核心词以及由中心词组成的配置对[9]。这里中心词定义为名词、代词、动词和形容词,它是通过在线语言技术平台分词后的词性标注决定的。相似度St(S,S′)的计算公式为:

(7)

式中:Qi为句子S和句子S′关键配置对的权重,TC1为句子S的关键配置对数,TC2为句子S′的关键配置对数。对于任意两个配置对:(1)W1-W2;(2)W1′-W2′。若W1=W1′并且W2=W2′,则配置对(1)和配置对(2)的权重为1;若W1≠W1′但W2=W2′,或W1=W1′但W2≠W2′,则配置对(1)和配置对(2)的权重为0.5;否则为0。需要指出的是,这里的W=W′表示这两个词是相同词或同义词,可通过1.2节的方法判断两个词是否为相同词或同义词。

1.5 问句相似度算法计算方法

问句相似度反映了两个问句之间的相似程度,通常用[0,1]之间的数值表示。数值越大,两个问句的相似度越高。若S为问句,S′为问题集中的任意一个问句,则问句相似度为:

SIM(S,S′)=k1×Sword(S,S′)+k2×Sord(S,S′)+

k3×St(S,S′)

(8)

式中:Sword(S,S′)为词形相似度;Sord(S,S′)为词序相似度;St(S,S′)为语义相似度;k1、k2、k3为相似度系数,且满足k1+k2+k3=1。

根据本文上述方法对问句S和问题集M中的任意问句S′进行FAQ问句相似度计算,如图2所示,具体步骤如下:

(1) 将问句分词并抽取中心词。

(2) 使用本文提出的词形相似度计算方法计算问句的词形相似度Sword(S,S′)。

(3) 使用基于向量的词序相似度算法计算关键词之间的词序相似度Sord(S,S′)。

(4) 借助语义依存方法计算句子之间的语义相似度St(S,S′)。

(5) 使用式(8)对上述相似度加权求和,最终得到S、S′问句的相似度SIM(S,S′)。

对给定相似度阈值σ,选择SIM(S,S′)中相似度的最大值MAX,若该最大值大于σ则返回相应的答案,若该最大值小于σ则默认问题集没有该问题的答案。

图2 FAQ问句相似度计算流程图

2 应用及结果分析

将本文所提出的基于同义词林的句子语义相似度算法应用于FAQ机器问答系统中。本文使用同义词词林扩展版,并通过在线词典来对同义词词林没有的词进行扩展,本文只将扩展后的前5个近义词作为计算元素加入近义词组中。本文开发环境为Window7 X64,开发工具为PyCharm4.5.4,开发语言为python3.6.1。

随机从哈尔滨工业大学信息检索研究室(HIT-IRLab)提供的问答集合中选取500条问句作为初始数据集S。随机选出100条问句作为初始标准集M,剩余400条作为初始噪声集N,依次选取S中的问句作为百度知道的查询条件,利用BeautifulSoup解析库[13]对查询返回的网页H进行标签处理,提取出H中的前3个标题。为了提高标题与问句的相似度,需要人工进一步筛选。M中每个问句都会有1~3个相似句子,文本最后得到扩充标准集MT的元素个数为253。将M与MT混合起来作为标准测试集MMT的元素个数为353。同样将N进行扩充得到噪声测试集NNT的元素个数为1 200。最后我们把MMT与NNT混杂起来作为测试集。

实验流程:按顺序从标准测试集MMT的353个句子中抽出1个问句X,然后计算这个问句与测试集中的问句之间的相似度,并按照相似度值对测试集中问句进行倒序排序,输出前三个问句,如果所得到的这三个问句包含了扩展标准集MT中的问句X对应的所有问句(1~3个),则说明这个问句的相似度计算是成功的。

句子成分是由一个个词组成的,即使在句子不通顺的情况下,也可以根据词来判断整个句子要表达的意思。因此句子相似度应以词形相似度为主,以语义结构相似度为辅,同时考虑词序相似度,并进行综合计算得出句子相似度。本文相似度系数的取值原则:当k1过小时,词形相似度比例过低,会导致词义不同但句法相同的两个句子相似度变高。当k1过大时,词形相似度比例过高,会导致词义相同但句法和顺序不同的两个句子相似度变高。因此相似度系数应符合k1≥k2+k3且k3>k2(k1,k2,k3不为0)。根据人工测试经验,当k1=0.5、k2=0.2、k3=0.3时较为合适。为了防止遗漏正确答案并且剔除冗余数据,本文取相似度阈值σ=0.7。

采用信息检索技术中的准确率(P)计算:

式中:CorrectCount表示实验中正确的句子总数,AllCount表示实验的句子总数。

分别用词频-逆向文档频率向量方法和文献[7]方法与本文提出的方法做测试试验,实验结果如表1所示。从表1可以看出,使用本文所提出的方法,问句相似度准确率可以达到92.63%,明显优于使用词频-逆向文档频率向量方法和文献[7]方法。

表1 实验结果

3 结 语

本文提出了一种基于同义词词林的句子语义相似度方法,并将该方法应用与问答系统的问句匹配。相

比传统句子相似度方法,该方法能有效提高问句相似度准确率。本文所提出的方法可以适用于所有句子语法情况,后续研究中,将进一步简化该方法的计算复杂度和提高FAQ回答效率。

猜你喜欢
词序词形中心词
Why I ride
英语词形变异及其语义信息
带前置功能的词形《 в сопоставлениис 》的结构与搭配
飞行专业英语陆空通话词汇认知特点研究
汉语“在”方位短语词序在日文与韩文中的对应
汉语搭配信息对词汇识别的影响
俄汉语定语对比
发挥学生主体作用 提升复习效率
影响词序的“普通重音”规则