当前位置:文档之家› 文本相似度计算

文本相似度计算

文本相似度计算
文本相似度计算

文本相似度计算系统

摘要

在中文信息处理中,文本相似度的计算广泛应用于信息检索、机器翻译、自动问答系统、文本挖掘等领域,是一个非常基础而关键的问题,长期以来一直是人们研究的热点和难点。本次毕设的设计目标就是用两种方法来实现文本相似度的计算。

本文采用传统的设计方法,第一种是余弦算法。余弦算法是一种易于理解且结果易于观察的算法。通过余弦算法可以快捷的计算出文本间相似度,并通过余弦算法的结果(0、1之间)判断出相似度的大小。由于余弦计算是在空间向量模型的基础上,所以说要想用余弦算法来完成本次系统,那么必须要将文本转化成空间向量模型。而完成空间向量模型的转换则要用到加权。在空间向量模型实现之前,必须要进行文本的去停用词处理和特征选择的处理。第二种算法是BM25算法,本文将采用最基础的循环来完成,目的是观察余弦算法中使用倒排索引效率是否提高有多大提高。

本次文本相似度计算系统的主要工作是去除停用词、文本特征选择、加权,在加权之后用余弦算法计算文本的相似度。在文本特征选择之后用BM25计算相似度。由于为了使系统的效率提高,在程序设计中应用了大量的容器知识以及内积、倒排算法。

关键词:文本相似度;余弦;BM25;容器

Text Similarity Algorithm Research

Abstract

In Chinese information processing,text similarity computation is widely used in the area of information retrieval,machine translation,automatic question—answering,text mining and etc.It is a very essential and important issue that people study as a hotspot and difficulty for a long time.Currently,most text similarity algorithms are based on vector space model(VSM).However,these methods will cause problems of high dimension and sparseness.Moreover,these methods do not effectively solve natural language problems existed in text data.These natural language problems are synonym and polyseme.These problems sidturb the efficiency and accuracy of text similarity algorithms and make the performance of text similarity computation decline.

This paper uses a new thought which gets semantic simirality computation into traditional text similarity computation to prove the performance of text similarity algorithms.This paper deeply discusses the existing text similarity algorithms and samentic text computation and gives a Chinese text similarity algorithm which is based on semantic similarity.There is an online information management system which is used to manage students’graduate design papers.Those papers ale used to calculate similarity by that the algorithm to validate that algorithm.

This text similarity computing system's main job is to stop word removal, text feature selection, weighting, after weighting using cosine algorithm to calculate the

similarity of the text. After the text feature selection calculation of similarity with the

BM25. Because in order for the system's efficiency, knowledge application in programming a lot of containers as well as the inner product, the inversion algorithm

KEY WORDS:Text similarity;cosine;BM25;container

目录

1 绪论.................................................................................................. 错误!未定义书签。

1.1 开发背景................................................................................... 错误!未定义书签。

1.2 课题研究意义........................................................................... 错误!未定义书签。

1.3本课题要解决的问题................................................................ 错误!未定义书签。

2 研究方法.......................................................................................... 错误!未定义书签。

2.1根据研究的侧重点阐述相关的研究方法................................ 错误!未定义书签。

2.2历史以及研究现状.................................................................... 错误!未定义书签。3关键问题及分析(一)(余弦)..................................................... 错误!未定义书签。

3.1 研究设计中的关键问题........................................................... 错误!未定义书签。

3.2 具体实现中采用的关键技术................................................... 错误!未定义书签。

3.2.1 容器..................................................................................... 错误!未定义书签。

3.2.2 倒排..................................................................................... 错误!未定义书签。

3.2.3 内积..................................................................................... 错误!未定义书签。

3.2.4 算法..................................................................................... 错误!未定义书签。

3.3本章小结.................................................................................... 错误!未定义书签。4关键问题及分析(二)(BM25) .................................................. 错误!未定义书签。

4.1 研究设计中的关键问题........................................................... 错误!未定义书签。

4.2 具体实现中采用的关键技术................................................... 错误!未定义书签。

4.2.1 容器..................................................................................... 错误!未定义书签。

4.2.2 算法..................................................................................... 错误!未定义书签。

4.3本章小结.................................................................................... 错误!未定义书签。5系统设计及实现............................................................................... 错误!未定义书签。

5.1设计实现的策略和关键技术描述............................................ 错误!未定义书签。

5.2分模块详述系统各部分的实现方法........................................ 错误!未定义书签。

5.2.1 文档载入模块..................................................................... 错误!未定义书签。

5.2.2 去除停用词模块................................................................. 错误!未定义书签。

5.2.3 特征选择模块..................................................................... 错误!未定义书签。

5.2.4 加权模块............................................................................. 错误!未定义书签。

5.2.5 余弦计算模块..................................................................... 错误!未定义书签。

5.2.6 BM25计算模块 .................................................................. 错误!未定义书签。

5.2.7 相似度显示模块................................................................. 错误!未定义书签。

5.2.8 相似度导出模块................................................................. 错误!未定义书签。

5.3程序流程.................................................................................... 错误!未定义书签。

5.4界面设计.................................................................................... 错误!未定义书签。

5.5测试环境与测试条件................................................................ 错误!未定义书签。

5.6实例测试(表格) ......................................................................... 错误!未定义书签。

5.7性能分析.................................................................................... 错误!未定义书签。

6 结论与展望...................................................................................... 错误!未定义书签。参考文献.............................................................................................. 错误!未定义书签。致谢.................................................................................................. 错误!未定义书签。

1绪论

随着计算机的广泛应用和Intemet的普及,各类信息都在急速地膨胀。信息量的增长给人们带来了方便,同时也带来了信息过量的问题。面对海量信息,人们越来越希望能够在数据分析的基础上进行科学研究、商业决策和企业管理,带来经济效益或社会效益。在现实世界中,文本是最重要的信息载体。因此对文本文档的处理和分析成为当今数据挖掘和信息检索技术的热点之一。处理和研究文本文档的技术有很多,其中重要的一个技术就是文本相似度,它在文本聚类、Web 智能检索、问答系统、网页去重、自然语言处理等很多领域中有着重要的应用,文本相似度是这些应用的关键。

本次目标就是做出文本相似度的计算工具,用两种算法来计算文本间的相似度。

1.1开发背景:

文本相似度有着比较广泛的应用,典型的应用有:(1)信息智能检索:搜索引擎对用户输入关键字的反应是列出所有与该关键字相匹配的网页。这些网页的数量之大,往往要以十万百万来计量,而且对于某一关键字检索出来的网页有可能对应于不同的主题。这些各种主题的网页有些没有相关性,有些内容很相似。这种各类主题杂乱在一起的搜索结果和冗余页面给用户找到自己感兴趣的信息带来极大的不便。如果利用文本相似度技术,对搜索结果进行进一步的处理,在搜索结果中将相似度很高的信息分为不同类别,或者去掉相似度很高的重复的信

息,为用户提供一个清晰的导航。这将大大的有利于用户发现自己感兴趣的信息,提高信息检索的质量。(2)自动问答系统:在这种系统中,问题是多种多样,且非常巨大的,有些问题是非常相似的,如果用人工来回答,将耗费大量的时间和人力,如果在这种系统中应用文本相似度技术,将相似度很高的问题归为一类,使系统对这类问题自动做出答复,将节省大量的时间。(3)文本查重:在某些领域,考虑到隐私性和独创性,要求文本不能重复出现,那么应用文本相似度技术,对这类文本进行相似度的计算,就可以看出哪些文本多次出现。因此,研究文本相似度的算法具有重要的实际价值。

1.2课题研究意义

文本相似度计算系统是自然语言处理的一部分,可以计算一个文本中不同词条的相似度,可以计算俩个文本间的相似度也可以进行批处理,对多个文本之间进行两两计算,并输出文本间相似度的最后结果。

文本相似度除了简单的计算相似度外,还可以在其基础上进一步发展,成为其他的功能软件。其中最主要的体现就是检索工具与信息挖掘,例如:语义检索、招聘信息检索等。在这些软件中,文本相似度计算系统起到了决定性的作用。

文本相似度计算系统中的去除停用词功能、文本特征选择以及加权功能还可以单个的拿出,作为单独的一个程序或者成为其他系统的一部分。

1.3本课题要解决的问题

文本相似度计算系统包括去除停用词、文本特征选择、加权、余弦算法、BM25算法。

在去除停用词中,主要的问题就是选词范围和set容器的使用。由于给出的词语前面是有词性的,所以在选词的时候要注意将词性去掉。这样才能得到准确的结果。虽然去除停用词这一功能十分的简单。但是由于它是第一个功能,所以一定要保持它的正确性。

文本的特征选择目的是选出那些重要但是又不是每行都有的词,并且输出该词语的特征量。所以在特征选择这一项,我在程序中做了三个模块,选出那些特征为一的特殊词语,并且删除。由于BM25计算方法是在特征选择之后进行的,所以在这一部分还特别为BM25就算出了不为一的文本等。

