1)TF-IDF
TF(只针对一篇文章计算):
TF(t, d) = 某个词 t 在【本篇文章 d 】中的出现次数;
由于文章有长有短,最好进行TF标准化:
TF(t, d) = 某个词 t 在【本篇文章 d 】中的出现次数 / 文章 d 的总词数;
或者,
TF(t, d) = 某个词 t 在【本篇文章 d 】中的出现次数 / 文章 d 中出现次数最多的那个词 t‘ 的出现次数。
DF(针对整个语料库计算,有很多篇文章,不关注单个文章):
DF(t, all d) = DF(t) = 整个语料库中包含词 t 的文档数
一般使用时需要进行DF标准化:
DF(t) = (整个语料库中包含词 t 的文档数+1) / 整个语料库总的文档数 = (n+1) / N。
IDF(将DF(t)取倒数,再取log):
IDF(t, all d) = IDF(t) = log( N / (n + 1) );
缺点:如果某一类 C 中包含单词 t 的文档数为m,而其它类包含单词 t 的文档总数为k,显然DF(t)=m+k,当m大的时候,DF(t)也大,按照IDF公式得到的IDF的值会小,就说明该单词 t 类别区分能力不强。但是实际上,如果一个单词在一个类的文档中频繁出现(这里指m大),则说明该单词能够很好代表这个类的文本特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处。
TF-IDF(即关注单个文章,也关注整个语料库):
TF-IDF(t,d) = TF(t,d) * IDF(t)。
直观来解释就是:一个单词在一篇文档中出现次数越多,它的权重越大;文档中单词越是“只此一家别无分店”(包含该单词的文档越少),它的权重越大(权重大是指单词 t 具有很好的类别区分能力)。
应用:
关键词提取、文档相似度衡量。。。