文本数据预处理之TF-IDF
我们知道词频矩阵是将n-gram词的频率转成向量(频数放置相应维度),但我们可以很明显的发现问题,一些在很多文本中频繁出现的常用词(有些时候我们会将其当做停用词删掉)其权重会比较高,但是其实因为它几乎在每句话都会出现,故而其重要性也许并不如词频矩阵所表现的那样。
TF-IDF概述(词频-逆文本频率)
TF也就是我们所说的词频,而IDF指的是逆文本频率,IDF反映了一个词在所有文本中出现的频率,如果一个词在很多的文本出现,那么他的IDF值应该很低。
IDF(x)=log((N+1)/(N(x)+1))+1
其中N代表语料库中文本的总数(样本数),而N(x)代表语料库中有多少文本包含词x。 至于图片中分子分母包括取对数后加的1都是为了使IDF平滑(类似于加载分母上的eplcsion)
这时,我们的TF-IDF值就呼之欲出了:TF-IDF(x) = TF(x) * IDF(x)
TF-IDF的sklearn调用
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [