词语相似度算法的分析与改进摘要:对现有的词语相似度算法进行分析,提出一种基于知网,面向语义、可扩展的词语相似度计算方法,通过对实验结果进行分析,所提出的词语语义相似度计算方法比以前的方法更好,在计算词语相似度时,准确率更高。
关键词:词语相似度算法;义原相似度计算;概念词的相似度计算;非概念词的相似度计算在建立主观题评分模型时,要判断句子的相似度,计算句子的相似度时,首先要处理的就是词语的相似度计算工作。
目前对词语的相似度计算人们已经做了大量的研究,提出了一些较有代表性的计算方法。
主要包括以下几种:1)基于字面信息的词语相似度计算这种算法的核心内容是:中文词语的构成句子中,一般较核心的内容都放在句子的后面。
句子后面的词语在句子中所起到的作用比靠前的词语大。
因此在对句子进行分析时需要给后面的字或词赋予较高的权值。
假设a和b分别代表两个词语,按照此算法,词语之间的相似度计算公式可以表示为公式1。
使用字面信息作为相似度计算的算法较简单,实现起来也方便。
但该算法准确率不高,尤其是对于语义相似的词语更是难于处理。
2)基于词林的词语相似度计算对于以同义词词林作为语义分类体系进行词语相似度计算的研究,王斌和章成志都曾作了相关探讨[1]。
其核心思想是使用两个词语的语义距离来表示词语间相似度。
当处理对象是一个词组或短语时,首先将其切分为义类词,并将义类词在词林的树状结构中提取出相关的语义编码,并对两个词语的语义编码进行相似度计算。
基于词林的词语相似度计算较好的解决了语义相似、词形不同的词语相似度计算,但由于语义词典的完备性问题,必然会存在部分不在语义词典中的词语而无法处理。
3)基于知网的词语相似度计算知网以概念作为描述对象,从关系层次上揭示词语的概念含义,并建立了概念关系网络,包含词语属性以及属性间关系[2]。
刘群、李素建从知网的关系描述出发,研究了同一个词义所具有的多个义原间的关系,并试图计算出这些义原在计算相似度时所起到的作用,并根据这种思想提出了使用知网的语义信息来计算词语相似度的算法。
该算法在计算概念词的相似度时较准确,但在计算概念词与非概念词,非概念词与非概念词的相似度时,准确率不高。
为克服这些问题,我们采用知网作为语义资源,结合信息论中的相关理论,提出了一种面向语义的、可扩展的、多策略混合的词语相似度计算模型。
1 义原相似度计算词语的相似度计算,最终还是要计算各词语的义源相似度。
在知网中,所有词语都包含义原信息,应用知网进行相似度计算时,第一步就是要计算义原的相似度。
文献中刘群从两个义原的距离出发,按照相似度的计算过程给出了一个计算词语间相似度的公式[3],如公式2所示:公式2中和表示两个义原;是和在知网中义原层次上的路径长度,是一个可调节的权值参数。
但是,此方法中的取值大小没有固定的判断方法,而且以距离的倒数作为相似度的计量基准也不能全面的表示出词语的相似度信息。
我对刘群提出的义原相似度进行改进,先给出义原深度的概念:定义1:义原深度,指义原在知网的语义层次体系中所处的层数信息,记为。
定义2:重合度,指知网中的两个义原和在深层含义中拥有相同祖先结点的路径长度,记为。
定义3:相异度,指知网中两个义原和在义原层次中沿着父节点逐层上移,直到两个节点相遇所走过的最短路径长度,记为从相异度的定义可知它与语义距离相同。
根据上面的义原深度、重合度以及相异度对义原的定义,我们使用下面的公式3来计算义原间的相似度:从公式3可看出,义原的相似度等于两个义原的相同部分与相同部分和相异部分之和的比值。
两义原相同部分与相异部分之和等价于两个义原各自的义原深度的和,因此公式3又可以写为公式4:采用上面的方法在计算义原相似度的过程中,利用了知网提供的上下位关系。
应用知网计算词语的相似度时,还要考虑词语间、词语和义原之间的相似度计算。
比较有效的做法是先把词语转化成义原表达式,再计算义原与义原之间的相似度。
2 概念词的相似度计算词语分为概念词和非概念词,概念词指的是需要计算相似度的词都是存在于知网中的概念,非概念词则相反。
在应用知网进行概念词相似度计算时,将其分为4个部分:①知网中首要基本义原,即词语属性中的def项中在第一位置的义原描述式;②知网中其他基本义原,即词语属性中的def项中除第一位置以外的义原;③知网中的关系义原,即词属性列表中的def项中的描述形式为:“关系义原=基本义原”,“关系义原=(具体词)”,以及“(关系义原=具体词)”;④知网中的符号义原,即词属性列表中的def项中使用类似”关系符号基本义原”或者“关系符号(具体词)”来描述信息的内容。
在应用义原描述进行相似度计算的过程中,将这4部分的相似度分别表示为和。
在这样的条件下,整个概念词的相似度计算表达式可以表示为如下公式5的形式:在公式5中,是可以调节的参数,用来调整各部分在计算中的重要程度,其关系满足:,且有有了整个概念词的相似度计算形式,下面分别计算这四个部分中每一个部分的相似度。
①知网中第一基本义原:假设在知网的义原中,有两个不相同的概念和,它们的第一基本义原分别记为和,根据公式4可以求出其相似度表达式为公式6:②知网中其他基本义原:假设在知网的义原中,两个互不相同的概念和,它们的其他基本义原分别记为集合和,那么这一部分的相似度计算过程如下所示。
算法1:其他基本义原的相似度计算③知网中的关系义原:在知网中的词语解释中,关系义原相似度计算可以认为是一个集合运算的过程,流程与②类似。
当前集合在对词语进行相似度计算时,首先要对词语的类型进行判断,根据判断的结果进行下一步的运算。
如果判断的结果不同,那么说明两个义原的相似度为0;如果判断的结果相同,则取出等号右侧的义原项,然后根据公式4计算其相似度。
④知网中的符号义原:在知网中的词语描述信息中,这一部分的配对分组和算法流程与关系义原描述式类似,即先判断其关系类型是否相同,然后根据判断结果做下一步的判断,只有当出现符号相同的情况下才去计算配对义原的相似度。
3 非概念词的相似度计算非概念词可以分解为两个或多个概念词。
如果能够根据构成非概念词的概念获得非概念词语对应的语义表达式,就可以按照概念词之间的相似度计算模型,通过语义表达式对非概念词进行语义相似度计算。
非概念词的相似度计算主要涉及三个部分:非概念词的概念切分、组合概念的语义确定和组合概念的相似度计算。
1)非概念语的概念切分对非概念词的切分工作用到的方式是逆向最大匹配法,将非概念词切分为一个词语串,例如:“私有化”→“私有”、“化”,“歌舞厅”→“歌”、“舞厅”。
2)组合概念的语义确定下面给出几个组合概念的定义:定义4:原子概念,原子概念指的是在知网中已经存在的概念描述。
在对非概念词进行切分时,原子概念可以作为其切分的根据,在语义表示上,原子概念具有固定的语义表达式。
定义5:基本组合概念,基本组合概念是指由两个原子概念组合在一起所构成的新词语。
我们可以从构成的两个原子概念的语义表达式中通过推理来得到基本组合概念的语义表达式。
定义6:扩展组合概念,扩展组合概念指的是由两个或两个以上的原子概念或者原子概念与基本组合概念组合在一起所构成的新词语。
我们可以通过两个或多个构成元素来推理出扩展组合概念的语义表达式。
定义7:组合概念,组合概念指的是基本组合概念和扩展组合概念的统称。
定义8:参照概念,指的是为确定在知网中的基本组合概念各义原间所包含的关系而提供的一个原子概念。
应用参照概念信息来生成基本组合概念的语义表达式,我们采用如下的算法。
首先假设基本组合概念s是由两个原子概念和所构成,在使用原子概念作为参照概念时,生成基本组合概念s的语义表达式的算法过程如下所示。
算法2:生成基本组合概念s的语义表达式初始化:def(s)=def(p2),ps(s)=ps(p2);ref_set= def(pref)-{ps(pref)};t= ps(s)与ps(pref)的概念相似度;if ( ) def(s)= ps(s)∪(def(s)∩ref_set );for each pi in def (p1) do最大相似度等于零, pos等于零;for each qj in ref_set do如过pi或qj为知网中的关系义原或者符号义原,则转换为普通义原if sim(pi,qj)>最大相似度 then最大相似度= sim(pi,qj); pos=j;endifendforif (pos>0) and (t×最大相似度 >ω) thenp pi, 且p的附加符号与qpos相同;elsep pi ;endifdef(s)= def(s)∪{p};endfor在算法2中,,用来调整参照概念在计算中的重要程度。
组合概念的语义表达式算法中,部分在实际应用时不同于一般意义上的集合相交操作,而是有其自己的操作方式,在本系统的实现中,运算方式如下面所示:首先,从两个候选集合中各任意抽取一个义原参与运算,并计算这两个义原的相似度;然后,如果计算的相似度值大于预先设定的阈值ξ,则相交运算的结果为p1,同时删除两个义原,如果相似度值小于或等于阈值ξ则直接删除义原p1;循环执行上面两个步骤,算法停止条件是def(s)为空或者ref_set为空。
对于扩展组合概念来说,其语义生成方式可以采用反向组合的运算过程来实现。
这里首先假设扩展组合概念ecc=p1p2…pn,计算ecc的语义表达式的算法为:首先,从候选集合中抽取出最后两个原子概念和,使用基本组合概念的语义计算方式计算这两个原子概念的组合语义,并记为def(ecc);然后,把组合语义def(ecc)看作是知网中一个原子概念的语义表达式,循环合并def(ecc)和,并将每次合并结果重新记为def(ecc);最后计算得到的def(ecc)就是扩展组合概念ecc 的语义表达式,并将其作为结果输出。
4 实验结果与分析我们采用的实验方式:采用人工判别的方法,给出了答案中一部分词对的相似度,由人工来判断这个数值是否与人的直觉相符合。
考虑程序运行时间的因素,在实验部分我们只对比了三种方法:①基于语句中的字面信息相似度计算方法;②基于知网的词汇语义相似度计算方法;③本文提出的方法。
按照前面提供的计算词语相似度的公式,根据对参数的训练,得出每个方法的最优参数,分别设定如下,来进行相似度的计算。
方法①:α=0.5,β=0.5;方法②:α=1.6,β1=0.5,β2=0.2,β3=0.17,β4=0.13,γ=0.2,δ=0.2;方法③:β1=0.5,β2=0.2,β3=0.17,β4=0.13,γ=0.2,δ=0.2,θ=0.5,ξ=0.6,ω=0.8;我们选取了10组词语,并把非概念词用下划线予以标注,结果如表1所示。