加权是在文本特征选择之后,是为余弦做准备。通过加权可以得到文本的空

间向量模型,由于该结果为全数字,所以要十分的主要加权的准确性。

余弦算法作为该程序的两个算法之一,是该程序的灵魂所在,在余弦算法中除了VC基本知识、容器之外还用到了倒排索引和内积。余弦算法也是该程序的难点之一。

BM25算法是一种很陌生的算法,很多人都可能是第一次听过,BM25算法具有准确这一特点,是一种十分专业的算法。BM25算法中只用到了循环,目的是验证倒排索引、内积等方法可以提高多少效率。

2研究方法

2.1根据研究的侧重点阐述相关的研究方法

目前较为常用的相似度计算方法有许多,例如本次程序要用到的余弦相似度就算方法和BM25相似度计算方法。除此之外内积相似度计算方法,SMART相似度计算方法、Pivoted Normalisation相似度计算方法、Log-linear相似度计算方法等。但是由于相似度的用途、方法等原因,很多方法都是不常见的。

余弦算法作为大家熟知的计算方法而被广泛的应用。在本次程序中,主要的流程就是将语料去除停用词,之后进行文本的特征选择,将特征项为一的和特征项与文本数相同的去掉。接下来进行文本加权,将语料变为一个空间向量模型。最后通过内积与倒排索引按照余弦公式最终计算出文本间的相似度大小。

BM25算法是一种严谨的计算方法,在此次项目中,进行特征选择之后就可以开始进行计算了。BM25比余弦好的地方在于其不用经过加权形成空间向量模型,但是它在公式中也有一部类似加权的计算步骤。

2.2历史以及研究现状

目前,国内外很多学者在研究文本相似度计算问题,并提出了一些解决方案和技术,在这些技术中,Salton等人(1975)提出的向量空间模型(VSM)是最常用的方法。

Salton等人(1975)的观点是,向量空间模型VSM的基本思想是把文档简化为以特征项的权重为分量的向量表示,它假设词与词间不相关,用向量来表示文本,

从而简化了文本中的关键词之间的复杂关系,文档用十分简单的向量表示,使得模型具备了可计算性。这种机制通过为文档中的索引项分配权重来实现。权重应该能体现关键词的重要程度,是对整个文档的描述能力,和区别其他文档的区分能力的量化。特征项的权重计算一般利用统计的方法获得,通常使用词频来表示。基于向量的文本相似度计算方法是最常用的文本相似度计算方法,该方法将要比较相似度的文本根据文本中的词语将文本映射为n维空间向量,然后通过比较向量间的关系来确定文本间的相似度,其中最为常用的方法是计算向量间的余弦系数。Frakes等人(1992)的观点是,向量空间模型的最大优点在于它在知识表示方法上的巨大优势,在该模型中,文本内容被形式化为多维空间中的一个点,通过向量的形式给出,把对文本内容的处理简化为向量空间中向量的运算。潘有能(2002),鲁松(2000)等人的观点是,向量的权重计算可以通过简单的频数统计来完成,使问题的复杂性大为降低。向量空间模型的缺点在于关键词之间的线性无关的假说前提。在自然语义中,词或短语间存在十分密切的联系,很难满足假定的条件,因此对计算结果的可靠性造成一定的影响。此外,将复杂的语义关系归结为简单的向量结构,丢失了许多有价值的线索。因此,引进改进技术以获取深层语义结构是有必要的。同时权值计算是相似度计算里面关键的部分,如何定义最准确的权值也是向量空间模型要考虑的一大问题。

此外其他学者在文本相似度计算方法上也提出了不同的见解,如哥伦比亚大学的Carbonell J.等人(1998)提出的最大边缘相关的方法MMR(Maximal Marginal Relevance)方法。Lambms等人(1994)提出同时依据句子的表层结构和内容计算相似度的方法。在计算相似度时,系统使用了两级动态规划技术,应用动态规划算法允许在两个长度不同的句子之间计算语句相似度。Nirenburg等人(1993)提出了两种串匹配的方法,即更规范的“切块+匹配+重组”方法和整句级匹配的方法,这两种方法所采用的相似度衡量机制都是词组合法。该系统的相似度计算采用罚分制,两个句子匹配所得到的总罚分值由句子中每个对应单词对的比较所得的罚分组合而成。其它方法还有根据Ricardo(2005)所提到的Belkin和Croft于1992年提出的概率型。

Lee(2005)、Lipika(2006)、Ong(2006)和Blaz(2006)等人的观点是,一个类别主要是以用机器学习的方法,比如聚类分析和模糊逻辑去构造文本的本体模型,然后用这些模型,根据Navigli(2005)、Sugumaran(2005)等人的观点,对文

本进行处理。但是,这些方法需要分析整个文档语料库去构造一个好的本体模型,而且文本处理的好坏取决于构造本体模型的良好程度。在语料分析中,一些项在文本中很少出现,因为他们的出现频率很低,而往往被忽视。然而,根据信息理论,这些少见的项却对文本处理来说是有价值的。忽视他们在构建本体模型的时候可能会影响文本处理的性能。这些基于本体的方法也没有完全能和LSI抗衡。

3关键问题及分析(一)(余弦)

3.1 研究设计中的关键问题

余弦:关键问题是先要明确余弦的相关定义,理解公式每个地方代表了什么,之后理解相关定义的内容,最后结合C++中的容器知识解决问题。

去除停用词

预处理:在计算余弦算法之前,必须要有预处理的过程,其中包括去除停用词和特征选择。去除停用词主要就是按照停用词表中的词语将语料中不常见的符号,标点级乱码去掉。在去除停用词中除了用到基本的输入输出流,还用到了set容器。set容器重要作用在本次去除停用词过程中存储“哈工大停用词表”,在用循环输入“三类语料”,如果在set容器中就去掉,不在就输出。set容器是容器中最常用也是最基础的知识,下面具体介绍了set容器的基本操作。

set容器:定义一个元素为整数的集合a,可以用set a;

基本操作:对集合a中元素的有

插入元素:a.insert(1);

删除元素(如果存在):a.erase(1);

判断元素是否属于集合:if (a.find(1) != a.end())

特征选择:

特征选择的目的:特征选择也属于预处理中的一部分,其最终的目的是将文本中只在一行出现的词语和在每行都出现的词语去掉。

特征选择的实现方法:

在特征选择中用到了set、map、multimap三中容器。

首先用set容器来存放去停用词后的文本。在这里set起到的功能与去除停

用词中功能是一样的。 map 是STL 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map 中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性map 内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。由于map 容器排序的特性,得到得特征排序的很乱的,所以用到了multimap 。Multimap 所起到的作用就是一个排序的作用,他使得最终结果按特征选择的值来排序,为后面的去除做一个准备。

在进行文本的特征选择之后要像去除停用词一样去除特征为1的和特征数等于文本行数的特征。因为特征为1的表示特征过小,只在一行出现,对文本的影响不大。而特征数过大的与文本行数相等的说明每一行都出现了,不具有代表行。

加权:由于用余弦来计算相似度,所以引入了空间模型的概念。

G.Salton 提出的向量空间模型(VSM )有较好的计算性和可操作性,是近年来应用较多且效果较好的一种模型,向量空间模型最早成功应用于信息检索领域,后来又在文本分类领域得到了广泛的运用。向量空间模型的假设是,一份文档所属的类别仅与某些特定的词或词组在该文档中出现的频数有关,而与这些单词或词组在该文档中出现的位置或顺序无关。也就是说,如果将构成文本的各种词义单位(如单词i 、词组)统称为“词项”,以及词频在文本中出现的频数称为“词频”,那么一份文档中蕴含的各个词项的词频信息足以用来对其进行正确的分类。在向量空间模型中的文本被形式化为n 维空间中的向量:

其中为第i 个 特征的权重。

向量空间模型:向量空间模型重简单方面说就是一个完全由向量所组成的文本,由于余弦算法是按照向量的夹角来计算的,所以必须通过加权来计算出每个词语的权重。 加权公式:)

