首页> 中国专利> 一种基于信息量的句子相似度计算方法

一种基于信息量的句子相似度计算方法

摘要

本发明涉及一种基于信息量的句子相似度计算方法,包括以下步骤:首先,通过两个句子词语间具有最大的信息量的概念确定词语的词义;然后利用语义网的层次结构和语料库统计来计算词语的信息量和多词语间的公共信息量;接下来应用组合数学中容斥原理计算多个词语的总信息量,从而分别得到两个句子各自的信息量,以及两个句子总共的信息量;最后根据Jaccard相似度原理定义并计算出句子的相似度。本发明能逼真的模拟人类对句子相似程度的判断,并且不需要使用语料训练参数或使用经验参数、不依赖语料库的规模、无需词性标注等其他自然语言处理技术;时间性能优秀,对一般长度的句子对,在当前主流多核PC机上获得准实时计算效率。

著录项

  • 公开/公告号CN104090918A

    专利类型发明专利

  • 公开/公告日2014-10-08

    原文格式PDF

  • 申请/专利权人 北京理工大学;

    申请/专利号CN201410268361.4

  • 发明设计人 吴昊;黄河燕;

    申请日2014-06-16

  • 分类号G06F17/30;

  • 代理机构

  • 代理人

  • 地址 100081 北京市海淀区中关村南大街5号北京理工大学

  • 入库时间 2023-12-17 01:54:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-22

    授权

    授权

  • 2014-10-29

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140616

    实质审查的生效

  • 2014-10-08

    公开

    公开

说明书

技术领域

本发明涉及一种句子相似度计算方法,具体涉及一种基于信息量的句子相似度计算方法,属于自然语言处理技术领域。 

背景技术

句子或短文本相似度计算是自然语言处理的一项重要研究内容,近年来在信息检索、机器翻译、问答系统、自动文摘等应用领域中的作用越来越重要。传统的方法多采用文档相似度的计算方法,仅把句子词语看成相互没有关联的无意义符号,对于计算含有少量词语的句子不够精确。而目前常用的混合方法通常需要在相关数据集上训练参数或者使用经验参数,其缺点是依赖训练数据集,通用性不强。 

发明内容

本发明方法的目的在于解决上述问题,提供一种基于信息量的句子相似度计算方法,通过使用信息量这个语言的本质属性,使用容斥原理获得精确的多个词语的总信息量,从而得到更接近于人主观判断得到的句子相似度结果。 

本发明方法的思想是首先通过两个句子词语间具有最大的信息量的概念确定词语的词义;然后利用语义网(比如WordNet)的层次结构和语料库(比如BNC语料库或Brown语料库等)统计来计算词语的信息量和多词语间的公共信息量;接下来应用组合数学中容斥原理计算多个词语的总信息量,从而分别得到两个句子各自的信息量,以及两个句子总共的信息量;最后根据Jaccard相似度原理定义并计算出句子的相似度。 

为达到上述目的,本发明采用的技术方案是: 

一种基于信息量的句子相似度计算方法,包括以下步骤: 

步骤1:输入待计算的两个句子sa和sb,记句子sa和sb分别为: 

sa={wia|i=1,2,...,n}

sb={wib|i=1,2,...,m}

其中,和分别表示句子sa和sb的第i个词语,n和m分别表示句子sa和sb的词语数; 

步骤2:对输入句子中的词语进行词义选择,过程如下: 

词语的词义按照式1确定: 

[式1] 

cia=arg>maxcsubsum(c1,c2)c1consept(wia)c2consepts(sb){-logP(c)}

其中,subsum(c1,c2)为在语义网中包含概念c1和c2的所有概念集合, 表示在语义网中所有包含词语的概念的集合,consepts(sb)表示语义网中包含句子sb中的所有词语的概念的集合,P(c)为概念c在语料库中的频率,特殊的,如果P(c)为0,则logP(c)为0,P(c)的值按照式2确定: 

[式2] 

P(c)=Σw∈words(c)count(w)/N 

其中words(c)表示语义网中概念c以及概念c的所有子概念中的所有词语的集合,count(w)为词语w在语料库中的频数,N表示语义网中全部概念的频数之和,而每个概念的频数为该概念中全部词语在语料库中的总频数之和; 

同理,将式1中替换成consepts(sb)替换成consepts(sa),可得句子sb中第i个词语的词义

词义确定后句子sa和sb可以记为: 

sa={cia|i=1,2,...,n}sb={cib|i=1,2,...,m}

步骤3:根据步骤2所得确定词义的句子,应用组合数学中的容斥原理计算句子sa和sb各自的信息量以及二者的总信息量,计算过程如下: 

句子sa的信息量IC(sa)的计算公式如式3所示: 

[式3] 

IC(sa)=Σk=1n(-1)k-1Σ1i1<i2<···<ikncommonIC(ci1a,ci2a,···,cika)

其中,表示通过语义网的层次结构和语料库统计共同构建的语义信息空间,根据式4计算: 

[式4] 

commonIC(ci1a,ci2a,···,cika)=maxcsubsum(ci1a,ci2a,···,cika)[-logP(c)]

其中,为在语义网中包含概念的所有概念的集合; 

同理,把式3和式4中所有字母a替换成b,n替换成m,可得句子sb的信息量; 

把句子sa和sb中所有不重复的词语的集合看成一个新的句子,则通过式5得到句子sa和sb的总信息量IC(sa∪sb): 

[式5] 

IC(sasb)=Σk=1p(-1)k-1Σ1i1<···<ikpcommonIC(ci1a,···,cikb)

其中,p为句子sa和sb不重复的词语的总数; 

步骤4:由并集和交集之间的关系定义两个句子sa和sb的公共信息量COMMONIC(sa,sb),计算公式如式6所示: 

[式6] 

