当前位置:主页 > 心情随笔正文

文章相似度检测工具(一种简单高效的算法)

10-28 心情随笔

人工智能之计算两篇文章的相似度

每年六月,都是一个毕业季。每个大学生不仅要参加论文答辩,还要提交优质的论文。但什么样的论文才能被认为是优质的呢?最基本的一个要求就是查重率不能超过30%(这个每个学校可能要求不一样,有的是20%)。那么问题来了,我们的论文在知网下是怎么计算出查重率的呢?其实查重率最重要的是计算两篇文章的相似度。

文本相似度

文本相似度计算在信息检索、数据挖掘、机器翻译、文档复制检测等领域有着广泛应用。例如舆论控制,假设你开发了一个微博网站,并且已经把世界上骂人的句子都已经收录进了一个数据库,那么当一个用户发微博时会先跟骂人句子的数据库进行比较,如果符合里面的句子就不让用户发出去。

基本算法--余弦相似度

使用TF-IDF算法,找出两篇文章的关键词;

每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);

生成两篇文章各自的词频向量;

计算两个向量的余弦相似度,值越大就表示越相似。

对于TF-IDF算法,我在之前的文章介绍过,有需要的可以去翻阅。这篇文章主要详细讲述余弦相似度算法。

假设向量a、b的坐标分别为(x1,y1)、(x2,y2) 。则:

人工智能之计算两篇文章的相似度

设向量 A = (A1,A2,...,An),B = (B1,B2,...,Bn) 。推广到多维,数学家已经帮我们证明了,所以你只要记住下面的公式:

人工智能之计算两篇文章的相似度

简单来说可以写成下面的式子:

人工智能之计算两篇文章的相似度

举一个具体例子,我们先从句子开始:

句子A:我喜欢看电视,不喜欢看电影。

句子B:我不喜欢看电视,也不喜欢看电影。

第一步:分词

句子A:我/喜欢/看/电视,不/喜欢/看/电影。

句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。

第二步:列出所有的词

我,喜欢,看,电视,电影,不,也

第三步:计算词频

句子A:我 1,喜欢 2,看 2,电视 1,电影 1,不 1,也 0

句子B:我 1,喜欢 2,看 2,电视 1,电影 1,不 2,也 1

第四步:写出词频向量

句子A:[1, 2, 2, 1, 1, 1, 0]

句子B:[1, 2, 2, 1, 1, 2, 1]

第五步:计算余弦值

人工智能之计算两篇文章的相似度

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

简单来说上面计算出的值代表两个句子大概九成相似,越接近1就越相似。

人工智能之计算两篇文章的相似度

版权保护: 本文由 主页 原创,转载请保留链接: http://www.pick52.cn/suibi/1345.html