(log

)(i i q n N q IDF 其中N 为文本的总行数,n 为出现该词语的总行数。

3.2 具体实现中采用的关键技术

3.2.1 容器

本系统主要运用的map容器和vector容器的相关知识。下面先介绍map容器相关的知识:

map容器:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的姓名就存在着一一映射的关系,这个模型用map可能轻易描述,很明显学号用int描述,姓名用字符串描述。

Vector容器的相关知识如下:vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。

3.2.2 倒排索引

倒排索引的概念:这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件

倒排的应用:倒排的目的是为了使计算的方法简便,使程序的效率提高。倒排就是用map >dp这样一个大的复合容器来将结果显示为3列。

for(map >::iterator i=dp.begin();i!=dp.end();i++) {

for(map::iterator j=i->second.begin();j!=i->second.end();j++) {

write<first<<" "<first<<" "<second<<"\n";

}

这样就将文件成一个3列的输出,为后面的内积计算做了一个铺垫。

3.2.3 内积

内积(inner product),又称数量积(scalar product)、点积(dot product)他是一种矢量运算,但其结果为某一数值,并非向量。

设矢量A=[a1,a2,...an],B=[b1,b2...bn]

则矢量A和B的内积表示为:

A·B=a1×b1+a2×b2+……+an×bn

A·B = |A| × |B| × cosθ

|A|=(a1^2+a2^2+...+an^2)^(1/2);

|B|=(b1^2+b2^2+...+bn^2)^(1/2).

其中,|A| 和 |B| 分别是向量A和B的模,是θ向量A和向量B的夹角(θ∈[0,π])。若B为单位向量,即 |B|=1时,A·B= |A| × cosθ,表示向量A在B方向的投影长度。向量A为单位向量时同理。

3.2.4 算法

初看余弦相似度的公式,不明所以的人一定会对复杂的数学符号感到头疼,其实大可不必,下面我摘录了一个比较通俗易懂的余弦相似度的解释:在向量空间模型中,文本泛指各种机器可读的记录。用D(Document)表示,特征项(Term,用t表示)是指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,1<=k<=N。例如一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为D(a,b,c,d)。对含有n个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度。即D=D(T1,W1;T2,W2;…,Tn,Wn),简记为D=D(W1,W2,…,Wn),我们把它叫做文本D的向量表示。其中Wk是Tk的权重,1<=k<=N。在上面那个例子中,假设a、b、c、d的权重分别

为30,20,20,10,那么该文本的向量表示为D(30,20,20,10)。在向量空间模型中,两个文本D1和D2之间的内容相关度Sim(D1,D2)常用向量之间夹角的余弦值表示,公式为:

其中,W1k、W2k分别表示文本D1和D2第K个特征项的权值,1<=k<=N。

在自动归类中,我们可以利用类似的方法来计算待归类文档和某类目的相关度。例如文本D1的特征项为a,b,c,d,权值分别为30,20,20,10,类目C1的特征项为a,c,d,e,权值分别为40,30,20,10,则D1的向量表示为D1(30,20,20,10,0),C1的向量表示为C1(40,0,30,20,10),则根据上式计算出来的文本D1与类目C1相关度是0.86

那么0.86具体是怎么推导出来的呢?

在数学当中,n维向量是 V{v1, v2, v3, ..., vn}

他的模: |v| = sqrt ( v1*v1 + v2*v2 + ... + vn*vn )

两个向量的点击 m*n = n1*m1 + n2*m2 + ...... + nn*mn

相似度= (m*n) /(|m|*|n|)

物理意义就是两个向量的空间夹角的余弦数值

下面是代入公式的过程:

d1*c1 = 30*40 + 20*0 + 20*30 + 10*20 + 0*10 = 2000

|d1| = sqrt(30*30 +20*20 + 20*20 + 10*10 + 0*0) = sqrt(1800)

|c1| = sqrt(40*40 + 0*0 + 30*30 + 20*20 + 10*10) = sqrt(3000)

相似度 = d1*c1/(|d1|*|c1|)= 2000/sqrt(1800*3000)= 0.86066

3.3本章小结

本章主要介绍了余弦相似度的具体算法,余弦计算前去除停用词、文本特征选择、加权和如何利用c++中的容器来书写程序描述这个算法。对于一个给定的

算法,我们主要的精力是研究如何用程序来实现这个算法,我个人觉得这个有些南辕北辙的味道,我们应该从最深处理解算法的精髓,能写出算法的人是大师,而用程序实现算法的人只是一个程序员,由于个人的原因,本人的数学功底有些差,但是我会再以后的道路上努力弥补自己的不足,完善自我。

4关键问题及分析(三)(BM25)

4.1 研究设计中的关键问题

本章节主要面对的问题是

1.BM25的数学公式是什么?

2.BM25公式的主要的参数是什么意思?

3.用程序实现BM25的算法用到哪些相关的知识?

4.2 具体实现中采用的关键技术

4.2.1 容器

本章主要用到了map容器和vector容器。

解释map容器:Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,在map内部所有的数据都是有序的。

Vector容器的相关知识如下:

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。4.2.2 算法

BM25通常用于信息检索的领域,它是一种用于排序跟搜索关键词相关的文本的一种排序的函数,最早在1970年,由S. E. Robertson等提出的,基于概率检

索的框架(probabilistic retrieval framework )发展。BM25是一个bag-of-words 的检索函数,综合了特征在文本中的词频、以及在语料中的文档频度、平衡了文档的长度等特征。这个函数有很多变种,其中应用最普遍的计算方法,如公式(5.2)所示:

)||1(),()1(),()(),(111avgdl D b b k D q f k D q f q IDF Q D score i i n i i ?+-?++??

=∑= (5.2)

其中Q 是用来计算的检索的query 的向量Q =},...,{1n q q ,n 代表向量Q 的关键词的个数;D 是语料中的一个样本向量}...{,1M w w D =,M 代表向量D 特征个数;),(D q f i 是检索词i q 的在样本D 中的出现的次数;||D 表示文档D 的长度(指文档中词语的个数,包括重复的词语);avgdl 是Q 中的query 检索到的全部样本的平均长度。1k 和b 是自由参数,通常情况下,1k 取值为2.0,b 取值为0.75。)(i q IDF 是文档频度的倒数,是检索词i q 的权重,计算如公式(5.3)所示:

5.0)(5.0)(log )(++-=i i i q n q n N q IDF (5.3)

其中N 是整个数据集上的文档总数,)(i q n 是指包含检索词i q 的文档数。在实际计算中,)(i q IDF 值有可能是负数,使得的BM25值也有可能是负数,由于BM25公式中)(i q IDF 偏重于未出现检索词i q 和出现索引词i q 的样本数的比重,对于DF 值较高的索引词,未出现索引词i q 的文档个数有小于DF 值,取log 之后)(i q IDF 的值变为负值。在本文的实验中去掉了BM25值为负数的样本。

4.3本章小结

BM25算法计算相比余弦算法过程要简单的多,但是我只是运用了一个循环的方法,目的是看用“倒排”的效率,结果“不看不知道,一看下一跳”。结果不是差了一点半点啊。使用“倒排”的效率大大提高。

关于BM25算法的结果,个人表示没有余弦好理解,因为他的结果是无规律且大小相差很多,非专业人员(我)无法用BM25来看出相似度到底有多少,而余弦的结果是0~1之间的,可以一目了然的看到两篇文本的相似度是多少。

通过了BM25的实现,使我的数学有了提高,而且更加深入的了解到了如何编算法,以前总感觉算法是很难实现的,但是现在感觉已将给了公式,这样逻辑就很明了了。相信下次我会编的更好。

5系统设计及实现

本章从系统的实现过程,各模块的功能、各模块间的关系、界面设计及测试等几个方面阐释了系统的具体实现。

5.1设计实现的策略和关键技术描述

在上边的讲解里提出了关于本程序的相关模块,在这一节里将对每个模块进行详细讲解,并对其实现方法进行描述。通过设计方案可以确定出本程序主要分为如下模块:文档载入模块、去除停用词模块、加权模块、特征选择模块、余弦算法模块、BM25算法模块、相似度显示模块,相似度导出模块。

5.2分模块详述系统各部分的实现方法

5.2.1文档载入模块

获取文件的信息可包括两个方面,一个是获取原文本文档(三类语料.txt)中的翻译信息,一个是获取停用词表(哈工大停用词表.txt)中的信息。下面分别对获取文本文档中的原文信息和获取停用词表中的信息进行详细的介绍。

1)获取文本文档(三类语料.txt)中的翻译信息

文本文件(txt)文件的格式相对比较简单,本程序用C++语言读取文本文件的方法读取原文的信息。用了C++语言中的getline方法读取文件信息,之后用C++语言中的istringstream函数进行分词操作。原文格式如下:

2)获取文本文档(哈工大停用词表.txt)中的翻译信息

获取停用的操作相对来说简单了些,因为每个停用词独占一行,用C++语言的读一行文件的操作即可,此处就不做详述了。

5.2.2去除停用词模块

去除停用词的目的是去除停用词表中的词语,因为一个刚刚分好词的文本会有许多不重要的词或符号。去除停用词的操作是一个非常常见的教科书程序,而且在我的印象中还做过相关课设,去除停用词的方法主要就是一个循环,但是由于这次要去除的词是在一个文本中,所以要用到一个set容器。

5.2.3特征选择模块

特征选择模块的最终目的一共有两个,一个是输出每个词的特征,即在文本中有多少行含有该词。另一个目的就是去除特征为一的词语和特征等于该文本的总行数的词语,因为程序的最终目的是比较相似度,特征为一的就表示该词不是一个由代表性的词语,而特征数与总行数相等则说明了有无该词对相似度的结果是没有影响的。所以我们对原文做了如下特征选择的操作,去除每篇文章都出现的单词或者有且仅有只在一篇文章中出现的单词。

5.2.4加权模块

对权值的解释:

权值就是指这个指标在整个分析过程中所占的重要程度,比如你买辆车你对车的属性有几方面认识——假定只有3个方面质量价格舒适程度

你认为这个质量对你最重要你赋权值为0.5 价格其次重要赋值0.3 舒适程度适当考虑并赋值0.2

OK 我们可以以此为标准来评判

你看中了车A 给它三方面打分质量90 价格80 舒适80

车B 质量80 价格90 舒适80

然后你把这些分数乘以相应的权值可以有

A的得分90*0.5+80*0.3+80*0.2=85

B的得分80*0.5+90*0.3+80*0.2=83

故A车对你是较好的选择

权值就是这样在问题分析中起到重要作用

一般的权值累加为1 实际上这只是习惯不为1 而为任意正数都没有关系

我们在此处用了如下的加权公式:

(写公式)

下面是对公式的通俗解释(摘录自维基百科):

有很多不同的数学公式可以用来计算TF-IDF。这边的例子以上述的数学公式来计算。词频(TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是0.03 (3/100)。一个计算文件频率(DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是4( ln(10,000,000 / 1,000) )。最后的TF-IDF的分数为0.12( 0.03 * 4)。

5.2.5余弦计算模块

此处利用了余弦公式求解了预先相似度的值,公式如下:

和向量余弦的计算方法是文本相似度计算中最常见的一种方法,标记为cosine。用向量空间模型表示文本1D和文本2D,两个向量的余弦计算,如公式(5.1)所示:

∑∑∑===??=??=m i j n i i k i i i t d weight t d weight t d weight t d weight d d d d D D 02202

1021212121),(),()),(),((||||||||),cos(

(5.1)

其中k 表示样本1D 和样本2D 两个向量的共现特征的个数,n 、m 分别表示向量1D 和2D 的向量的维数。

此处求的的余弦的相似度在0~1之间。

5.2.6 BM25计算模块

BM25是一个bag-of-words 的检索函数,综合了特征在文本中的词频、以及在语料中的文档频度、平衡了文档的长度等特征。这个函数有很多变种,其中应用最普遍的计算方法,如公式(5.2)所示:

)||1(),()1(),()(),(111avgdl D b b k D q f k D q f q IDF Q D score i i n i i ?+-?++??

=∑= (5.2)

其中Q 是用来计算的检索的query 的向量Q =},...,{1n q q ,n 代表向量Q 的关键词的个数;D 是语料中的一个样本向量}...{,1M w w D =,M 代表向量D 特征个数;

),(D q f i 是检索词i q 的在样本D 中的出现的次数;

||D 表示文档D 的长度(指文档中词语的个数,包括重复的词语);avgdl 是Q 中的query 检索到的全部样本的平均长度。1k 和b 是自由参数,通常情况下,1k 取值为2.0,b 取值为0.75。)(i q IDF 是文档频度的倒数,是检索词i q 的权重。

5.0)(5.0)(log )(++-=i i i q n q n N q IDF

(5.3)

其中N 是整个数据集上的文档总数,)(i q n 是指包含检索词i q 的文档数。 本模块利用BM25算法对输入的文章进行比对,并将生成的相似度结果显示在ClistCtrl 控件上。

文本相似度算法

1.信息检索中的重要发明TF-IDF 1.1TF Term frequency即关键词词频,是指一篇文章中关键词出现的频率,比如在一篇M个词的文章中有N个该关键词,则 (公式1.1-1) 为该关键词在这篇文章中的词频。 1.2IDF Inverse document frequency指逆向文本频率,是用于衡量关键词权重的指数,由公式 (公式1.2-1) 计算而得,其中D为文章总数,Dw为关键词出现过的文章数。2.基于空间向量的余弦算法 2.1算法步骤 预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。 2.2步骤简介 2.2.1预处理 预处理主要是进行中文分词和去停用词,分词的开源代码有:ICTCLAS。 然后按照停用词表中的词语将语料中对文本内容识别意义不大但出

现频率很高的词、符号、标点及乱码等去掉。如“这,的,和,会,为”等词几乎出现在任何一篇中文文本中,但是它们对这个文本所表达的意思几乎没有任何贡献。使用停用词列表来剔除停用词的过程很简单,就是一个查询过程:对每一个词条,看其是否位于停用词列表中,如果是则将其从词条串中删除。 图2.2.1-1中文文本相似度算法预处理流程 2.2.2文本特征项选择与加权 过滤掉常用副词、助词等频度高的词之后,根据剩下词的频度确定若干关键词。频度计算参照TF公式。 加权是针对每个关键词对文本特征的体现效果大小不同而设置的机制,权值计算参照IDF公式。 2.2.3向量空间模型VSM及余弦计算 向量空间模型的基本思想是把文档简化为以特征项(关键词)的权重为分量的N维向量表示。

这个模型假设词与词间不相关(这个前提造成这个模型无法进行语义相关的判断,向量空间模型的缺点在于关键词之间的线性无关的假说前提),用向量来表示文本,从而简化了文本中的关键词之间的复杂关系,文档用十分简单的向量表示,使得模型具备了可计算性。 在向量空间模型中,文本泛指各种机器可读的记录。 用D(Document)表示文本,特征项(Term,用t表示)指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,要求满足1<=k<=N。 下面是向量空间模型(特指权值向量空间)的解释。 假设一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为 D(a,b,c,d) 对于其它要与之比较的文本,也将遵从这个特征项顺序。对含有n 个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度,即 D=D(T1,W1;T2,W2;…,Tn,Wn) 简记为 D=D(W1,W2,…,Wn) 我们把它叫做文本D的权值向量表示,其中Wk是Tk的权重,

地址相似度算法

一、计算过程: 1、根据输入一个地址,生成一个地址每个字的数组: T1={w1,w2,w3..wn}; 比如:有两个地址广东省梅州市江南彬芳大道金利来步街xx号和广东省梅州市梅江区彬芳大道金利来步行街xx号,会生成 T1={广,东,省,梅,州,市,江,南,彬,芳,大,道,金,利,来,步,街,xx,号}; T2={广,东,省,梅,州,市,梅,江,区,彬,芳,大,道,金,利,来,步,行,街,xx,号}; 2、这两个地址的并集,对出现多次的字只保留一次 比如:T={广,东,省,州,市,梅,江,南,区,彬,芳,大,道,金,利,来,步,行,街,xx,号}; 3、求出每个t中每个词在t1和t2中出现的次数得到m和n m={m1,m2,m3..mn}; n={n1,n2,n3.nn}; 比如:t1和t2可以得到两个出现次数的数组 m={1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1}; n={1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; 4、计算相似度 Sim=m1*n1+m2*n2+..mn*nn/sqrt(m1*m1+m2*m2+..mn*mn)* sqrt(n1*n1+n2*n2+..nn*nn) 二、计算原理: 假如这两个数组是只有{x1,y1}和{x2,y2}的数组,这两个数组可以在平面直角坐标系中用两个由原点出发的向量来表示,我们可以通过向量的夹角的大小来判断向量的相似度,夹角越小,相似度越高。计算向量的夹角,我们可以使用余弦定理,余弦定理用坐标表示的公式: 余弦的这种计算方法不止对于2维向量成立,对n维向量也成立,n维向量表示为: 所以我们可以使用这个公式得出余弦的值,值越接近1,夹角越小,两个向量越相似,这种计算方式叫做余弦相似性。

相似度算法比较

图像相似度计算主要用于对于两幅图像之间内容的相似程度进行打分,根据分数的高低来判断图像内容的相近程度。 可以用于计算机视觉中的检测跟踪中目标位置的获取,根据已有模板在图像中找到一个与之最接近的区域。然后一直跟着。已有的一些算法比如BlobTracking,Meanshift,Camshift,粒子滤波等等也都是需要这方面的理论去支撑。 还有一方面就是基于图像内容的图像检索,也就是通常说的以图检图。比如给你某一个人在海量的图像数据库中罗列出与之最匹配的一些图像,当然这项技术可能也会这样做,将图像抽象为几个特征值,比如Trace变换,图像哈希或者Sift特征向量等等,来根据数据库中存得这些特征匹配再返回相应的图像来提高效率。 下面就一些自己看到过的算法进行一些算法原理和效果上的介绍。 (1)直方图匹配。 比如有图像A和图像B,分别计算两幅图像的直方图,HistA,HistB,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。 这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量,这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的256个bin条的。那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。而且计算量比较小。 这种方法的缺点: 1、直方图反映的是图像像素灰度值的概率分布,比如灰度值为200的像素有多少个,但是对于这些像素原来的位置在直方图中并没有体现,所以图像的骨架,也就是图像内部到底存在什么样的物体,形状是什么,每一块的灰度分布式什么样的这些在直方图信息中是被省略掉得。那么造成的一个问题就是,比如一个上黑下白的图像和上白下黑的图像其直方图分布是一模一样的,其相似度为100%。 2、两幅图像之间的距离度量,采用的是巴氏距离或者归一化相关系数,这种用分析数学向量的方法去分析图像本身就是一个很不好的办法。 3、就信息量的道理来说,采用一个数值来判断两幅图像的相似程度本身就是一个信息压缩的过程,那么两个256个元素的向量(假定直方图有256个bin条)的距离用一个数值表示那么肯定就会存在不准确性。 下面是一个基于直方图距离的图像相似度计算的Matlab Demo和实验结果. %计算图像直方图距离 %巴氏系数计算法 M=imread('1.jpg'); N=imread('2.jpg'); I=rgb2gray(M); J=rgb2gray(N); [Count1,x]=imhist(I); [Count2,x]=imhist(J); Sum1=sum(Count1);Sum2=sum(Count2); Sumup = sqrt(Count1.*Count2); SumDown = sqrt(Sum1*Sum2); Sumup = sum(Sumup); figure(1); subplot(2,2,1);imshow(I); subplot(2,2,2);imshow(J);

计算文本相似度几种最常用的方法,并比较它们之间的性能

计算文本相似度几种最常用的方法,并比较它们之间的性能 编者按:本文作者为Yves Peirsman,是NLP领域的专家。在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的。词嵌入(word embeddings)已经在自然语言处理领域广泛使用,它可以让我们轻易地计算两个词语之间的语义相似性,或者找出与目标词语最相似的词语。然而,人们关注更多的是两个句子或者短文之间的相似度。如果你对代码感兴趣,文中附有讲解细节的Jupyter Notebook地址。以下是论智的编译。 许多NLP应用需要计算两段短文之间的相似性。例如,搜索引擎需要建模,估计一份文本与提问问题之间的关联度,其中涉及到的并不只是看文字是否有重叠。与之相似的,类似Quora之类的问答网站也有这项需求,他们需要判断某一问题是否之前已出现过。要判断这类的文本相似性,首先要对两个短文本进行embedding,然后计算二者之间的余弦相似度(cosine similarity)。尽管word2vec和GloVe等词嵌入已经成为寻找单词间语义相似度的标准方法,但是对于句子嵌入应如何被计算仍存在不同的声音。接下来,我们将回顾一下几种最常用的方法,并比较它们之间的性能。 数据 我们将在两个被广泛使用的数据集上测试所有相似度计算方法,同时还与人类的判断作对比。两个数据集分别是: STS基准收集了2012年至2017年国际语义评测SemEval中所有的英语数据 SICK数据库包含了10000对英语句子,其中的标签说明了它们之间的语义关联和逻辑关系 下面的表格是STS数据集中的几个例子。可以看到,两句话之间的语义关系通常非常微小。例如第四个例子: A man is playing a harp. A man is playing a keyboard.

图像相似度计算

图像相似度计算 图像相似度计算主要用于对于两幅图像之间内容的相似程度进行打分,根据分数的高低来判断图像内容的相近程度。 可以用于计算机视觉中的检测跟踪中目标位置的获取,根据已有模板在图像中找到一个与之最接近的区域。然后一直跟着。已有的一些算法比如BlobTracking,Meanshift,Camshift,粒子滤波等等也都是需要这方面的理论去支撑。 还有一方面就是基于图像内容的图像检索,也就是通常说的以图检图。比如给你某一个人在海量的图像数据库中罗列出与之最匹配的一些图像,当然这项技术可能也会这样做,将图像抽象为几个特征值,比如Trace变换,图像哈希或者Sift特征向量等等,来根据数据库中存得这些特征匹配再返回相应的图像来提高效率。 下面就一些自己看到过的算法进行一些算法原理和效果上的介绍。 (1)直方图匹配。 比如有图像A和图像B,分别计算两幅图像的直方图,HistA,HistB,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。 这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量,这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的256个bin条的。那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。而且计算量比较小。 这种方法的缺点: 1、直方图反映的是图像像素灰度值的概率分布,比如灰度值为200的像素有多少个,但是对于这些像素原来的位置在直方图中并没有体现,所以图像的骨架,也就是图像内部到底存在什么样的物体,形状是什么,每一块的灰度分布式什么样的这些在直方图信息中是被省略掉得。那么造成的一个问题就是,比如一个上黑下白的图像和上白下黑的图像其直方图分布是一模一样的,其相似度为100%。 2、两幅图像之间的距离度量,采用的是巴氏距离或者归一化相关系数,这种用分析数学向量的方法去分析图像本身就是一个很不好的办法。 3、就信息量的道理来说,采用一个数值来判断两幅图像的相似程度本身就是一个信息压缩的过程,那么两个256个元素的向量(假定直方图有256个bin条)的距离用一个数值表示那么肯定就会存在不准确性。 下面是一个基于直方图距离的图像相似度计算的Matlab Demo和实验结果.

文本相似度算法

文本相似度算法 1.信息检索中的重要发明TF-IDF 1.1TF Term frequency即关键词词频,是指一篇文章中关键词出现的频率,比如在一篇M个词的文章中有N 个该关键词,则 (公式1.1-1) 为该关键词在这篇文章中的词频。 1.2IDF Inverse document frequency指逆向文本频率,是用于衡量关键词权重的指数,由公式 (公式1.2-1) 计算而得,其中D为文章总数,Dw为关键词出现过的文章数。 2.基于空间向量的余弦算法 2.1算法步骤 预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。 2.2步骤简介 2.2.1预处理 预处理主要是进行中文分词和去停用词,分词的开源代码有:ICTCLAS。 然后按照停用词表中的词语将语料中对文本内容识别意义不大但出现频率很高的词、符号、标点及乱码等去掉。如“这,的,和,会,为”等词几乎出现在任何一篇中文文本中,但是它们对这个文本所表达的意思几乎没有任何贡献。使用停用词列表来剔除停用词的过程很简单,就是一个查询过程:对每一个词条,看其是否位于停用词列表中,如果是则将其从词条串中删除。

图2.2.1-1中文文本相似度算法预处理流程 2.2.2文本特征项选择与加权 过滤掉常用副词、助词等频度高的词之后,根据剩下词的频度确定若干关键词。频度计算参照TF公式。 加权是针对每个关键词对文本特征的体现效果大小不同而设置的机制,权值计算参照IDF公式。 2.2.3向量空间模型VSM及余弦计算 向量空间模型的基本思想是把文档简化为以特征项(关键词)的权重为分量的N维向量表示。 这个模型假设词与词间不相关(这个前提造成这个模型无法进行语义相关的判断,向量空间模型的缺点在于关键词之间的线性无关的假说前提),用向量来表示文本,从而简化了文本中的关键词之间的复杂关系,文档用十分简单的向量表示,使得模型具备了可计算性。 在向量空间模型中,文本泛指各种机器可读的记录。 用D(Document)表示文本,特征项(Term,用t表示)指出现在文档D中且能够代表该文档内容的基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk 是特征项,要求满足1<=k<=N。 下面是向量空间模型(特指权值向量空间)的解释。 假设一篇文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为 D(a,b,c,d) 对于其它要与之比较的文本,也将遵从这个特征项顺序。对含有n个特征项的文本而言,通常会给每个特征项赋予一定的权重表示其重要程度,即 D=D(T1,W1;T2,W2;…,Tn,Wn)

信息检索几种相似度计算方法作对比

句子相似度地计算在自然语言处理具有很重要地地位,如基于实例地机器翻译( )、自 动问答技术、句子模糊匹配等.通过对术语之间地语义相似度计算,能够为术语语义识别[]、术语聚类[]、文本聚类[]、本体自动匹配[]等多项任务地开展提供重要支持.在已有地术语相似度计算方法中,基于搜索引擎地术语相似度算法以其计算简便、计算性能较高、不受特定领域语料库规模和质量制约等优点而越来越受到重视[]. 相似度计算方法总述: 《向量空间模型信息检索技术讨论》,刘斌,陈桦发表于计算机学报, 相似度():指两个文档内容相关程度地大小,当文档以向量来表示时,可以使用向量文 档向量间地距离来衡量,一般使用内积或夹角地余弦来计算,两者夹角越小说明似度 越高.由于查询也可以在同一空间里表示为一个查询向量(见图),可以通过相似度计算 公式计算出每个档向量与查询向量地相似度,排序这个结果后与设立地阈值进行比较. 如果大于阈值则页面与查询相关,保留该页面查询结果;如果小于则不相关,过滤此页.这样就可以控制查询结果地数量,加快查询速度.资料个人收集整理,勿做商业用途 《相似度计算方法综述》 相似度计算用于衡量对象之间地相似程度,在数据挖掘、自然语言处理中是一个基础 性计算.其中地关键技术主要是两个部分,对象地特征表示,特征集合之间地相似关系. 在信息检索、网页判重、推荐系统等,都涉及到对象之间或者对象和对象集合地相似 性地计算.而针对不同地应用场景,受限于数据规模、时空开销等地限制,相似度计算 方法地选择又会有所区别和不同.下面章节会针对不同特点地应用,进行一些常用地相 似度计算方法进行介绍.资料个人收集整理,勿做商业用途 内积表示法: 《基于语义理解地文本相似度算法》,金博,史彦君发表于大连理工大学学报, 在中文信息处理中,文本相似度地计算广泛应用于信息检索、机器翻译、自动问答系统、文本挖掘等领域,是一个非常基础而关键地问题,长期以来一直是人们研究地热点和难点.计算机对于中文地处理相对于对于西文地处理存在更大地难度,集中体现在对文本分词 地处理上.分词是中文文本相似度计算地基础和前提,采用高效地分词算法能够极大地提 高文本相似度计算结果地准确性.本文在对常用地中文分词算法分析比较地基础上,提出 了一种改进地正向最大匹配切分()算法及歧义消除策略,对分词词典地建立方式、分词 步骤及歧义字段地处理提出了新地改进方法,提高了分词地完整性和准确性.随后分析比 较了现有地文本相似度计算方法,利用基于向量空间模型地方法结合前面提出地分词算法,给出了中文文本分词及相似度计算地计算机系统实现过程,并以科技文本为例进行了 测试,对所用方法进行了验证.这一课题地研究及其成果对于中文信息处理中地多种领域 尤其是科技类文本相似度地计算比较,都将具有一定地参考价值和良好地应用前景.资料 个人收集整理,勿做商业用途

文本相似度算法基本原理

1文本相似度算法基本原理 1.1文本相似度含义 文本相似度来自于相似度概念,相似度问题是一个最基本的问题,是信息科学中绕不过去的概念,在不同的应用方向其含义有所不同,但基本的内涵表示了一个信息结构与另外一个信息结构的一致程度,从某个角度研究时特征量之间的距离大小[10]。比如,在机器翻译方面是指词这个基本单位的可替代性,在信息检索方面是指检索结果与检索内容的一致性,在自动问答方面是指搜索的结果与输入的问题的匹配程度。这充分表明文本相似度研究和应用领域十分广泛,所表达的含义也十分不同。从本文研究的角度来看,文本相似度可以描述为:有A、B两个对象,二者之间的公共区域越多、共性越大,则相似程度越高;若二者没有关联关系,则相似程度低。在文本相似度研究方面,一个层次是研究文档中以篇章、句子、词语衡量相似程度,这不同层次衡量算法也不同,研究的标准和依据也不同,算法的复杂程度也不同。从这个意义上,可以运用在新闻领域对新闻稿件进行归档,按照新闻的领域分门别类的存放在一起;也可以运用在信息检索进行信息查询,作为一个文本与另一个文本之间相似程度测量的基本方法。 1.2文本相似度计算方法分类 当前研究文本相似度都是以计算机作为计算工具,即利用计算机算法对文本进行分类,在各个领域应用十分广泛,比如包括网页文本分类、数据智能挖掘、信息识别检索、自动问答系统、论文查重分析和机器自主学习等领域,其中起最关键作用的是文本相似度计算算法,在信息检索、数据挖掘、机器翻译、文档复制检测等领域有着广泛的应用。 特别是随着智能算法、深度学习的发展,文本相似度计算方法已经逐渐不再是基于关键词匹配的传统方法,而转向深度学习,目前结合向量表示的深度学习使用较多,因此度量文本相似度从方法论和算法设计全局的角度看,一是基于关键词匹配的传统方法,如N-gram相似度;二是将文本映射到向量空间,再利用余弦相似度等方法,三是运用机器学习算法的深度学习的方法,如基于用户点击数据的深度学习语义匹配模型DSSM,基于卷积神经网络的ConvNet和LSTM 等方法。 本文研究的重点是对电子作业检查等各类电子文档对比,在对两个电子文档是否相同,相似比例为多少这一问题探究中需要比较文档的相似度,而文档的相似度又可分成段落相似度、句子相似度来进行考虑,所以课题的关键是如何定义

词语相似度算法的分析与改进

词语相似度算法的分析与改进 摘要:对现有的词语相似度算法进行分析,提出一种基于知网,面向语义、可扩展的词语相似度计算方法,通过对实验结果进行分析,所提出的词语语义相似度计算方法比以前的方法更好,在计算词语相似度时,准确率更高。 关键词:词语相似度算法;义原相似度计算;概念词的相似度计算;非概念词的相似度计算 在建立主观题评分模型时,要判断句子的相似度,计算句子的相似度时,首先要处理的就是词语的相似度计算工作。目前对词语的相似度计算人们已经做了大量的研究,提出了一些较有代表性的计算方法。主要包括以下几种: 1)基于字面信息的词语相似度计算 这种算法的核心内容是:中文词语的构成句子中,一般较核心的内容都放在句子的后面。句子后面的词语在句子中所起到的作用比靠前的词语大。因此在对句子进行分析时需要给后面的字或词赋予较高的权值。 假设a和b分别代表两个词语,按照此算法,词语之间的相似度计算公式可以表示为公式1。 使用字面信息作为相似度计算的算法较简单,实现起来也方便。但该算法准确率不高,尤其是对于语义相似的词语更是难于处理。2)基于词林的词语相似度计算 对于以同义词词林作为语义分类体系进行词语相似度计算的研

究,王斌和章成志都曾作了相关探讨[1]。其核心思想是使用两个词语的语义距离来表示词语间相似度。当处理对象是一个词组或短语时,首先将其切分为义类词,并将义类词在词林的树状结构中提取出相关的语义编码,并对两个词语的语义编码进行相似度计算。基于词林的词语相似度计算较好的解决了语义相似、词形不同的词语相似度计算,但由于语义词典的完备性问题,必然会存在部分不在语义词典中的词语而无法处理。 3)基于知网的词语相似度计算 知网以概念作为描述对象,从关系层次上揭示词语的概念含义,并建立了概念关系网络,包含词语属性以及属性间关系[2]。刘群、李素建从知网的关系描述出发,研究了同一个词义所具有的多个义原间的关系,并试图计算出这些义原在计算相似度时所起到的作用,并根据这种思想提出了使用知网的语义信息来计算词语相似度的算法。 该算法在计算概念词的相似度时较准确,但在计算概念词与非概念词,非概念词与非概念词的相似度时,准确率不高。 为克服这些问题,我们采用知网作为语义资源,结合信息论中的相关理论,提出了一种面向语义的、可扩展的、多策略混合的词语相似度计算模型。 1 义原相似度计算 词语的相似度计算,最终还是要计算各词语的义源相似度。在知网中,所有词语都包含义原信息,应用知网进行相似度计算时,第

基于《知网》的词语相似度计算

基于《知网》的词语相似度计算 [摘要]词语相似度计算是计算机中文处理中的基础和重要环节,目前基于《知网》的词语相似度计算是一种常见的方法,本文将对该方法做系统介绍。 [关键词]《知网》词语相似度计算 一、《知网》的结构 《知网》(HowNet)是我国著名机器翻译专家董振东先生和董强先生创建的,是一个常识知识库,它含有丰富的词汇语义知识以及世界知识,内部结构复杂。 《知网》中两个最基础的概念是“概念”和“义原”。“概念”是用来描述词语语义。因为一个词可以含有多个语义,所以一个词需要多个概念来描述。使用“知识表示语言”对概念进行描述,“知识表示语言”使用的“词汇”便是义原。《知网》中的不可再分的、最小的意义单位是“义原”,义原用来描述“概念”。 《知网》采用的义原有1500个,它们一共可以分为十类,具体见图1。 知网反映了概念之间、概念属性之间各种各样的关系,总体来说知网描述了16种关系: 上下位关系;同义关系、反义关系、对义关系;部件-整体关系;属性-宿主关系;材料-成品关系;施事/经验者/关系;主体-事件关系;受事/内容/领属物等事件关系;工具-事件关系;场所-事件关系;时间-事件关系;值-属性关系;实体-值关系;事件-角色关系;相关关系。 由《知网》的结构得知义原之间组成的不是一个树状结构,而是一个复杂的网状结构。然而义原关系中最重要的是上下位关系。所有的“基本义原”以这种上下位关系为基础构成了义原层次体系,叫做义原分类树。在义原分类树中,父节点义原和子节点义原之间具有上下位关系。可以通过义原分类树来计算词语和词语之间的语义距离。 二、知网的知识词典 知识词典是知网中最基本的数据库。在知识词典中,每一个概念(概念又称为义项)可以用一条记录来描述。一条记录含有八项信息,每一项由用“=”连接的两个部分组成,等号左边表示数据的域名,右边是数据的值。比如下面就是一条描述概念的记录: NO=017114

文本相似度的设计与实现

文本相似度的设计与实现 摘要:本文主要设计并实现了一个文本相似度系统,该系统主要功能计算文档之间的相似度,通过使用向量空间模型(VSM, Vector Space Model)及余弦相似度计算公式计算文档之间的相似度,数据预处理过程中加入word2vec模型进行语义扩充,从而能够匹配到更多相关文档。 1.向量空间模型 向量空间模型(VSM, Vector Space Model)由Salton等人于20世纪70年代年提出[1,2]。向量空间模型的主要思想是将文本内容的处理简化为向量空间中的向量运算,这样将空间上的相似度转化为语义上的相似度。当文档被表示为文档空间的向量时,便可通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。 向量空间模型的基本思想: 给定一篇文档D=D(T1,T2,…T i,…,T n),若T i在文档中既可以重复出现又存在先后次序,因此分析起来会较为困难。针对上述情况,暂不考虑T i的顺序,并要求T i互异,此时可将T1,T2,…T i,…,T n看作n维坐标,每一维对应相应值W i,因此D(W1,W2,…,W i,…,W n)便可以看作一个n维向量。 例如:有一篇文档D={大家好,才是真的好},首先进行分词后转换为D={大家/好/才是/真的/好},之后提取出公因词D={大家,好,才是,真的},最后通过向量空间模型将文档转换为对应的向量D={1,2,1,1}。 向量空间模型只是将文档转换为方便计算的格式,若进行相似度计算,还需使用相似度计算公式进行计算。本文使用余弦相似度计算公式。 2.余弦相似度 余弦相似度计算公式广泛应用于文本数据之间的相似度计算过程中。其数学表达如下: 计算过程如下: 例如,有2个文档D1={大家好},D2={才是真的好},首先将D1、D2分词后,D1={大家/好},D2={才是/真的/好},其次提取出公因词D={大家,好,才是,真的},然后通过向量空间模型转换成向量表达,D1={1,1,0,0},D2={0,1,1,1},最后进行相似度计算 Score== 3.文本相似度系统 本文主要使用向量空间模型及余弦相似度距离公式进行文本相似度计算任务,系统的基本架构如下图1所示:

相似度计算方法