COMMONIC(sa,sb)=IC(sa)+IC(sb)-IC(sa∪sb

步骤5:根据Jaccard相关性原理,定义句子sa和sb的相似度sim(sa,sb),计算公式如式7所示: 

[式7] 

sim(sa,sb)=COMMONIC(sa,sb)IC(sasb)

步骤6:输出两个句子的相似度sim(sa,sb)。 

有益效果 

对比现有技术,本发明方法进一步提高了混合方法的精确度,能逼真的模拟人类对句子相似程度的判断,并且不需要使用语料训练参数或使用经验参数、不依赖语料库的规模、无需词性标注等其他自然语言处理技术,可以直接用于句子相似度计算,具有较好的通用性;时间性能优秀,对一般长度的句子对,在当前主流多核PC机上获得准实时计算效率。 

附图说明

图1是本发明方法的流程图。 

图2是本发明方法与其他方法对比图。 

具体实施方式

下面将结合附图对本发明的实施过程进行详细说明。 

如图1所示,本发明方法主要分为5个步骤: 

步骤1:输入待计算的两个句子。记句子sa和sb分别为: 

sa={wia|i=1,2,...,n}

sb={wib|i=1,2,...,m}

其中,和分别表示句子sa和sb的第i个词语,n和m分别表示句子sa和sb的词语数。 

步骤2:因词语的一词多义现象普遍存在,对输入句子的词语进行词义选择,可以消除句子语义的不确定性,从而为后续计算句子相似度做准备。具体过程如下: 

(1)在输入的两个句子中,各选取一个词语组成词语对; 

(2)使用语义网(比如WordNet)中词语的词义(或概念)来代替词语,该词语对转换成多个词义对; 

(3)计算词义对之间的公共信息量; 

(4)选取最大的公共信息量作为该词语对的公共信息量; 

(5)把所有词语对的公共信息量按照从大到小排序; 

(6)定义两个数组,用来记录每个句子中词语的词义,并初始化数组中的所有元素值为未确定词义; 

(6)按照(5)的顺序依次处理,如果词语的词义还没有确定,即词语在数组中对应的元素值仍为未确定词义,则把该信息量对应的词语的词义记录到 词义数组中; 

(7)直到数组元素值没有未确定词义为止,即全部词语的词义确定完毕。 

则词语的词义(或概念)按照如式1确定: 

[式1] 

cia=arg>maxcsubsum(c1,c2)c1consept(wia)c2consepts(sb){-logP(c)}

其中 

[式2] 

P(c)=Σw∈words(c)count(w)/N 

这里,subsum(c1,c2)为在语义网中包含概念c1和c2的所有概念集合, 表示在语义网中的所有包含词语的概念的集合,consepts(sb)表示语义网中包含句子sb中的所有词语的概念的集合,P(c)为概念c在某语料库中的频率。特殊的,如果P(c)为0,则logP(c)为0; 

words(c)表示语义网中概念c以及概念c的所有子概念中的所有词语的集合,count(w)为词语w在某一语料库中的频数,N表示语义网中全部概念的频数之和,而每个概念的频数为该概念中全部词语在语料库中的总频数之和。 

同理可得句子sb中第i个词语的词义词义确定后句子sa和sb可以记为: 

sa={cia|i=1,2,...,n}

sb={cib|i=1,2,...,m}

步骤3:根据步骤2所得确定词义的句子,应用组合数学中的容斥原理计算句子sa和sb各自的信息量,即句子sa的信息量的计算公式如式3所示: 

[式3] 

IC(sa)=Σk=1n(-1)k-1Σ1i1<i2<···<ikncommonIC(ci1a,ci2a,···,cika)

其中 

[式4] 

commonIC(ci1a,ci2a,···,cika)=maxcsubsum(ci1a,ci2a,···,cika)[-logP(c)]

这里,表示通过语义网的层次结构和语料库统计共同构建的语义信息空间中概念的交集,为在语义网中包含概念的所有概念的集合,对于取值在1至n之间的任意k,表示句子sa中取k个词的一种组合。 

同理,把式3和式4中所有字母a替换成b,n替换成m,可得句子sb的信息量。 

把句子sa和sb中所有不重复的词语的集合看成一个新的句子,则通过式5得到句子sa和sb的总信息量: 

[式5] 

IC(sasb)=Σk=1p(-1)k-1Σ1i1<···<ikpcommonIC(ci1a,···,cikb)

其中,p为两个句子不重复的词语总数。 

步骤4:通过步骤3得到的两个句子各自的信息量以及两个句子的总信息量。由并集和交集之间的关系得到两个句子sa和sb的公共信息量COMMONIC(sa,sb)如式6所示: 

[式6] 

COMMONIC(sa,sb)=IC(sa)+IC(sb)-IC(sa∪sb

步骤5:通过步骤3和步骤4得到的两个句子的总信息量和公共信息量,根据Jaccard相关性原理,两个句子sa和sb的相似度可通过式7计算: 

[式7] 

sim(sa,sb)=COMMONIC(sa,sb)IC(sasb)

如上所述,本发明提供了一种基于信息量的句子相似度计算方法。通过用户输入的真实句子对,系统将自动计算出逼真于人类对句子相似度判断的结果。 

下面给出本发明方法与现有其他4种句子相似度计算方法的比较结果。实验中使用了的语义网WordNet和语料库BNC。评估采用线性相关的Pearson相关系数(PCC),一般排序相关的Spearman rank相关系数(SRCC)和概率排序相关的Kendall rank相关系数(KRCC)。表1为对词语对应句子对采用各种方法的打分结果。 

表1句子对的人工打分和各种方法打分 

从表1可得到图2。从图2中可以看到,本文方法在PCC、SRCC和KRCC上都优于其他4种方法,说明模型对句子相似度的判断更接近人类的主观判断。 另外,人工数据集的单一志愿者打分与全部志愿者打分均值之间的PCC均值为0.825,最大值为0.921;而本发明方法的PCC为高于单人打分的平均值且低于单人打分的上限值;说明模型对句子相似度的判断水平高于人的平均水平,且结果可信。 

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号