TF-IDF
TF-IDF的作用
- TF-IDF用以评估一个字词对于一个文件集或一个语料库中其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
- TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。
TF-IDF的计算过程
名词解释
- IF-IDF:term frequency–inverse document frequency
- TF:term frequency [词频]
- IDF : inverse document frequency [逆文档频率]
词频IF:某个词在文章中出现的次数
- 原始计算方式
\[词频tf = 某个词在文章中出现的次数
\]
- 归一化处理:考虑到文章的长度不同,为便于不同文章的比较,对"词频"进行标准化处理(标准化处理的目的:防止它偏向长的文件,同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否)
\[词频tf = \frac{某个词在文章中出现的次数}{文章的总词数}
\]
- 吓人的数学公式
\[tf_{i,j} = \frac{n_{i,j}}{\sum_{k}{n_{k,j}}}
\]
其中:\(tf_{i,j}\)表示某个词语\(t_i\)在文章\(d_j\)中出现的频率;\(n_{i,j}\)表示某个词语\(t_i\)在文章\(d_j\)中出现的次数;\(\sum_{k}{n_{k,j}}\)表示文章\(d_j\)中总词数
- 通俗解释
如果某个词在文章中出现的次数越多,说明该词对文章的重要度越高
逆文档频率IDF:评价某个词语普遍重要度的指标
- 通俗公式
\[词频tf = lg\frac{语料库中的文章总数}{包含该词的文章数+1}
\]
- 吓人的数学公式
\[idf_i = lg\frac{|D|}{\lbrace|j:t_i{\in}d_j|\rbrace}
\]
- 如果词语不在语料库中,会导致分母为零,一般情况下使用
\[idf_i = lg\frac{|D|}{\lbrace|j:{t_i{\in}d_j|\rbrace}+1}
\]
其中:\(itf_i\)表示某个词语\(t_i\)的逆文档频率;\(|D|\)表示语料库中的文章总数;\({\lbrace|j:t_i{\in}d_j|\rbrace}\)表示包含该词语 \(t_i\) 的文档数
- 通俗解释
如果包含某个词语的文档数越多,说明该词的重要度较低(例如:的、我等可能出现在预料库中的所用文档中, 但是这些词并不能反应对文档的重要度)
TF-IDF的计算方法及主要思想
\[tfidf_{i,j} = tf_{i,j}*idf_i
\]
- 某个词语在某一文档中的出现的频率告(tf高),在整个文档集合中的频率低(idf低),可产生高权重的tf-idf。因此,tf-idf倾向于过滤掉常见的词语,保留重要的词语。
TF-IDF python编程
TF-IDF的应用场景
- TF-IDF经常应用于搜索引擎中,提供基础的query和document的相关性特征
- 在向量空间模型中 [暂不做过多介绍,感兴趣的朋友可参考]