一种结合依存关系与同义词词林的语义相似度计算方法与流程

文档序号:20513547发布日期:2020-04-24 18:49阅读:201来源:国知局
一种结合依存关系与同义词词林的语义相似度计算方法与流程

本发明涉及自然语言处理中的web信息可信分析、搜索引擎、web服务发现、文本聚类研究和标识释义等领域。



背景技术:

在语义相似度的研究方法中,主要分为基于词向量的语义距离相似度计算方法和基于语法结构的语义相似度计算方法。其中,基于词向量的语义距离相似度计算,是将文本中的词频转化为词向量的形式,然后在词向量的基础上去计算空间距离的长度,以此来表示文本的语义距离相似度。目前,主流的词向量转化方法是tf-idf(termfrequency–inversedocumentfrequency)方法。使用tf-idf方法将中文文本转化成词向量,比较不同词向量在线性空间中的相似度有余弦距离、欧氏距离、概率分布距离(k-l距离)等方法。有些文献使用向量空间模型计算文本的语义相似度,使用tf-idf算法将文本转化为词向量,然后将这些词向量映射到文本向量空间,这样就将一组文本之间的匹配问题转化为求向量空间的距离问题。但是,基于向量空间模型的语义相似度只是单纯的计算词向量之间的空间距离,没有考虑句子中词语的词序和句子的结构信息对句子语义的影响。还有一些文献,使用基于词性信息的改进tf-idf算法去计算每个词向量之间的权重系数,然后将这些权重系数应用到向量空间和马尔可夫模型中,分别计算它们的语义相似度,最终获得整体的语义相似度。但是,这些文献没有精确的反映出每个词向量之间的语义关联。

在基于语法结构的语义相似度计算方法中,最广泛应用的语法结构是依存句法结构,依存句法是法国语言学家l.tesnier提出的,这种句法结构将句子的内部成分之间的依赖关系更加清楚地呈现在研究者面前。语义依存关系能准确反映句子成分之间的搭配关系,有些文献利用句子的关键依存关系来匹配相似度,但是只使用依存关系中的词来计算依赖关系的相似性,不能准确地反映句子的内部语义关系。有的文献对中文依存句法树进行研究和分析,提出一种细粒度依存关系的相似度计算方法,该方法基于依存句法树中的各节点的词语、词性以及它们之间的依赖关系及其重要性权重等多个特征值,给出了两个依存句法结构的相似度计算方法。但计算复杂度特别大,当文本的句长特别大时,消耗的时间较多,影响文本的语义相似度计算的效率。

而目前针对基于依存关系的语义相似度计算方法中,只考虑文本中词语的词序信息和句子的结构信息,而忽略文本中单个词语之间的词义信息,本发明在基于依存关系的语义相似度计算方法基础上,增加了基于同义词词林的词语语义相似度计算方法,较好地解决上述问题,弥补以上不足。



技术实现要素:

一种结合依存关系与同义词词林的语义相似度计算方法,该方法首先从文本中提取出依存关系图,接着从依存关系图中提取出依存关系路径集合,通过比较两个文本之间关系路径的相似度,从而得到两个文本之间的语义相似度。其特征在于,在计算关系路径的相似度时,用了基于同义词词林的词语语义相似度计算方式,以及之后基于关系路径相似度的文本之间的语义相似度的计算方法。

所述关系路径间的语义相似度计算方法如下:

首先用下面的表达方式来表示一条关系路径pi:

pi=<<w1,r1>,…,<wi,ri>,…,<wn,rn>>,其中i=1,2,…,n

其中,wi为关系路径上的一个顶点,ri为指向顶点的有向边的依存关系,n为关系路径pi的长度。

关系路径pi和关系路径pj之间的语义相似度计算公式如下:

其中,k表示依存关系在依存路径中的位置序号;m和n分别是关系路径pi和pj的长度;表示在关系路径pi中第k个位置处的依存关系;表示依存关系的权重,是一系列提前设置好的常数;为关系路径pi和关系路径pj中第k个位置处对应的词语之间的语义相似度,在计算词语之间的语义相似度时用了基于同义词词林的语义相似度计算。

基于以上关系路径间的语义相似度计算方法,便可以计算两个文本a和b之间的语义相似度,计算方法如下:

首先提取文本a的关系路径集合пa,以及文本b的关系路径集合пb,并根据关系路径长度对关系路径集合пa和пb进行分类。t1表示对пa分类后的关系路径长度为i的关系路径集合,t2表示对пb分类后的关系路径长度为i的关系路径集合;然后按照前述关系路径间的语义相似度计算方法,计算t1和t2之间的语义相似度矩阵mab(i),要求是t1中的每一条关系路径都要分别和t2中的每一条关系路径求语义相似度,其中,t1中的关系路径有x个,t2中的关系路径有y个,则总共可以得到x×y个关系路径语义相似度,这x×y个关系路径语义相似度共同组成了t1和t2的相似度矩阵mab(i),x×y维的矩阵mab(i)表示如下:

其中,表示集合t1中的第s条关系路径,表示集合t2中的第t条关系路径,t1中共有x条关系路径,t2中共有y条关系路径,i表示集合t1和t2中每条关系路径的长度。

根据t1和t2的相似度矩阵mab(i),便可以求得集合t1和t2的语义相似度xwss(i),xwss(i)等于上述相似度矩阵mab(i)每一行的最大值的和的均值,用公式表示如下:

其中,i表示集合t1和t2中关系路径的长度;t1中共有x条关系路径,t2中共有y条关系路径;k的取值从1到x;j的取值从1到y;pk是t1中的一条关系路径,pj是t2中的一条关系路径。

进一步就可以得到文本a和文本b之间的语义相似度,计算方法如下:

max_path_count_a为文本a的关系路径集合中最长的一条关系路径的长度,max_path_count_b为文本b的关系路径集合中最长的一条关系路径的长度,从max_path_count_a和max_path_count_b中选择较小值作为h,将文本a和文本b中的关系路径按照长度从1到h进行分类,关系路径长度相同的归为一个集合,然后分别计算文本a和b所形成的关系路径长度相同的集合之间的语义相似度xwss(i),i代表集合中关系路径的长度。然后根据下式计算文本a和文本b之间的语义相似度:

其中,h=min(max_path_count_a,max_path_count_b),θi表示不同关系路径长度上的语义相似度权值,长的关系路径更多表示的是文本中词语与词语的间接关系,所以θi和关系路径的长度成反比,在本方法中θi=k/i,且设k为满足式的一个值,i表示集合中关系路径的长度。

最后计算得到的xwss(ab)便是文本a和文本b之间的语义相似度。

有益效果

实验结果表明,结合依存关系与同义词词林的语义相似度方法在准确率上相较于基于同义词词林的语义相似度计算方法和基于依存关系的语义相似度计算方法有了一定的提高。

附图说明

附图1为依存关系与同义词词林相结合的语义相似度模型。

附图2为文本a“新生儿是祖国的未来。”的依存句法分析。

附图3为文本b“儿童是祖国的未来。”的依存句法分析。

附图4为文本a“新生儿是祖国的未来。”的依存关系图。

附图5为文本b“儿童是祖国的未来。”的依存关系图。

具体实施方式

下面以简单的文本为例,结合附图对本发明的具体实施方式做进一步的叙述。假设文本a是“新生儿是祖国的未来。”,文本b是“儿童是祖国的未来。”,文本a的依存句法分析图见附图2,依存关系图见附图4,文本b的依存句法分析图见附图3,依存关系图见图5。

本发明所涉及方法的流程包括以下步骤:

一、提取依存关系图中的关系路径,此为公知技术,详细如下:

关系路径p可以表示为从依存关系图的节点v0开始,到节点vn结束中间所经过的一系列边(es为依存关系图中所有边的集合)和顶点(vs为依存关系图中所有顶点的集合)所构成的集合。且满足以下两个条件:

1.连接性:

2.无环性:

关系路径的提取算法如下:

1.算法输入:依存关系图rs=(vs,es),图中所有顶点的集合vs,图中所有相邻边的集合es。且满足条件:v∈vs(u≠v),使得e=(u,v)。

2.初始化顶点集合s为空集,初始化关系路径集合c为空集;

3.将x添加到s中;

4.若满足((u,v)∈es)∨((v,u)∈es),则将v添加到集合s中;

5.寻找s中所有节点之间存在的路径p=<vi,…,vj,…,vn>,vi,vj,vn∈s。令p’=<vn,…,vj,…,vi>,vn,vj,vi∈s。若则将p添加到关系路径集合c中;

6.若s≠vs,转到3。否则,算法结束,返回关系路径集合c。

由上述关系路径的提取算法及文本的依存关系图,可以得到文本a的关系路径:

{(是,<v,hed,root>),(新生儿,<n,sbv,v>)}、{(新生儿,<n,sbv,v>),(是,<v,hed,root>),(未来,<nt,vob,v>)}、{(新生儿,<n,sbv,v>),(是,<v,hed,root>),(未来,<nt,vob,v>),(祖国,<n,att,nt>)}、{(是,<v,hed,root>),(未来,<nt,vob,v>)}、{(是,<v,hed,root>),(未来,<nt,vob,v>),(祖国,<n,att,nt>)}、{(未来,<nt,vob,v>),(祖国,<n,att,nt>)}。

