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


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

文章插图
每年六月,都是一个毕业季 。每个大学生不仅要参加论文答辩,还要提交优质的论文 。但什么样的论文才能被认为是优质的呢?最基本的一个要求就是查重率不能超过30%(这个每个学校可能要求不一样,有的是20%) 。那么问题来了,我们的论文在知网下是怎么计算出查重率的呢?其实查重率最重要的是计算两篇文章的相似度 。
文本相似度文本相似度计算在信息检索、数据挖掘、机器翻译、文档复制检测等领域有着广泛应用 。例如舆论控制,假设你开发了一个微博网站,并且已经把世界上骂人的句子都已经收录进了一个数据库,那么当一个用户发微博时会先跟骂人句子的数据库进行比较,如果符合里面的句子就不让用户发出去 。
基本算法--余弦相似度
  1. 使用TF-IDF算法,找出两篇文章的关键词;
  2. 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
  3. 生成两篇文章各自的词频向量;
  4. 计算两个向量的余弦相似度,值越大就表示越相似 。
对于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就越相似 。
一种简单高效的算法 文章相似度检测工具

文章插图
【一种简单高效的算法 文章相似度检测工具】