1. 程式人生 > >TF-IDF原理及sklearn呼叫

TF-IDF原理及sklearn呼叫

一、原理

TF-IDF,也就是“詞頻-逆文字頻率”,是文字挖掘中做分詞、向量化之後的一個操作,它由兩部分組成:
1、詞頻:某個詞在當前文字中出現的次數。
2、IDF:有些詞語雖然詞頻很高,但是並不重要,IDF衡量的就是一個詞的重要度。IDF的基本公式:
I D F ( x

) = l o g N N ( x
)
IDF(x) = log\frac{N}{N(x)}
其中,N代表訓練集中document的總數,而N(x)代表訓練集中包含詞x的document總數。也就是說,如果出現詞x的文件越多,IDF值越小,這個詞越不重要。

如果某一個生僻詞沒有在訓練集中出現,就會導致分母為0,所以我們需要做一些平滑:
I

D F ( x ) = l o g N + 1 N ( x ) + 1 + 1 IDF(x) = log\frac{N+1}{N(x)+1} + 1
TF-IDF的公式為: T F I D F ( x ) = T F ( x ) I D F ( x ) TF-IDF(x) = TF(x) * IDF(x)

二、sklearn呼叫

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer()
re = tfidf.fit_transform(corpus)

常用引數:
ngram_range=(min_n, max_n):要提取的n-gram的n-values的下限和上限範圍。
stop_words:string {‘english’}, list, or None(default),停用詞
max_df: float in range [0.0, 1.0] or int, optional, 1.0 by default
min_df:float in range [0.0, 1.0] or int, optional, 1.0 by default
max_features: optional, None by default
norm:‘l1’, ‘l2’, or None,optional。範數用於標準化詞條向量。None為不歸一化