同样可以得到文本b的关系路径:

{(是,<v,hed,root>),(儿童,<n,sbv,v>)}、{(儿童,<n,sbv,v>),(是,<v,hed,root>),(未来,<nt,vob,v>)}、{(儿童,<n,sbv,v>),(是,<v,hed,root>),(未来,<nt,vob,v>),(祖国,<n,att,nt>)}、{(是,<v,hed,root>),(未来,<nt,vob,v>)}、{(是,<v,hed,root>),(未来,<nt,vob,v>),(祖国,<n,att,nt>)}、{(未来,<nt,vob,v>),(祖国,<n,att,nt>)}。

二、基于同义词词林的词语语义相似度计算,此为公知技术,详细如下:

根据下面的算法流程,可以计算得到基于同义词词林的两个词语的语义相似度:

1.算法输入:两个词语s1和s2;

2.查询同义词词林,分别获得词语s1和s2的编码形式code1和code2;

3.遍历code1和code2,如果code1和code2的编码形式都相同,则sensesim(s1,s2)=1,sensesim(s1,s2)表示词语s1和词语s2基于同义词词林的语义相似度的值,同时返回到第5步,反之,到第3步;

如果code1和code2的编码形式除标记位相同,若标记位等于“=”符号或“@”符号(详情参见同义词词林的编码格式说明),则sensesim(s1,s2)=1,否则,sensesim(s1,s2)=0.5,同时同时返回到第5步,反之,到第4步;

4.如果code1和code2的编码形式的前i-1位编码都相同,而第i位编码不同,确定i在同义词词林树状结构中的层数j,则sensesim(s1,s2)=1/(12-(2*j));

5.返回词语语义相似度sensesim(s1,s2)。

以文本a中的词语“新生儿”和文本b中的词语“儿童”为例,词语“新生儿”的同义词词林编码形式为“ab04a01”,词语“儿童”的同义词词林编码形式为“ab04b01”,它们的编码形式在第5位不同,这个位置在同义词词林树状结构中的层数为4,所以“新生儿”和“儿童”的词语语义相似度为1/(12-2×4)=0.25。

三、关系路径间语义相似度的计算

用下面的表达方式来表示一条关系路径pi:

pi=<<w1,r1>,…,<wi,ri>,…,<wn,rn>>,其中i=1,2,…,n

其中,wi为关系路径上的第i个顶点,ri为指向第i个顶点的有向边的依存关系,n为关系路径pi的长度;

如文本a中的一条关系路径{(是,<v,hed,root>),(新生儿,<n,sbv,v>)}可以用上述方式表示为:<<是,hed>,<新生儿,sbv>>。

然后可以用公式

计算出关系路径间的语义相似度。其中,k表示依存关系在依存路径中的位置序号;m和n分别是关系路径pi和pj的长度;表示在关系路径pi中第k个位置处的依存关系;表示依存关系的权重,是一系列提前设置好的常数,具体数值见表1;为关系路径pi和关系路径pj中第k个位置上对应的词语之间的语义相似度。在计算词语之间的语义相似度时用了基于同义词词林的语义相似度计算。

以文本a的一条关系路径<<是,hed>,<新生儿,sbv>>和文本b的一条关系路径<<是,hed>,<新生儿,sbv>>为例,由前面的叙述可知词语“新生儿”和词语“儿童”的基于同义词词林的相似度sensesim(新生儿,儿童)等于0.25,又由下表可知,依存关系sbv(主谓关系)的权重w(sbv)等于0.433,w(hed)则等于0.250,便可以计算得到这两条关系路径间的语义相似度等于0.525。

表1:依存关系的权重表

四、文本之间的语义相似度计算

基于以上关系路径间的语义相似度计算方法,便可以计算文本a和b之间的语义相似度,计算方法如下:

首先提取文本a的关系路径集合пa,以及文本b的关系路径集合пb,并根据关系路径长度对关系路径集合пa和пb进行分类。如文本a的关系路径就可以分为三个集合,集合一中的关系路径长度都为2,集合二中的关系路径长度都为3,集合三中的关系路径长度都为4。文本b的关系路径同样也可以分为三个长度不同的集合。假设t1表示对пa分类后的关系路径长度为i的关系路径集合,t2表示对пb分类后的关系路径长度为i的关系路径集合;然后按照上述第三步中关系路径间的语义相似度计算方法,计算t1和t2之间的语义相似度矩阵mab(i),要求是t1中的每一条关系路径都要分别和t2中的每一条关系路径求语义相似度,其中,t1中的关系路径有x个,t2中的关系路径有y个,则总共可以得到x×y个关系路径语义相似度,这x×y个关系路径语义相似度共同组成了t1和t2的相似度矩阵mab(i),x×y维的矩阵mab(i)表示如下:

其中,表示集合t1中的第s条关系路径,表示集合t2中的第t条关系路径,t1中共有x条关系路径,t2中共有y条关系路径,i表示集合t1和t2中每条关系路径的长度。

以文本a的路径长度为3的关系路径集合sa3={<<新生儿,sbv><是,hed><未来,vob>>,<<是,hed><未来,vob><祖国,att>>}和文本b的路径长度为3的关系路径集合sb3={<<儿童,sbv><是,hed><未来,vob>>,<<是,hed><未来,vob><祖国,att>>}为例来说明上述语义相似度矩阵的计算过程。sa3中的每一条关系路径都要分别和sb3中的每一条关系路径求语义相似度,假设sa3中的第一条关系路径用sa3[1]表示,其他关系路径的下标表示可以类推得到,则总共要求s(sa3[1],sb3[1])、s(sa3[1],sb3[2])、s(sa3[2],sb3[1])、s(sa3[2],sb3[2])共四个关系路径相似度,其中前两个组成语义相似度矩阵的第一行,后两个组成语义相似度矩阵的第二行,最终得到一个2×2的语义相似度矩阵,记为mab(3)。于是,可以类似地得到文本a的路径长度为2的关系路径集合和文本b的路径长度为2的关系路径集合之间的相似度矩阵mab(2)以及文本a的路径长度为4的关系路径集合和文本b的路径长度为4的关系路径集合之间的相似度矩阵mab(4)。

根据t1和t2的相似度矩阵mab(i),便可以求得集合t1和t2的语义相似度xwss(i),xwss(i)等于上述相似度矩阵mab(i)每一行的最大值的和的均值,用公式表示如下:

其中,i表示集合t1和t2中关系路径的长度;t1中共有x条关系路径,t2中共有y条关系路径;k的取值从1到x;j的取值从1到y;pk是t1中的一条关系路径,pj是t2中的一条关系路径。

以文本a的路径长度为3的关系路径集合sa3和文本b的路径长度为3的关系路径集合sb3之间的语义相似度矩阵mab(3)为例来说明xwss(3)的计算过程。假设相似度矩阵mab(3)第一行元素s(sa3[1],sb3[1])、s(sa3[1],sb3[2])中的最大值为s(sa3[1],sb3[1]),第二行元素s(sa3[2],sb3[1])、s(sa3[2],sb3[2])中的最大值为s(sa3[2],sb3[1]),则xwss(3)=(s(sa3[1],sb3[1])+s(sa3[2],sb3[1]))/2。类似的,便可以计算得到文本a和文本b的xwss(2)和xwss(4)。

进一步就可以得到文本a和文本b之间的语义相似度,计算方法如下:

max_path_count_a为文本a的关系路径集合中最长的一条关系路径的长度,max_path_count_b为文本b的关系路径集合中最长的一条关系路径的长度,从max_path_count_a和max_path_count_b中选择较小值作为h,将文本a和文本b中的关系路径按照长度从1到h进行分类,关系路径长度相同的归为一个集合,然后分别计算文本a和b所形成的关系路径长度相同的集合之间的语义相似度xwss(i),i代表集合中关系路径的长度。然后根据下式计算文本a和文本b之间的语义相似度:

其中,h=min(max_path_count_a,max_path_count_b),θi表示不同关系路径长度上的语义相似度权值,长的关系路径更多表示的是文本中词语与词语的间接关系,所以θi和关系路径的长度成反比,在本方法中θi=k/i,且设k为满足式的一个值,i表示集合中关系路径的长度。

以文本a和b为例,来说明上式中k值的计算过程。文本a和b的关系路径长度的最大值都为4,则上述的h=4,则k+k/2+k/3+k/4=1,于是得到k=0.48。

假设已经计算得到了文本a和文本b之间的相似度xwss(2)、xwss(3)、xwss(4),以之为例来说明上式的计算过程。由于已经计算得到了k=0.48,所以xwss(ab)=0.48/2×xwss(2)+0.48/3×xwss(3)+0.48/4×xwss(4)=0.24xwss(2)+0.16xwss(3)+0.12xwss(4)。

最后计算得到的xwss(ab)便是文本a和文本b之间的语义相似度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1