基于向量空间模型附加词义特征的句子相似度研究
2012-01-05楼新远
杨 松, 楼新远
(西南交通大学,四川成都610031)
0 引言
随着互联网的发展,现代社会已成为一个知识爆炸的社会,如何从广阔的知识海洋中找到需要的知识是目前人们最需要解决的问题。解决此类问题的主要途径就是利用搜索引擎进行查找,通过使用搜索引擎,可以查找到一系列的相关文章,然后通过阅读文章得到想要的答案。现在,自动问答系统逐渐走入人们的视线,越来越受到重视。用户通过自动问答系统可以直接得到想要的答案,而不是一系列相关的文章,比搜索引擎更加直接、友好。自动问答系统中的一个关键问题就是如何根据用户的提问在知识库中查找到对应的答案,目前一般都是通过计算用户提问的句子和知识库中的对应问题的句子的相似度解决。
目前进行句子相似度计算时主要使用的算法有向量空间模型(Vector Space Model,VSM)[1-2],编辑距离算法(Levenshtein Distance)[3],语义词典方法[4],依存树法(Semantic Dependent T ree)[5-6],以及词形词序结合的方法等。基于向量空间模型的相似度计算方法是一种基于语料库中出现的关键词词频的统计方法,以大规模真实语料为基础,首先计算出每个关键词的权重,然后将句子转换成由关键词权重表示的词项向量,最后通过计算两个句子向量的夹角余弦,得到句子相似度。传统的向量空间模型没考虑到词语的语义,没考虑到词语之间的相似度。论文在向量空间模型的基础上增加了词义特征,通过在传统的向量空间模型中引入词语之间的相似度,从而使计算出的两个句子的相似度分数更加准确。
1 向量空间模型
在向量空间模型中,把每个句子都表示为一个 n维词项向量的形式,然后在计算两个句子的相似度时,将其转换成向量空间中的向量夹角计算问题。使用向量空间模型计算句子相似度的时候并没考虑到词项的词义,没考虑到词项之间的相似性。假设有如下两个句子:句子S1=如何注册成为淘宝会员;句子S2=怎样申请淘宝账号。将两个句子分别进行分词处理,得到如下结果:
S1=<如何,注册,成为,淘宝,会员>
S2=<怎样,申请,淘宝,账号>假设各个词的权重如表1所示:
表1 词的权重
则得到的两个向量为:
S1=<1.7,3.6,0.8,5.2.3.9,0,0,0>;S2=<0,0,0,5.2,0,1.3,2.2,4.2>
则根据传统的向量空间模型计算出两个句子的相似度为0.493。
从上面的计算过程可以看出,整个过程当中并没考虑到词项“如何”和“怎样”是同义词,“注册”和“申请”是具有一定相似度的近义词,“会员”和“账号”也是具有一定相似度的近义词。虽然从语义上感觉句子 S1和句子 S2非常相似,但是通过传统的向量空间模型计算出的相似度分数却很低,就是因为向量空间模型中并没考虑到词语之间的相似性。
为了解决上述问题,提出了带有词义特征的向量空间模型,通过在计算的过程中引入词语的相似度,改进传统的向量空间模型。
2 带有词义特征的向量空间模型
2.1 改进的词项向量生成算法
为了在计算句子相似度时引入词项之间的相似度,新的词项向量生成算法不只是将相同的词项作为同一个维度进行计算,而且将相似度大于阈值的 δ两个词项也作为同一个维度参与计算。目前计算词项之间的相似度的算法一般有字面相似度算法[7-8],词素相似度算法[9],基于《知网》和《同义词词林》的算法[10-11]等。设向量VS1是句子 S1生成的词项向量,向量 VS2是句子 S2生成的词项向量,向量 VSim 存放的是 VS1中和 VS2中对应的词项的相似度,所以有式(1)的关系:
其中 VSimk表示向量VSim中的第k项,VS1k表示向量VS1中的第k个词项,VS2k表示向量VS2中的第k个词项。生成 VS1和 VS2的算法描述如下:
(1)m=|S1|,n=|S2|;//即 S1中有 m 个词项,S2中有 n个词项
(2)构建一个m×n的词项相似度矩阵M,矩阵元素 Mij=Sim(T1i,T2j),Tpq表示句子Sp中的第q个词项;
(3)查找矩阵中的最大值,记为Max,Max所在行记为r,所在列记为c;
(4)if Max≧δthen
将词项 T1r加入到向量VS1的结尾,并从 S1中删除词项 T1r;
将词项 T2c加入到向量VS2的结尾;并从 S2中删除词项 T2c;
将Max加入到向量 VSim的结尾;
end if
(5)重复(1)~(4),直到没有Max值小于 δ,或者矩阵为空;
(6)将S1中剩余的k个词项加入到向量VS1的结尾,并在 VS2的结尾加入k个0元素;
(7)将 S2中剩余的t个词项加入到向量VS2的结尾,并在 VS1的结尾加入 t个0元素;
(8)在 VSim的结尾加入k+t个0元素。
假设词项之间的相似度如表2所示:
表2 词项相似度
假设阈值δ=0.7,根据上述算法生成的3个词项向量分别为:
VS1=<如何,淘宝,会员,注册,成为>
VS2=<怎样,淘宝,账号,申请,0>
VSim=<1,1,0.8,0.7,0>
可以看出,这里生成的词项向量已经将相似度大于δ的词项放在同一个维度。
2.2 改进的相似度计算方法
因为通过新算法生成的句子向量,将相似的两个词项当做同一个维度,所以需要对传统的向量空间模型中的公式进行改进,在计算两个词项的权重的乘积时引入词项的相似度。继续使用符号 W作为词项的权重标记,Wpq表示句子向量VSp中的第q个词项的权重。改进的相似度算法如式(2)所示:
其中 VSim是新的句子向量算法生成的词项相似度向量。
上文例子中的两个句子“如何注册成为淘宝会员”和“怎样申请淘宝账号”,通过新的相似度算法计算出的相似度得分为0.873,显然好于之前的计算结果。
3 实验结果与分析
使用正确率(Precision,P)和召回率(Recall,R)[12]两个基本指标来衡量句子相似度算法的效果。通过将正确率和召回率进行融合,可以得到二者的调和平均值F,使用F作为最终的衡量结果,F的定义如下:
另β=1,即表示F值中正确率和召回率的权重相等,得到
实验中,使用某电子商务公司的自动问答机器人系统中某类别的470条常见问题集作为语料库,随机抽取某日用户针对该类问题提问的313个问题作为查询问题集,使用查询问题集中的问题对语料库进行提问,并对查询结果进行人工识别。根据《同义词词林(扩展版)》得到词语的相似度,《同义词词林(扩展版本)》使用5层分类体系,将词语进行编码,两个词语的编码从左至右进行对比,得到的公共前缀子串越长,表示两个词语越相似。根据《同义词词林(扩展版)》中定义的层级对词语的相似度进行打分,结果如表3所示。
表3 词语的相似度分数
根据上述数据和公式分别计算通过传统的向量空间模型得到的F值,以及通过改进的向量空间模型得到的F值(见表4)。其中词语相似度的阈值δ进行3次不同的取值,分别为1,0.9和0.7。
表4 实验结果
通过实验结果可知,使用带有词义的向量空间模型得到的计算结果的精确率和召回率有所改善。
4 结束语
提出了带有词义特征的向量空间模型,通过在传统的向量空间模型中引入词语的相似度,弥补了传统向量空间模型中没有考虑词义的缺点,通过实验验证了该方法可以得到更高的精确率,尤其是召回率提高的较多。但是生成句子向量的算法复杂度较高,不适合计算词项很多的整篇文档之间的相似度,只适用于计算句子的相似度。
[1] Salton G,Wong A.On the Specification of Term Value in Automatic Indexing[J].Journal of Documentation,1973,29(4):351-372.
[2] Salton G.The SMART Retrieval System-Experiments in Automatic Document Processing[M].Englewood Cliff,NJ:Prentice Hall Inc,1971.
[3] 车万翔,刘挺,秦兵,等.基于改进编辑距离的中文相似句子检索[J].高技术通讯,2004,(7):15-19.
[4] 裘江南,罗志成,王延章.基于中文语义词典的语义相关度方法比较研究[J].情报理论与实践,2008,(5).
[5] 李彬,刘挺,秦兵.基于语义依存的汉语句子相似度计算[J].计算机应用研究,2002,(12):15-17.
[6] 穗志方,俞士汶.基于骨架依存树的语句相似度计算模型[A].中文信息处理国际会议[C],北京,1998.
[7] 吴志强.经济信息检索后控词表的研究[D].南京:南京农业大学,1999.
[8] 章成志.基于多层特征的字符串相似度计算模型[J].情报学报,2005,24(6).
[9] 侯汉清,朱毅华,沙印亭.计算机识别同义词的两种算法的比较与评测[J].中国图书馆学报,2002,28(140):82-85.
[10] 李素建,刘群.基于《知网》的词汇语义相似度计算[C].第三届中文词汇语义学研讨会,中国台北,2002.
[11] 梅家驹,竺一鸣,高蕴琦.同义词词林:第二版[M].上海:上海辞书出版社,1996.
[12] Christopher D.Manning,Prabhakar Raghavan,Hinrich Schutze.Introduction to Information Retrieval[M].Cambridge University Press,2008.