NLP基本方法:TF-IDF原理及应用

一、TF-IDF原理

1. 什么是TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率).

是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

上述引用总结就是, 一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章.

这也就是TF-IDF的含义.

词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)

但是, 需要注意, 一些通用的词语对于主题并没有太大的作用, 反倒是一些出现频率较少的词才能够表达文章的主题, 所以单纯使用是TF不合适的。权重的设计必须满足:一个词预测主题的能力越强,权重越大,反之,权重越小。所有统计的文章中,一些词只是在其中很少几篇文章中出现,那么这样的词对文章的主题的作用很大,这些词的权重应该设计的较大。IDF就是在完成这样的工作.

公式:



逆向文件频率 (inverse document frequency, IDF) IDF的主要思想是:如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。

公式: 


某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。 

                                                                                                  TF−IDF=TF∗IDF


二、使用TF-IDF计算文章相似度

1.余弦相似度

余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近;越趋近于-1,他们的方向越相反;接近于0,表示两个向量近乎于正交。


 一般情况下,相似度都是归一化到[0,1]区间内,因此余弦相似度表示为cosineSIM=0.5cosθ+0.5


2.计算过程

(1)使用TF-IDF算法,找出两篇文章的关键词;

(2)每篇文章各取出若干个关键词(为公平起见,一般取的词数相同),合并成一个集合,计算每篇文章对于这个集合中的词的词频

(注1:为了避免文章长度的差异,可以使用相对词频;注2:这一步选出的不同词的数量决定了词频向量的长度);

(3)生成两篇文章各自的词频向量(注:所有文章对应的词频向量等长,相同位置的元素对应同一词);

(4)计算两个向量的余弦相似度,值越大就表示越相似。

Note that: tf-idf值只在第一步用到。

举例说明:

文章A:我喜欢看小说。

文章B:我不喜欢看电视,也不喜欢看电影。

第一步: 分词

    文章A:我/喜欢/看/小说。

    文章B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。

第二步,列出所有的词。

     我,喜欢,看,小说,电视,电影,不,也。

第三步,计算每个文档中各个词的词频tf。

  文章A:我 1,喜欢 1,看 1,小说 1,电视 0,电影 0,不 0,也 0。

  文章B:我 1,喜欢 2,看 2,小说 0,电视 1,电影 1,不 2,也 1。

第四步,计算各个词的逆文档频率idf。

  我 log(2/2)=0,喜欢 log(2/2)=0,看 log(2/2)=0,小说 log(2/1)=1,电视 log(2/1)=1,电影 log(2/1)=1,不 log(2/1)=1,也 log(2/1)=1。

第五步:计算每个文档中各个词的tf-idf值

  文章A:我 0,喜欢 0,看 0,小说 1,电视 0,电影 0,不 0,也 0。

  文章B:我 0,喜欢 0,看 0,小说 0,电视 1,电影 1,不 1,也 1。

第六步:选择每篇文章的关键词(这里选tf-idf排名前3的词作为关键词(至于并列大小的随机选))

  文章A:我 0,喜欢 0,小说 1

  文章B:电视 1,电影 1,不 1

第七步:构建用于计算相似度的词频向量(根据上一步选出的词:我,喜欢,小说,电视,电影,不)

   文章A:[1 1 1 0 0 0]

   文章B: [1 2 0 1 1 2]

第八步:计算余弦相似度值

     cosθ=3/sqrt(33)= 0.5222329678670935

   cosineSIM(A,B)=0.5222329678670935*0.5+0.5=0.7611164839335467


原文参考:

https://www.cnblogs.com/wxiaoli/p/6940702.html

https://blog.csdn.net/zrc199021/article/details/53728499

你可能感兴趣的:(NLP基本方法:TF-IDF原理及应用)