您的位置:首页 > 其它

TF-IDF提取关键词并用余弦算法计算相似度

2013-12-25 12:08 609 查看
TF-IDF算法是一个很易懂的关键词提取算法,算法易实现,易懂且易操作,缺陷是将词频作为唯一考虑因素,且对于位置没有敏感性,位置的问题可以通过人为添加权重的方式改善,比如给第一段最后一段,或者每一段的第一句话加高权重。。。(类似于总分,总分总啥的文本结构吧)

TF-IDF算法简单描述:

TF是Term Frequency的缩写,即单纯的计算词频,比如,两句话分别是“我最喜欢吃我做的土豆”,“我最喜欢海”,因为是简介,就不讲究完备性,不将这句话分词,只考虑每个字,那么,第一句话中,“我”出现了两次,其他的字各出现了一次,第二句中,所有的字都出现了一次,那么计算TF的时候,只用将每个字的出现次数除以总字数即可:

TF = 文章中出现次数/文章总词数

【我:0.2,最:0.1,喜:0.1,欢:0.1,吃:0.1,做:0.1,的:0.1,土:0.1,豆:0.1】

【我:0.2,最:0.2,喜:0.2,欢:0.2,海:0.2】

为了避免“我”,"最"等等stop word占权重太大,考虑将这种会出现在大部分文章中的字减小概率,这时候引用IDF(Inverse Document Frequency),就是一个如果含有该词的文档出现次数越多,值越小的公式

IDF = log(总文章数/含有该词的文章数)

为了避免出现除0的情况出现,一般会给分母+1,类似于laplace平滑意义:

IDF = log(总文章数/(含有该词的文章数+1))

TF-IDF的值,就是将TF*IDF,然后排序,值高的词认为更有意义,作为代表性输出

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

余弦相似度是计算文档相似度的方法

参考http://blog.csdn.net/whzhcahzxh/article/details/17528261里面的实现

将一段话转换为语料库后,得到多维度向量,用a*b/(|a|*|b|)计算余弦值,值越大两个向量越相似
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: