使用sklearn进行文本TF-IDF处理

使用 sklearn 进行文本 TF-IDF 处理
 在进行自然预言处理中的文本处理任务中经常会使用到 TF-IDF, 在这里进行简单记录.

给一个维基百科上的描述
 在一份給定的文件裡,詞頻(term frequency,tf)指的是某一個給定的詞語在該文件中出現的频率。這個數字是对词数(term count)的归一化,以防止它偏向長的文件。(同一個詞語在長文件裡可能會比短文件有更高的詞数,而不管該詞語重要與否。)對於在某一特定文件裡的詞語 ti 來說,它的重要性可表示為:

以上式子中 n{i,j} 是該詞在文件 d{j} 中的出現次數,而分母則是在文件 d{j} 中所有字詞的出現次數之和。
逆向文件頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的 idf,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到:

|D|:語料庫中的文件總數
分母包含詞語 t{i} 的文件數目
以上出自维基百科, 具体内容可以点击进去细看

题目描述
在使用 TF-IDF 时,对于不熟悉 sklearn 的同学通常都会手动统计每个词的频率进行计算.不过其实 sklearn 已经对其进行了封装

from sklearn.feature_extraction.text import TfidfVectorizer

X_train = ['hello', 'hi', 'hei']
X_test = ['hi', 'haa', 'hei']
vectorizer = TfidfVectorizer(stop_words='english')
vectorizer.fit_transform(X_train).todense()
X_train = vectorizer.transform(X_train)
print X_train
X_test = vectorizer.transform(X_test)
print X_test

参考资料
http://d0evi1.com/sklearn/feature_extraction/

你可能感兴趣的:(sklearn)