sklearn中的TfidfVectorizer中计算TF-IDF的过程(详解)
Sklearn中的Tf-idf原理(source code):
- Tf-idf训练
Fit_transform学习到一个字典,并返回Document-term的矩阵(即词典中的词在该文档中出现的频次)
TfidfVectorizer.fit_transform(raw_document) = TfidfTransformer.fit(X).transform(X)
Fit步骤学习idf vector,一个全局的词权重_idf_diag。输入的X是一个稀疏矩阵,行是样本数,列是特征数。
Transform步骤是把X这个计数矩阵转换成tf-idf表示, X = X * self._idf_diag,然后进行归一化
- 测试
Transform(raw_documents):把文档转换成 X矩阵(该文档中该特征词出现的频次),行是文档个数,列是特征词的个数。
然后调用TfidfTransformer的transform过程(第一个步骤中的)
- 例子
TfidfVectorizer从训练数据集中学习到词典vocab,vocab包含三个词,分别是document,second,third。并且学习到_idf的全局idf vector
来了新的测试样本,会生成document-term矩阵,矩阵中的数是该文档中该词出现的次数,即tf;然后tf*idf(从idf vector中查找),最后归一化。因此第二个测试样本都为0