对于这个题目,开始毫无头绪,后来经过查阅资料现在讲方法总结如下:

  1、利用余弦定理
   我们知道向量a,b之间的夹角可用余弦定理求得:
          
  如果夹角的余弦值越小,那么夹角也越大。如果2个向量相等,那么其值为1。利用此我们可以用来比较文章的相似性。
  首先使用一个向量来描述一篇文章,对于一篇文章中的实词,我们可以计算出它们的单文本词汇频率/逆文本频率值(TF/IDF)。不难想象,和新闻主题有关的那些实词频率高,TF/IDF 值很大。我们按照这些实词在词汇表的位置对它们的 TF/IDF 值排序。比如,词汇表有六万四千个词,分别为
  单词编号 汉字词
  ------------------
  1 阿
  2 啊
  3 阿斗
  4 阿姨
  ...
  789 服装
  ....
  64000 做作
在一篇新闻中,这 64,000 个词的 TF/IDF 值分别为
  单词编号 TF/IDF 值
  ==============
  1 0
  2 0.0034
  3 0
  4 0.00052
  5 0
  ...
  789 0.034
  ...
  64000 0.075
如果单词表中的某个文章中没有出现,对应的值为零,那么这 64,000 个数,组成一个64,000维的向量。我们就用这个向量来代表这篇新闻,并成为文章的特征向量。如果两篇文章的特征向量相近,则对应的新闻内容相似,它们应当归在一类,反之亦然。

2、利用simhash算法
  simhash算法的输入是一个向量,输出是一个f位的签名值。为了陈述方便,假设输入的是一个文档的特征集合,每个特征有一定的权重。比如特征可以是文档中的词,其权重可以是这个词出现的次数。simhash算法如下:
1,将一个f维的向量V初始化为0;f位的二进制数S初始化为0;
2,对每一个特征:用传统的hash算法对该特征产生一个f位的签名b。对i=1到f:
如果b的第i位为1,则V的第i个元素加上该特征的权重;
否则,V的第i个元素减去该特征的权重。  
3,如果V的第i个元素大于0,则S的第i位为1,否则为0;
4,输出S作为签名。

通过计算两篇文章的签名的海明距离得出相似度。
如图:

以上的所有算法我们都只关注文章的全局信息,忽略了文章的局部信息。

海明距离:

对于向量u,v,海明距离为2个向量相异的位数

其中u_i,v_i表示第i维值。

当然还有一些其他的好方法。本文部分内容来自德问,谢谢相关作者的回答。

比较两篇文章的相似性方法相关推荐

  1. python余弦定理_使用余弦定理计算两篇文章的相似性

    使用余弦定理计算两篇文章的相似性:(方法论,细致易懂版) http://blog.csdn.net/dearwind153/article/details/52316151 python 实现(代码) ...

  2. 比较两篇文章的相似性

    跟字符串的编辑距离不同,这里通常采用VSM+余弦定理:http://www.dewen.org/q/6668/%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E4%B8%80 ...

  3. [将小白进行到底] 如何比较两篇文章的相似度

    其实这个题目已经有很多人写过了,数学之美里就有,最近阮一峰的博客里也写了,本文基本上遵循的就是他的思路,只是让其看起来再小白一点点.其实说白了就是用自己的话,再把同样一件事描述一下,顺便扩扩句,把其中 ...

  4. 【python 走进NLP】simhash 算法计算两篇文章相似度

    互联网网页存在大量的重复内容网页,无论对于搜索引擎的网页去重和过滤.新闻小说等内容网站的内容反盗版和追踪,还是社交媒体等文本去重和聚类,都需要对网页或者文本进行去重和过滤.最简单的文本相似性计算方法可 ...

  5. 对张子阳先生对委托和事件的两篇文章的读后思考(说得很透,内附故事一篇)...

    第一篇 C#中的委托和事件 第二篇 C#中的委托和事件(续) 首先,张子阳先生的这是两篇关于委托和事件间关系的文章,是目前为止我读过的介绍委托和事件以及异步调用最简明清晰文章,作者通过非常有节奏的&q ...

  6. 关于微服务的两篇文章以及Eventuate

    微服务相关的两篇文章,很多之前一知半解的概念与关系,看过之后,茅塞顿开! 微服务架构之事件驱动架构 http://m.blog.csdn.net/article/details?id=52537886 ...

  7. C++/JAVA 计算两篇文章的相似度

    C++/JAVA 计算两篇文章的相似度 这位少侠,要不要进店瞧瞧? 实验介绍及思路 问题描述: 编写程序,计算任意两篇文章的相似度. 基本思路: 利用余弦相似度来计算其相似度. 完整代码 C++ 代码 ...

  8. 【读书笔记】NeurIPS2018的两篇文章:The Tradeoffs of Large Scale Learning和Neural Ordinary Differential Equations

    今天看了 NeurIPS 2018 上的两篇文章,一篇是获得 best paper 的 Neural Ordinary Differential Equations (陈天奇的文章),一篇是获经典论文 ...

  9. 判断两条轨迹的相似性方法

    判断两条轨迹的相似性方法有很多基于点方法: EDR,LCSS,DTW等基于形状的方法: Frechet, Hausdorff基于分段的方法:One Way Distance, LIP distance ...

最新文章

  1. 写入时复制(Copy-on-write)机制
  2. Java: 面向对象程序设计(上)
  3. AngularJS 1.x 国际化——Angular-translate例子
  4. 使用高级管理控制台获得对Windows Home Server的扩展访问
  5. drools。drools_使用Drools跟踪输出
  6. 使用DynamoDBMapper插入DynamoDB项目
  7. ibatis mysql 配置文件详解_MyBatis配置文件详解
  8. 转自他人——django实例教程
  9. Study 3 —— Python运算符
  10. Matpower安装流程
  11. EAS BOS 序时簿做组织单元隔离
  12. SylixOS---Attach 到进程调试方法
  13. 深度学习细颗粒图像分析综述
  14. NYOJ 32 组合数
  15. AC自动机模板(【洛谷3808】)
  16. 发展数字经济具有重要意义
  17. 16线激光雷达3Dslam建图算法BLAM使用
  18. oracle网页客户端工具
  19. Python循环 - 胖子老板来包烟
  20. 从0到1的CTF之旅————Crypto(2)

热门文章

  1. [终于解决]Ubuntu14.04 32位安装移动网卡(0bda:b711)驱动8188gu tplink-WN726n
  2. matlab 能谱图,基于Matlab平台上γ能谱光滑处理
  3. SAE 1939学习笔记(三)
  4. python怎样批量修改文件大小_python:批量修改文件名批量修改图片尺寸
  5. Solidity学习记录——第四章
  6. Python之父吉多·范罗苏姆谈中国的996工作制度
  7. Android数据库的使用
  8. 全志 H6 Orange Pi Lite 2 Android 7.0 WIFI配置
  9. 142 推荐系统架构(淘宝和京东)
  10. php中until的用法,until用法解析(完美篇)