基于距离的计算方法 1. 欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。 (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离: (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: (3)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的欧氏距离: 也可以用表示成向量运算的形式: (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离 X = [0 0 ; 1 0 ; 0 2] D = pdist(X,'euclidean') 结果: D = 1.0000 2.0000 2.2361 2. 曼哈顿距离(Manhattan Distance) 从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除

非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。 (1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离 (2)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的曼哈顿距离 (3) Matlab计算曼哈顿距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离 X = [0 0 ; 1 0 ; 0 2] D = pdist(X, 'cityblock') 结果: D = 1 2 3 5. 标准化欧氏距离 (Standardized Euclidean distance ) (1)标准欧氏距离的定义 标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为: 而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是: 标准化后的值= ( 标准化前的值-分量的均值) /分量的标准差 经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式: 如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。

信息检索几种相似度计算方法作对比

几种相似度计算方法作对比 句子相似度的计算在自然语言处理具有很重要的地位,如基于实例的机器翻译(Example Based Ma-chine Translation,EBMT)、自动问答技术、句子模糊匹配等.通过对术语之间的语义相似度计算,能够为术语语义识别[1]、术语聚类[2]、文本聚类[3]、本体自动匹配[4]等多项任务的开展提供重要支持。在已有的术语相似度计算方法中,基于搜索引擎的术语相似度算法以其计算 简便、计算性能较高、不受特定领域语料库规模和质量制约等优点而越来越受到重视[1]。 相似度计算方法总述: 1 《向量空间模型信息检索技术讨论》,刘斌,陈桦发表于计算机学报,2007 相似度S(Similarity):指两个文档内容相关程度的大小,当文档以向量来表示时,可 以使用向量文档向量间的距离来衡量,一般使用内积或夹角0的余弦来计算,两者夹角越小说明似度越高。由于查询也可以在同一空间里表示为一个查询向量(见图1),可以通过相似度计算公式计算出每个档向量与查询向量的相似度,排序这个结果后与设立的阈值进行比较。如果大于阈值则页面与查询相关,保留该页面查询结果;如果小于则不相关,过滤此页。这 样就可以控制查询结果的数量,加快查询速度。 2 《相似度计算方法综述》 相似度计算用于衡量对象之间的相似程度,在数据挖掘、自然语言处理中是一个基础性计算。其中的关键技术主要是两个部分,对象的特征表示,特征集合之间的相似关系。在信息检索、网页判重、推荐系统等,都涉及到对象之间或者对象和对象集合的相似性的计算。而针对不同的应用场景,受限于数据规模、时空开销等的限制,相似度计算方法的选择又会有所区别和不同。下面章节会针对不同特点的应用,进行一些常用的相似度计算方法进行介绍。 内积表示法: 1 《基于语义理解的文本相似度算法》,金博,史彦君发表于大连理工大学学报,2007 在中文信息处理中,文本相似度的计算广泛应用于信息检索、机器翻译、自动问答系统、文本挖掘等领域,是一个非常基础而关键的问题,长期以来一直是人们研究的热点和难点。计算机对于中文的处理相对于对于西文的处理存在更大的难度,集中体现在对文本分词的处理上。分词是中文文本相似度计算的基础和前提,采用高效的分词算法能够极大地提高文本相似度计算结果的准确性。本文在对常用的中文分词算法分析比较的基础上,提出了一种改进的正向最大匹配切分(MM)算法及歧义消除策略,对分词词典的建立方式、分词步骤及歧义字段的处理提出了新的改进方法,提高了分词的完整性和准确性。随后分析比较了现有的文本相似度计算方法,利用基于向量空间模型的TF-IDF方法结合前面提出的分词算法,给出了中文文本分词及相似度计算的计算机系统实现过程,并以科技文本为例进行了测试,对所用方

词语相似度计算方法

词语相似度计算方法分析 崔韬世麦范金 桂林理工大学广西 541004 摘要:词语相似度计算是自然语言处理、智能检索、文档聚类、文档分类、自动应答、词义排歧和机器翻译等很多领域的基础研究课题。词语相似度计算在理论研究和实际应用中具有重要意义。本文对词语相似度进行总结,分别阐述了基于大规模语料库的词语相似度计算方法和基于本体的词语相似度计算方法,重点对后者进行详细分析。最后对两类方法进行简单对比,指出各自优缺点。 关键词:词语相似度;语料库;本体 0 引言 词语相似度计算研究的是用什么样的方法来计算或比较两个词语的相似性。词语相似度计算在自然语言处理、智能检索、文本聚类、文本分类、自动应答、词义排歧和机器翻译等领域都有广泛的应用,它是一个基础研究课题,正在为越来越多的研究人员所关注。笔者对词语相似度计算的应用背景、研究成果进行了归纳和总结,包括每种策略的基本思想、依赖的工具和主要的方法等,以供自然语言处理、智能检索、文本聚类、文本分类、数据挖掘、信息提取、自动应答、词义排歧和机器翻译等领域的研究人员参考和应用。词语相似度计算的应用主要有以下几点: (1) 在基于实例的机器翻译中,词语相似度主要用于衡量文本中词语的可替换程度。 (2) 在信息检索中,相似度更多的是反映文本与用户查询在意义上的符合程度。 (3) 在多文档文摘系统中,相似度可以反映出局部主题信息的拟合程度。 (4) 在自动应答系统领域,相似度的计算主要体现在计算用户问句和领域文本内容的相似度上。 (5) 在文本分类研究中,相似度可以反映文本与给定的分类体系中某类别的相关程度。 (6) 相似度计算是文本聚类的基础,通过相似度计算,把文档集合按照文档间的相似度大小分成更小的文本簇。1 基于语料库的词语相似度计算方法 基于统计方法计算词语相似度通常是利用词语的相关性来计算词语的相似度。其理论假设凡是语义相近的词,它们的上下文也应该相似。因此统计的方法对于两个词的相似度算建立在计算它们的相关词向量相似度基础上。首先要选择一组特征词,然后计算这一组特征词与每一个词的相关性(一般用这组词在实际的大规模语料中在该词的上下文中出现的频率来度量),于是,对于每一个词都可以得到一个相关性的特征词向量,然后计算这些向量之间的相似度,一般用向量夹角余弦的计算结果作为这两个词的相似度。 Lee利用相关熵,Brown采用平均互信息来计算词语之间的相似度。李涓子(1999)利用这种思想来实现语义的自动排歧;鲁松(2001)研究了如何利用词语的相关性来计算词语的相似度。PBrownetc采用平均互信息来计算词语之间的相似度。基于统计的定量分析方法能够对词汇间的语义相似性进行比较精确和有效的度量。基于大规模语料库进行的获取受制于所采用的语料库,难以避免数据稀疏问题,由于汉语的一词多义现象,统计的方法得到的结果中含有的噪声是相当大的,常常会出现明显的错误。 2 基于本体库的词语相似度计算方法 2.1 常用本体库 关于Ontology的定义有许多,目前获得较多认同的是R.Studer的解释:“Ontology是对概念体系的明确的、形式

相似度测度总结汇总

1 相似度文献总结 相似度有两种基本类别: (1)客观相似度,即对象之间的相似度是对象的多维特征之间的某种函数关系,比如对象之间的欧氏距离;(2)主观相似度,即相似度是人对研究对象的认知关系,换句话说,相似度是主观认知的结果,它取决于人及其所处的环境,主观相似度符合人眼视觉需求,带有一定的模糊性[13]。 1.1 客观相似度 客观相似度可分为距离测度、相似测度、匹配测度。它们都是衡量两对象客观上的相近程度。客观相似度满足下面的公理,假设对象 A 与B 的相似度判别为 (,)A B δ,有: (1) 自相似度是一个常量:所有对象的自相似度是一个常数,通常为 1,即 (,)(,)1A A B B δδ== (2) 极大性:所有对象的自相似度均大于它与其他对象间的相似度,即 (,)(,)(,)(,)A B A A A B B B δδδδ≤≤和。 (3) 对称性:两个对象间的相似度是对称的,即(,)(,)A B B A δδ=。 (4) 唯一性:(,)1A B δ=,当且仅当 A B =。 1.1.1 距离测度 这类测度以两个矢量矢端的距离为基础,因此距离测度值是两矢量各相应分量之差的函数。设{}{}'' 1212,,,,,,,n n x x x x y y y y ==K K 表示两个矢量,计算二者之间距离测度的具体方式有多种,最常用的有: 1.1.1.1 欧氏距离:Euclidean Distance-based Similarity 最初用于计算欧几里德空间中两个点的距离,假设 x ,y 是 n 维空间的两个点,它们之间的欧几里德距离是: 1/221(,)()n i i i d x y x y x y =??=-=-????∑ ()

领域文本信息抽取中的短语相似度计算方法

龙源期刊网 https://www.doczj.com/doc/d58828680.html, 领域文本信息抽取中的短语相似度计算方法作者:沈洁彭敦陆 来源:《软件导刊》2017年第04期 摘要:随着信息化的深入发展,各应用领域积累了大量采用半结构化方式记录的文本数据。为了快速有效地从大规模面向领域的半结构化文本中抽取有用信息,信息抽取技术应运而生。文本信息抽取的核心算法之一是计算词或短语的相似度,针对面向领域的半结构化文本中的中文短语相似度计算,先采用模式匹配算法从原始半结构化文本中抽取中文短语,然后结合领域语义依存关系,对基于公共子串的短语相似度计算方法进行改进,以此提高短语相似度计算的可靠性。实验结果表明,所提算法具有较好的计算效果。关键词:领域半结构化文本;公共子串;依存关系(DOI)DOI:10.11907/rjdk.162708中图分类号:TP301文献标识码:A (文章编号)文章编号:16727800(2017)0040006030 引言在信息爆炸的今天,各大领域都产生了大规模的半结构化文本。在医疗领域,产生了大量的电子病历文本[1];在司法领域, 产生了大量的审判案件法律文书。对领域文本进行高效地信息抽取,是实现文本数据结构化和领域数据分析的基础,而短语相似度计算又是进行正确信息抽取的前提。通常,由于缺乏背 景知识,直接从面向领域的半结构文本中抽取的短语不够准确,难以与领域知识相对应。一种可能的方法是从领域知识库中查找与抽取短语相似的短语来提高信息抽取的准确性。由此,需要高效地计算从文本中抽取出的短语与领域知识库中的短语相似度。迄今为止,短语相似度的计算已应用于诸多方面,例如文本聚类[2]、文本检索[3]和机器翻译[4]等。在司法领域,为了对大量案件进行有效的数据分析,首先需要对审判案件的法律文书进行信息抽取,形成结构化数据。在针对法律文书(如判决书)抽取的大量数据项中,有一类数据项是由一组连续词语组成的短语,例如,针对“案由”这个数据项,在判决书中可能会抽取到“贩卖毒品罪”,而这一短语在面向司法领域的知识库(取自我国《刑法》)中的对应短语是“走私、贩卖、运输、制造毒品罪”,两者之间不完全相同,但相比其它短语则更加相似。研发出高效计算文本中抽取出的短语与领域知识库中短语的相似度计算方法,有助于提高领域信息抽取的准确度和抽取效率。1 准备工作1.1 面向领域的中文短语抽取〖ST〗〖WT〗与领域相关的中文短语抽取是面向领域的半结构化文本信息抽取的重要任务之一。抽取出的短语以结构化的形式进行存储,为后期的数据分析服务。在短语抽取中,先使用基于模式匹配的结构化信息抽取方法[5],从面 向领域的半结构化文本中抽取中文短语。下面以实现来说明该算法的执行过程。例如,对短 语“指控被告人王某犯贩卖毒品罪一案”,首先进行分词,然后选取案件案由的抽取模式(见图1)对分词序列进行模式匹配得到目标短语。其中,keyword、itemword、objphrase分别表示关键词、普通词和目标短语。通过增加关键词同义词的方式对案件案由的抽取模式进行优化,这样该算法就可以克服传统模式的不足,准确地匹配包括同义词在内的短语表达。< pattern keyword ="指控" pos ="v" >< keyword-synonym >< synonym name ="控告" pos ="v" / >< / keyword-synonym >< Cluster id ="1" >< patternStr >< pattern id ="1" value =" \\s keyword/v 被告人/n itemword/nr 犯/v objphrase/n 一/m 案/ng \\b" >< / patternStr >< / Cluster >< / pattern >1.2 构建领域知识库法律文书由司法相关工作人员人工进行书写,书写过程中会出现书写不规范 的情况。例如使用上节阐述的算法从法律文书中抽取的案件案由为“贩卖毒品罪”,而这一短语

向量的相似度计算常用方法个

向量的相似度计算常用方法 相似度的计算简介 关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。下面我们详细介绍几种常用的相似度计算方法。 共8种。每人选择一个。第9题为选做。 编写程序实现(这是第一个小练习,希望大家自己动手,java实现)。计算两个向量的相似性: 向量1(0.15, 0.45, 0.l68, 0.563, 0.2543, 0.3465, 0.6598, 0.5402, 0.002) 向量2(0.81, 0.34, 0.l66, 0.356, 0.283, 0.655, 0.4398, 0.4302, 0.05402) 1、皮尔逊相关系数(Pearson Correlation Coefficient) 皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1] 之间。 s x , s y 是 x 和 y 的样品标准偏差。 类名:PearsonCorrelationSimilarity 原理:用来反映两个变量线性相关程度的统计量 范围:[-1,1],绝对值越大,说明相关性越强,负相关对于推荐的意义小。 说明:1、不考虑重叠的数量;2、如果只有一项重叠,无法计算相似性(计算过程被除数有n-1);3、如果重叠的值都相等,也无法计算相似性(标准差为0,做除数)。

该相似度并不是最好的选择,也不是最坏的选择,只是因为其容易理解,在早期研究中经常被提起。使用Pearson线性相关系数必须假设数据是成对地从正态分布中取得的,并且数据至少在逻辑范畴内必须是等间距的数据。Mahout中,为皮尔森相关计算提供了一个扩展,通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。 2、欧几里德距离(Euclid ean Distance) 最初用于计算欧几里德空间中两个点的距离,假设 x,y 是 n 维空间的两个点,它们之间的欧几里德距离是: 可以看出,当 n=2 时,欧几里德距离就是平面上两个点的距离。当用欧几里德距离表示相似度,一般采用以下公式进行转换:距离越小,相似度越大。 类名:EuclideanDistanceSimilarity 原理:利用欧式距离d定义的相似度s,s=1 / (1+d)。 范围:[0,1],值越大,说明d越小,也就是距离越近,则相似度越大。 说明:同皮尔森相似度一样,该相似度也没有考虑重叠数对结果的影响,同样地,Mahout通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。 3、Cosine 相似度(Cosine Similarity) Cosine 相似度被广泛应用于计算文档数据的相似度: 类名: UncenteredCosineSimilarity 原理:多维空间两点与所设定的点形成夹角的余弦值。 范围:[-1,1],值越大,说明夹角越大,两点相距就越远,相似度就越小。 说明:在数学表达中,如果对两个项的属性进行了数据中心化,计算出来的余弦相似度和皮尔森相似度是一样的,在mahout中,实现了数据中心化的过程,所以皮尔森相似度值也是数据中心化后的余弦相似度。另外在新版本

相关主题
文本预览
相关文档 最新文档