前言
TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。
算法
- TF是term frequency的缩写,指的是某一个给定的词语在该文件(注意这里的该文件与后面所有文本区别)中出现的次数,这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否)。
- 而IDF逆向文件频率 (inverse document frequency, IDF)反应了一个词在所有文本(整个文档)中出现的频率,如果一个词在很多的文本中出现,那么它的IDF值应该低。而反过来如果一个词在比较少的文本中出现,那么它的IDF值应该高。比如一些专业的名词如“Machine Learning”。这样的词IDF值应该高。一个极端的情况,如果一个词在所有的文本中都出现,那么它的IDF值应该为0。
- 如果单单以TF或者IDF来计算一个词的重要程度都是片面的,因此TF-IDF综合了TF和IDF两者的优点,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。上述引用总结就是,一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章,越能与其它文章区分开来。
- TF-IDF的计算方法十分简单
TF的计算公式如下:
T F w = N w N TF_w=\frac{N_w}{N} TFw=NNw
其中 N w N_w Nw是在某一文本中词条 w w w出现的次数, N N N是该文本总词条数。
IDF的计算公式:
I D F w = l o g ( Y Y w + 1 ) IDF_w=log(\frac{Y}{Y_w+1}) IDFw=log(Yw+1Y)
其中 Y Y Y是语料库的文档总数, Y w Y_w Yw是包含词条 w w w的文档数,分母加一是为了避免 w w w未出现在任何文档中从而导致分母为0的情况。
T F − I D F w = T F w ∗ I D F w TF-IDF_w=TF_w*IDF_w TF−IDFw=TFw∗IDFw
从以上计算公式便可以看出,某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
结束语
本人大三学生一枚,学识尚浅,不喜勿喷,希望今日能抛砖引玉,请各位大佬一定不吝赐教!!!
参考自:https://www.jianshu.com/p/091383e86825