APP下载

一种基于语义与结构的句子相似度计算方法

2015-01-18张艳杰邵雄凯刘建舟

湖北工业大学学报 2015年5期
关键词:计算方法语义词语

张艳杰,邵雄凯,刘建舟

(湖北工业大学计算机学院,湖北 武汉430068)

在基于实例的机器翻译系统中,一个词语可以用几个意思相近或者是相同的词语进行翻译,相似度计算的准确性直接影响翻译结果的正确性;在FAQ自动问答系统中,句子与句子间的相似度能够使用户提出的问句迅速地在数据库中找到匹配问句的答案;在信息检索中,文本间相似度[1]的计算可以对数据库中的文本集合进行分类、排序,使检索结果更加准确。

目前,句子相似度计算从本质上可以划分为两种:一种是基于统计的词语共现方法,即句子的相似度取决于两个句子中所包含相同词语的个数,比如北大计算语言所提出的计算方法,这种方法实现简单,但是在计算句子整体相似度上不够准确;一种是基于语法与语义信息[2]的,如向量空间模型(Vector Space Model,VSM)、隐含语义标引模型、基于语义理解的模型等,这种方法虽然结合了词语的语义信息,但是忽略了句子的结构信息。文中综合两种方法的优缺点,提出了一种基于语义与结构相结合的句子相似度计算方法。

1 句子相似度

句子相似度[3]是指两个句子之间的相似程度,是定义在[0,1]之间的一个实数,值越大说明两个句子的相似程度越高,即相似值为1时表示两个句子完全相似,相似值为0时表示两个句子完全不相似。文中的计算方法包含对句子语义相似度的计算和句子结构相似度的计算。

1.1 句子语义相似度计算

通常,句子被视为词语的线性序列,词语语义相似度是计算句子语义相似度的基础。为计算词语相似度,文中采用基于董振东先生创建的知网的方法。“知网”[4]是一个以汉语和英语的词语所代表的概念为描述对象,以揭示概念与概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。在“知网”中:一个词语包含多个概念;“概念”又通过“义原”描述,具体实例见表1。

表1 “知网”中词语描述实例

表1中不同符号所代表的含义也不同,在知网中符号主要分为以下几类:1)表示语义描述间的逻辑关系,包括,、~、^;2)表示概念之间的关系,包括#、%、$、*、+、&、@、?、!;3)一些无法归入以上两类的特殊符号{}、()、[]。以上表中的“BP机”为例,“*LookFor|寻”表示可以将BP机作为“寻找”物品的一种工具,“#cry|喊”表示其与“喊”相关。

义原间有8种关系:上下位、同义、反义、对义、属性-宿主、部件-整体、材料-成品、事件-角色等关系,最重要的是上下位关系。所有义原的层次体系组成了一个复杂的树状结构(图1),这是计算词语语义相似度的基础。

图1 义原层次树状结构图

由于直接计算两个义原的相似度比较困难,且义原是相应的义原分类树上的一个节点,可将对相似度的计算转化为义原之间距离的计算。两个义原P1和P2的语义相似度

其中,α是一个常数,代表相似度是0.5时的词语距离,取α=1.6,d是P1、P2到共同父节点的距离。在得到两个义原相似度计算方法后,两个汉语词语W1和W2的相似度为各个概念相似度的最大值,计算方法如下:

其中,S1i是W1的m个概念,S2j是W2的n个概念,sim(S1i,S2j)是义原相似度。

“知网”中词包括实词和虚词,虚词间的相似度为其对应的句法义原或关系义原之间的相似度[5]。实词与虚词之间的相似度为0。实词用包含基本义原、其他基本义原、关系义原、符号义原四大特征的特征结构描述:

1)第一基本义原描述=基本义原1,描述的是实词的最基本语义特征;

2)其他基本义原描述={基本义原2,基本义原3,…},描述除第一基本义原外的其他义原集合;

3)关系义原描述=[关系义原=基本义原|具体词,关系义原=基本义原|具体词,…],描述语义关系特征;

4)关系符号义原描述=[关系符号={义原|具体词,义原|具体词,…},关系符号={义原|具体词,义原|具体词,…},…],描述语义关系符号特征。

上文的四个概念相似度分别记为sim1(S1,S2)、sim2(S1,S2)、sim3(S1,S2)、

sim4(S1,S2),则两个实词间语义的整体相似度simsem(S1,S2)可表示为

其中,αi是一个可调节的参数,且α1+α2+α3+α4=1,αi的取值,由其应用的具体领域而定。在计算句子相似度时,第一基本义原反映的是概念最基本的语义特征,因此其权重取值较大,取α1=0.5,α2=0.2,α3=0.17,α4=0.13。得到句中包含词语的相似度之后,两个句子S1,S2的相似度可表示为

公式(2)中,m,n是S1,S2中包含的词语个数,Wi,Wj分别是S1,S2中的词语。

1.2 句子结构相似度计算

句子结构复杂,现有技术对句子结构的分析还不够成熟,难以取得较好的效果,文中对句子结构相似度的计算采用的是句子的表层结构特征,即词形特征(simW )和句长特征(simL)。句子的词形相似度采用文献[6]中使用的方法。句子S1,S2的结构相似度simstru(S1,S2)具体计算公式如下:

1.3 句子相似度计算

使用公式(2)和(3),分别计算出句子S1、S2的语义相似度和结构相似度之后,则两个句子的整体相似度可以用下式表示:

其中,α+β=1,其值根据具体应用领域而定,在句子相似度计算中,句子的语义信息能更大程度地反映句子的内容,故取α=0.7,β=0.3;same(S1,S2)是S1与S2中包含的相同词语的个数,len(S1)、len(S2)分别是句子S1、S2中包含的词语个数。

该算法具体实现步骤如下:

Step 1:调用中科院的分词工具Ictclas的java接口,对输入的两个句子进行分词,使用本地定义的停用词词典,去掉停用词,将切分后的词语存入到List<String>中;

Step 2:去掉同一句话中重复出现的词语,计算两个句子中相同词语的个数,并使用公式(2)计算结构相似度;

Step 3:遍历Step 1得到的词语,使用公式(1)计算句子语义相似度;

Step 4:得到结构相似度与语义相似度之后,使用(3)计算得到输入的两个句子的相似度。

//结构相似度

strusim =2*n/(word1.size()+word2.size())*

(1-Math.abs(word1.size()-word2.size())/(word1.size()+word2.size()));

//语义相似度

forint i=0;i<word1.size();i++){

for(int j=0;j<word2.size();j++){

semsim=semsim+ WordSimilarity.simWord(word1.get(i),word2.get(j));

semsim =semsim/(word1.size()+word2.size());

sim=0.7*semsim+0.3*strusim;

2 实验结果与评价

本实验系统的开发语言是Java,环境是MyE-clipse,选用的测试数据是文献[7]中由清华大学周强博士提供的句子库。实验方法是计算从语料库中挑选出的各个句子与“爱夸张事实的孩子往往喜欢喜剧”之间的相似度,并比较不同方法得到的相似度。

实验中计算得到的各个句子间的相似度见表2示,表中第一种方法是文献[8]中提出的基于同义词词林的方法,先使用同义词判断两个句子中包含的所有词语的相似度,再计算得到句子相似度;第二种是文献[9]中改进编辑距离(LD,Levenshtein Distance)的方法,对两个句子进行添加、删除、修改操作,将一个句子变成另外一个句子,句子间的相似度由编辑操作的次数决定,操作次数越多,句子间相似度越低;第三种即文中的基于语义与结构的句子相似度计算方法。

表2 标题与每个句子的相似度

从表2可以看出,在方法一中,句子2、句子3与句子1的相似度都要低于0.65,且句子7、8与1的相似度接近0.2;在方法二中句子2、3与1的相似度也比较低,而其余几个句子的相似度则偏高,接近0.3,这两种方法计算得到的结果与人工理解的自然语义不相符。文中的方法,综合了语义与结构的分析,得到句子2、3和1的相似度较高,其余句子相似度低于0.11,这与自然理解比较接近,表明此方法是可行的。对实验结果进行分析,影响句子相似度的主要有以下两个因素:1)分词使用中科院的开源项目Ictclas实现,是基于词典,它的分词结果和人工分词存在差距,比如对未登录词的识别;2)句子的结构相似度使用词形和句长特征表示,不够精确,不同语气类型的句子带有一定的隐含意义,如疑问句是提出问题,而反问句则是通过一种疑问的句式表达肯定的观点等。

3 结束语

句子相似度在信息处理中占有重要的地位,文中的方法相对于单一考虑语义或者是结构的方法在计算结果的准确度和可接受度上有所提高,解决了信息检索的部分难题。自然语言语义理解丰富,同一个词语从不同的角度在不同的语境中,意义都有很大不同。基于知网的语义理解运用的是哲学的知识,反映了它对客观世界的认识和把握。知网系统的形成存在人为的主观意识,因此不可避免的对语义的理解也会有某些偏差。另外对句子结构相似度的计算目前还只是考虑到了词形和句长,对词性、语义距离、句子类型等的研究还不够,后续的研究将主要集中在消除词语语义理解歧义和对句子结构相似度的把握,使句子相似度的计算更加准确。

[1] Lee Ming Che.A novel sentence similarity measure for semantic-basic expert systems[J].Expert System with Applications,2011(38):6 392-6 399.

[2] 舒晓明.基于语义网的个性化信息检索的研究与实现[D].沈阳:沈阳工业大学,2011.

[3] 王 品,黄广君.信息检索中的句子相似度计算[J].计算机工程,2011,37(12):38-40.

[4] 王 桐,王 磊,吴吉义,等.WordNet中的综合概念语义相似度计算方法[J].北京邮电大学学报,2013,36(02):98-101.

[5] 刘 群,李素建.基于“知网”的词汇语义相似度的计算[C]∥第三届汉语词汇语义学研讨会,中国台北,2002:59-76.

[6] 何维.基于多示例学习的中文文本表示及分类研究[D].大连:大连理工大学,2009.

[7] 王荣波,池哲儒,常宝宝,等.基于词串粒度及权值的汉语句子相似度衡量[J].计算机工程,2005,31(13):142-144.

[8] 田久乐,赵 蔚.基于同义词词林的词语相似度计算方法[J].吉林大学学报(信息科学版),2010,28(06):602-608.

[9] 姜 华,韩安琪,王美佳,等.基于改进编辑距离的字符串相似度求解方法[J].计算机工程,2014,40(01):222-227.

猜你喜欢

计算方法语义词语
容易混淆的词语
浮力计算方法汇集
找词语
语言与语义
词语欣赏
“上”与“下”语义的不对称性及其认知阐释
随机振动试验包络计算方法
不同应变率比值计算方法在甲状腺恶性肿瘤诊断中的应用
一枚词语一门静
认知范畴模糊与语义模糊