专栏名称: 机器学习研究会
机器学习研究会是北京大学大数据与机器学习创新中心旗下的学生组织,旨在构建一个机器学习从事者交流的平台。除了及时分享领域资讯外,协会还会举办各种业界巨头/学术神牛讲座、学术大牛沙龙分享会、real data 创新竞赛等活动。
目录
相关文章推荐
爱可可-爱生活  ·  【[288星]Epigram:一个开源、免费 ... ·  2 天前  
爱可可-爱生活  ·  【[23星]iFormer:为移动应用打造的 ... ·  2 天前  
新智元  ·  Ilya又回来了!神秘初创SSI估值200亿 ... ·  2 天前  
爱可可-爱生活  ·  想过ChatGPT的“大脑”是如何炼成的吗? ... ·  3 天前  
51好读  ›  专栏  ›  机器学习研究会

【学习】python文本相似度计算

机器学习研究会  · 公众号  · AI  · 2017-05-28 20:11

正文



点击上方 “机器学习研究会” 可以订阅哦
摘要

转自:数据挖掘入门与实战

步骤


分词、去停用词
词袋模型向量化文本
TF-IDF模型向量化文本
LSI模型向量化文本
计算相似度

理论知识

两篇中文文本,如何计算相似度?相似度是数学上的概念,自然语言肯定无法完成,所有要把文本转化为向量。两个向量计算相似度就很简单了,欧式距离、余弦相似度等等各种方法,只需要中学水平的数学知识。

那么如何将文本表示成向量呢?

词袋模型
最简单的表示方法是词袋模型。把一篇文本想象成一个个词构成的,所有词放入一个袋子里,没有先后顺序、没有语义。
例如:

John likes to watch movies. Mary likes too.
John also likes to watch football games.

这两个句子,可以构建出一个词典,key为上文出现过的词,value为这个词的索引序号
{"John": 1, "likes": 2,"to": 3, "watch": 4, "movies": 5,"also": 6, "football": 7, "games": 8,"Mary": 9, "too": 10}
那么,上面两个句子用词袋模型表示成向量就是:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
[1, 1,1, 1, 0, 1, 1, 1, 0, 0]
相对于英文,中文更复杂一些,涉及到分词。准确地分词是所有中文文本分析的基础,本文使用结巴分词,完全开源而且分词准确率相对有保障。

TF-IDF模型
词袋模型简单易懂,但是存在问题。中文文本里最常见的词是“的”、“是”、“有”这样的没有实际含义的词。一篇关于足球的中文文本,“的”出现的数量肯定多于“足球”。所以,要对文本中出现的词赋予权重。
一个词的权重由TF * IDF 表示,其中TF表示词频,即一个词在这篇文本中出现的频率;IDF表示逆文档频率,即一个词在所有文本中出现的频率倒数。因此,一个词在某文本中出现的越多,在其他文本中出现的越少,则这个词能很好地反映这篇文本的内容,权重就越大。







请到「今天看啥」查看全文