NLP的TF-IDF算法
NLP文本相似度
- 字面相似度
- 语义相似度
在如今互联网各种垂类网站上,根据业务的不同存在多种文本相似度的定义。不存在一种四海之内皆通用的定义,只能根据业务不同进行分析。
余弦相似度
- 相似度度量:计算个体之间的相似程度
- 相似度越小,距离越大,相似度值越大,距离越小
- 最常用——余弦相似度:一个向量空间中的两个向量的夹角的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋向于0,表示两个向量越相似。
cosθ=a∗b∣∣a∣∣∗∣b∣∣cos \theta = \frac{a*b}{||a||*|b||}cosθ=∣∣a∣∣∗∣b∣∣a∗b
一个例子(字面求相似度):
- 这只皮靴号码大了,那只更合适
- 这只皮靴号码不小,那只更合适
中文分词:
- 这只/皮靴/号码/大了,那只/号码/合适
- 这只/皮靴/号码/不/小,那只/更/合适
列出所有词:
- 这只、皮靴、号码、大了、那只、合适、不、小、更
计算词频:
- 这只1皮靴1号码2大了1那只1合适1不0小0更0
- 这只1皮靴1号码1大了0那只1合适1不1小1更1
词频向量化:
- (1,1,2,1,1,1,0,0,0)
- (1,1,1,0,1,1,1,1,1)
套公式计算: 0.81
处理文本相似度计算的处理流程是:
- 每篇文章提取关键词
- 每篇文章汇总关键词去重得到集合,计算每篇文章对于这个集合中的词的词频
- 生成两篇文章各自的词频向量
- 计算两个向量的余弦相似度,值越大表示越相似
词频 TF
- 假设:如果一个词很重要则应该在文章中多次出现
- 词频——TF:一个词在文章中出现的次数
- 最常用的词是停用词(stopword)!(是,在,的,the,and,of)
- 停用词对结果毫无帮助,必须过滤掉的词
- 进一步不调整假设:如果某个词比较少见,但是在文章中多次出现,那么很有可能反映这篇文章的特性,正是我们想要的关键词。
反文档频率 IDF
- 在词频的基础上,赋予每一个词的权重,进一步体现该词的重要性
- 最常见的词(的,是,在)给与最小的权重
- 较常见的词(国内,中国,报道)给与较小的权重
- 较少见的词(养殖,维基百科) 给与较大的权重
将TF和IDF相乘,就得到了一个词的TF-IDF值,某个词对文章的重要性越高,该值越大,于是排在前面的几个词就是这篇文章的关键词。
词频(TF)=某个词在文章中出现的次数文章的总词数词频(TF)=\frac{某个词在文章中出现的次数}{文章的总词数}词频(TF)=文章的总词数某个词在文章中出现的次数 词频(TF)=某个词在文章中出现的次数该文出现次数最多的词的出现次数词频(TF)=\frac{某个词在文章中出现的次数}{该文出现次数最多的词的出现次数}词频(TF)=该文出现次数最多的词的出现次数某个词在文章中出现的次数 反文档频率(IDF)=log(语料库的文档总数包含该次的文档数+1)反文档频率(IDF)=log(\frac{语料库的文档总数}{包含该次的文档数+1})反文档频率(IDF)=log(包含该次的文档数+1语料库的文档总数) TF−IDF=词频(TF)∗反文档频率(IDF)TF-IDF=词频(TF)*反文档频率(IDF)TF−IDF=词频(TF)∗反文档频率(IDF)
TF-IDF与一个词在文档中的出现次数成正比,与包含该次的文档数成反比。
其他文本相似度算法
- TF-IDF——字面
- LCS——字面
- SimHash——字面
- CF协同过滤——语义
- DNN、CNN、RNN——字面、语义
- Word2vec——字面、语义
- TextRank——语义
- FastText——语义
自动摘要
- 计算原始文本词频生成数组
- 过滤掉停用词
- 按照词频排序
- 将文章分成句子
- 选出关键词首先出现的句子
- 将选中的句子按照出现顺序,组成摘要
优点:简单快速,结果比较符合实际情况
缺点:单纯以词频做衡量标准,不够全面。
KNNBaseline:
原本 KNNBaseline是用来根据用户对不同电影的评级作为基线,然后做出的假设是这些打分相同的用户可能具有同样的观影偏好,因此就可以相互推荐这些用户间没看过的电影等等。
而在音乐推荐中由于没有用户的数据,所以我们将歌单看成用户,利用 Jaccard similarity 交集元素/并集元素,根据这个相似度的定义来针对于不同歌单之间计算相似度,返回相似的歌单。抽取歌单中另一个歌单没有的歌曲给用户做推荐。
Word2vec
在音乐推荐中我们主要考虑把歌单当作用户来看,因为歌单都会有一定的属性,要么是民谣、摇滚、或者是某位歌手的专辑等等。所以一旦两首歌同时出现在了超过3个歌单上,就代表着这两首歌有了一定相似程度,若两首歌同时出现的歌单越多,那就说明两首歌的相似度越高。这是一个很巧妙的思想,将歌单看成一个用户。
探讨了NLP中TF-IDF算法原理及其在文本相似度计算中的应用,包括词频、逆文档频率的计算方法,以及如何通过余弦相似度判断文本间的相似度。
1万+

被折叠的 条评论
为什么被折叠?



