sklearn文本特征提取——TfidfVectorizer


什么是TF-IDF

TF-IDF(term frequency-inverse document frequency)詞頻-逆向文件頻率。在處理文本時,如何將文字轉化為模型可以處理的向量呢?TF-IDF就是這個問題的解決方案之一。字詞的重要性與其在文本中出現的頻率成正比(TF),與其在語料庫中出現的頻率成反比(IDF)。

TF

TF:詞頻。TF(w)=(詞w在文檔中出現的次數)/(文檔的總詞數)

IDF

IDF:逆向文件頻率。有些詞可能在文本中頻繁出現,但並不重要,也即信息量小,如is,of,that這些單詞,這些單詞在語料庫中出現的頻率也非常大,我們就可以利用這點,降低其權重。IDF(w)=log_e(語料庫的總文檔數)/(語料庫中詞w出現的文檔數)

TF-IDF

將上面的TF-IDF相乘就得到了綜合參數:TF-IDF=TF*IDF

如何使用?

在文本處理中,我們經常遇到將一段話變成向量,以組成矩陣來輸入到模型中處理。我們這時就可以用到TF-IDF來做。但是我們需要自己找語料庫訓練TF-IDF嗎?看看sklearn.feature_extraction.text.TfidfVectorizer吧~~~
示例:

from sklearn.feature_extraction.text import TfidfVectorizer

cv=TfidfVectorizer(binary=False,decode_error='ignore',stop_words='english')
vec=cv.fit_transform(['hello world','this is a panda.'])#傳入句子組成的list
arr=vec.toarray()

arr是一個2*3的矩陣,如下:

array([[ 0.70710678,  0.        ,  0.70710678],
    [ 0.        ,  1.        ,  0.        ]])

一行代表一個句子樣本,這樣的矩陣就可以放入模型中訓練了。與TfidfVectorizer類似的還有CountVectorizer。與此相關的概念還有詞袋,詞集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM