【技术干货】自然语言语义相似度计算方法.docx
【技术干货】自然语言语义相似度计算方法 网络转载 导语:总体来看,文本相似度的计算方法主要分为两大类:一类是基于统计学的计算方法,此种方法需要大规模的语料库,并且在计算时没有考虑文本的句子构造信息和语义信息,计算的结果有时会与人对自然语言的理解不相符合;另一类是基于语义理解的计算方法,这种方法不需要大规模的语料库,但需要依赖于具有层次构造关系的语义词典,计算结果相对准确,与人对自然语言的理解较为符合。 计算机对主观题的自动评阅准确与否,主要取决于其对文本相似度的是否准确。由于文本相似度计算在文档复制检查、信息检索和机器翻译等领域都有特别广泛的应用,所以,近年来有越来越多的学者致力于文本相似度算法的研究。总体来看,文本相似度的计算方法主要分为两大类:一类是基于统计学的计算方法,此种方法需要大规模的语料库,并且在计算时没有考虑文本的句子构造信息和语义信息,计算的结果有时会与人对自然语言的理解不相符合;另一类是基于语义理解的计算方法,这种方法不需要大规模的语料库,但需要依赖于具有层次构造关系的语义词典,计算结果相对准确,与人对自然语言的理解较为符合。下面介绍几种经典的文本相似度计算方法,并对他们各自的性能进展扼要的分析。 1、基于向量空间模型的方法 向量空间模型简称VSM,是VectorSpaceModel的缩写,是近些年使用效果较好、且应用较为广泛的一种信息检索模型。在此模型中,文本被看作是由一系列互相独立的词语组成的,假设文档D中包含词语t1,t2,tN,那么文档表示为Dt1,t2,tN。由于文档中词语对文档的重要程度不同,并且词语的重要程度对文本相似度的有很大的影响,因此可对文档中的每个词语赋以一个权值w,以表示该词的权重,其表示如下:Dt1,w1;t2,w2;,tN,wN,可简记为Dw1,w2,wN,此时的wk即为词语tk的权重,1kN。这样,就把文本表示成了向量的形式,同时两文本的相似度问题也就可以通过两向量之间的夹角大小来计算了,夹角越大,两文本的相似度就越低。 基于向量空间模型的方法假设文本中的词语是互相独立的,因此可以用向量的形式来表示,这种表示方法简化了文本中词语之间的复杂关系,也使得文本的相似程度变得可以计算了。向量表示方法中词语的权值应该可以显示出该词语对整个文本的重要程度,一般用经过统计得到的词频来表示;向量的所有分量组合在一起,应该可以将此文本与其他文本区分开。 大量统计结果说明,文本中出现次数最多的词语往往是反映句子语法构造的虚词和文本作者想要阐述某个问题时所用的核心词,假如是围绕同一核心问题的文本,其核心词汇应该是类似的,所以这两类词对文本相似度的都是没有用的。因此,最高频词和低频词都不适宜做文本的特征词,只有词频介于最高频和低频之间的这局部词汇才合适做特征词。 在文本中出现频率较高的词语应该具有较高的权值,因此,在计算词语对文本的权重时,应考虑词语在文本中的出现频率,记为tf。仅考虑这一项为哪一项不够的,假如某一词语不仅在一个文本中出现,而是在文本集中的很多个文本中都有出现,例如“的字在中文文本中的出现频率应该是相当高的,但它对于我们区分各个文本是没有帮助的,也就是讲,这样的词语是不具备鉴别才能的。因此,在计算词语权重时还应考虑词语的文档频率df,即含有该词的文档数量。由于词语的权重与文档频率成反比,又引出与文档频率成反比关系的倒置文档频率idf,其计算公式为idf=logN/n其中N为文档集中全部文档的数量,n为包含某词语的文档数。由此得出特征词t在文档D中的权重weight(t,D)=tf(t,D)*idf(t)。用tf*idf公式计算特征项的权重,既注重了词语在文本中的重要性,又注重了词的鉴别才能。因此,有较高的tf*idf值的词在文档中一定是重要的,同时它一定在其它文档中出现很少。因此我们可以通过这种方法来选择把那些词语作为文本向量的特征词。 特征词选择出来之后,就能确定文本的向量表示了,有了文本向量,我们就可以通过此向量计算文本的相似度了。相似度的计算方法很多,其中包括: 内积法InnerProduct 余弦法Cosine Dice系数法DiceCoefficient Jaccard系数法JaccardCoefficient 2、基于汉明间隔 的计算方法 上述方法是基于向量空间技术的,把文本表示成空间中的向量,通过计算向量之间的夹角来得出文本之间的相似程度。而基于汉明间隔 的文本相似度计算方法与上述方法不同,不是基于向量空间技术,而是依赖于编码理论中的汉明间隔 ,通过计算两文本之间的汉明间隔 来计算两文本的相似度。此种方法的优点在于运算经过比拟简便。 首先介绍一下什么是编码理论中的汉明间隔 。汉明间隔 是描绘两个长度为n的码字之间的间隔 ,例如计算码字x=(x1x2xixn)与y=(y1y2yiyn)之间的间隔 ,其计算公式如下: 其中运算符号表示模2加运算,xi和yi的取值为0或者1。通过此公式计算得出的数据D(x,y)表示的是码字x与y中不同符号的数目,也就反映出了码字x与y之间的差异,D(x,y)值越大讲明两个码字相似程度越低。 利用此方法计算文本之间的相似度时,首先提取出文本的一些相关信息,例如文中的关键字等,然后将其排列成字码形式,文本的信息就通过这些字码表现出来,形成文本与字码的一一对应关系。例如,文本D就可以表示成D=(10100111001101011),其中的0和1表示的是其所在位置对应的文本信息在文本中的状态,假如0表示文本D在其对应位置上的信息是不存在的,那么1就表示文本D在其对应位置上的信息是存在的;反过来表示也是可以的。根据上面的阐述我们就可以很容易的将文本表示成码字的形式,想要求出两个文本之间的相似度,就可以根据上面公式的计算结果得出。假如码字的长度为n,那么通过上述公式计算出的两码字之间的间隔 值会介于0和n之间,当计算结果为n时,讲明两文本的所有信息均不一样,反之,当结果为0时,讲明两文本的所有信息都一样。这样的推算方法显然很不直观,而且假如n值不同,文本相似度的大小也会很难比拟。所以,我们首先要确定整个文本集的码字集,然后将每个文本表示成其对应的码字,对于文本D1=(x1x2xixn)和D2=(y1y2yiyn),定义其相似度计算公式为: 其中,xi和yi分别为文本D1和D2对应的码字中第i位的分量,其值0或者1,仍然是模2加运算,此种运算对计算机来讲,特别方便快捷。运用SimD1,D2公式计算出来的文本相似度,其值介于0和1之间,当结果0时,讲明两个文本完全不相似,当结果为1时,讲明两个文本很相似,符合人们正常的认知规律。 基于汉明间隔 的文本相似度计算方法没有用到基于向量空间技术中使用的大量复杂的运算,只是用到计算机运算起来特别快捷的模2加等运算,因此,计算速度比拟快。另外,这种方法所用的文本信息不仅仅限于关键字等相互独立的信息,提供了结合的描绘文本信息的可能。但是,怎样选择和排列文本信息,使其构成与文本一一对应的码字集合,是运用此方法进展文本相似度计算经过中有待于进一步研究的难点问题。 3、基于语义理解的计算方法 基于语义理解的文本相似度计算方法与基于统计学的计算方法不同,此方法不需要大规模的语料库,也不需要长时间和大量的训练,一般需要一个具有层次构造关系的语义词典,根据概念之间的上下位关系或者同义关系进展计算。文本的相似性计算大多是依赖于组成此文本的词语,基于语义理解的相似度计算方法也不例外,一般都是通过计算语义构造树中两词语之间的间隔 来计算词语的相似度。因此,一般会用到一些具有层次构造关系的语义词典,如WordNet、HowNet、同义词词林等。基于语义词典的文本相似度计算方法很多,有的通过计算词语在WordNet中由上下位关系所构成的最短途径来计算词语的相似度;也有的根据两词语在词典中的公共祖先结点所具有的最大信息量来计算词语的相关度;国内也有通过知网或者同义词词林来计算词语的语义相似度的方法。