微信号:shushuojun

介绍:数据分析师之家.旨在为数据人提供一个学习、分享、互帮互助的家园.

文本相似度 | 余弦相似度思想

2017-02-13 23:57 数说君

我一直觉得,在数据分析领域,只有文本分析是最“接地气儿”的,“接地气儿”不是指最简单,而是我们普通大众的使用它最多。


我们每天使用互联网,但不一定每个人都炒股,不一定都做行业研究,也不一定都搞科研,因此那些高大上的模型对大部分人来说都是飘忽在天上的,只有文本分析,他的产出结果是直接惠及到几乎全部人。


比如,你总得打字,会使用到输入法的模糊匹配;你总得网购,刷新页面的时候就会看到某宝给你推荐的产品;你总得看新闻,APP会根据你以往的输入给你推荐文章......


文本分析最基本的可以看正则表达式,我曾经写过SAS和Python的相关文章:



这个小系列,介绍的是计算文本之间的相似度


1. 计算文本相似度有什么用?


  • 反垃圾文本的捞取

“诚聘淘宝兼职”、“诚聘打字员”...这样的小广告满天飞,作为网站或者APP的运营者,不可能手动将所有的广告文本放入屏蔽名单里,挑几个典型广告文本,与它满足一定相似度就进行屏蔽。


  • 推荐系统

在微博和各大BBS上,每一篇文章/帖子的下面都有一个推荐阅读,那就是根据一定算法计算出来的相似文章。


  • 冗余过滤

我们每天接触过量的信息,信息之间存在大量的重复,相似度可以帮我们删除这些重复内容,比如,大量相似新闻的过滤筛选。


这里有一个在线计算程序,你们可以感受一下



忘了说了,复制下面地址到浏览器:http://51tools.info/textsimilarity.aspx


2. 余弦相似度的思想


余弦相似度,就是用空间中两个向量的夹角,来判断这两个向量的相似程度:


  • 当两个向量夹角越大,距离越远,最大距离就是两个向量夹角180°;

  • 夹角越小,距离越近,最小距离就是两个向量夹角0°,完全重合。


借鉴这一思想,我们可以计算出两个文本的相似程度。但,我们真的要用夹角的大小去衡量吗?


文本1与文本2之间的夹角估计有37°;

文本A与文本C之间的夹角大概72.8°



相似度,个么侬就好好弄一个相似程度好伐?比如99%相似、10%相似,更关键的是,夹角这个东西——


我不会算!


谁来跟我说说两个空间向量的角度怎么计算?哪本书有?


一个更好的方法是计算夹角的余弦,对,就是那个初二学的——cos(θ)!这个不仅有公式可以算,而且结果也很有意义,是一个0-1的取值。


所以,用余弦夹角来计算两个文本的距离的步骤就是:


  • 首先,将两个文本数字化,变成两个向量;

  • 其次,计算两个向量的夹角余弦cos(θ)


结束。




我好像看了一篇假文章......


真的文章在下一期,将会介绍:


  • 如何将文本向量化;

  • 向量的夹角如何计算;

  • 相关的程序代码是什么?



1. 关于数据分析的提问求助,可以在分答中搜索“数说君”找我。

2. 点击链接→数据分析合作小组,查看数据分析合作小组

3. 查看所有文章请在后台回复【M】

4. 获取数说君每日私享资讯,请关注微博 @数说工作室网站



数说工作室,数据中看大势

微信ID:shushuojun


长按二维码关注数说工作室

 
数说工作室 更多文章 数说工作室 2016年干货总结 Python & R 代码 对照速查表 文本相似度 | 余弦相似度思想 Python & R 代码 对照速查表 Python & R 代码 对照速查表
猜您喜欢 满分是我们对用户最大的诚意! iOS 10 iMessage字符崩溃Bug又来了 三种必备内存&CPU测试的方法 | Android性能测试白皮书 【干货】PHP中9大缓存技术 与HTTP有什么区别?HTTPS的七个误解