自然语言处理 第四期
- TF-IDF原理。
- 文本矩阵化,使用词袋模型,以TF-IDF特征值为权重。(可以使用Python中TfidfTransformer库)
- 互信息的原理。
- 使用第二步生成的特征矩阵,利用互信息进行特征筛选。
一、TF-IDF原理
TF-IDF是Term Frequency - Inverse Document Frequency的缩写,即“词频-逆文本频率”。它由两部分组成,TF和IDF。
TF是词频,之前做的向量化也就是做了文本中各个词的出现频率统计,并作为文本特征。
IDF,逆文本频率,就是反应一个词的重要性,进而修正仅仅用词频表示词频的词特征性。如果一个词在很多的文本中出现,那么它的IDF值应该低。例如,几乎所有文本都会出现的"to"其词频虽然高,但是重要性却应该比词频di低的"China"和“Travel”要低。而反过来如果一个词在比较少的文本中出现,那么它的IDF值应该高。比如一些专业的名词如“Machine Learning”。这样的词IDF值应该高。一个极端的情况,如果一个词在所有的文本中都出现,那么它的IDF值应该为0。
词x的IDF的基本公式如下: IDF(x) = log(N / N(x))
其中,N代表语料库中文本的总数,而N(x)代表语料库中包含词x的文本总数。
上面的IDF公式已经可以使用了,但是在一些特殊的情况会有一些小问题,比如某一个生僻词在语料库中没有,这样我们的分母为0, IDF没有意义了。所以常用的IDF我们需要做一些平滑,使语料库中没有出现的词也可以得到一个合适的IDF值。平滑的方法有很多种,最常见的IDF平滑后的公式之一为: IDF(x)=log(N+1 / N(x)+1) + 1
有了IDF的定义,我们就可以计算某一个词的TF-IDF值了: TF−IDF(x)=TF(x)∗IDF(x)
其中TF(x)指词x在当前文本中的词频。