TF-IDF
1. 文本向量化特征的不足
在將文本分詞并向量化后,我們可以得到詞匯表中每個詞在各個文本中形成的詞向量,比如在文本挖掘預(yù)處理之向量化與Hash Trick這篇文章中,我們將下面4個短文本做了詞頻統(tǒng)計:
corpus=["I come to China to travel",
"This is a car polupar in China",
"I love tea and Apple ",
"The work is to write some papers in science"]
不考慮停用詞,處理后得到的詞向量如下:
[[0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0]
[0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0]
[1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1]]
如果我們直接將統(tǒng)計詞頻后的19維特征做為文本分類的輸入,會發(fā)現(xiàn)有一些問題。比如第一個文本,我們發(fā)現(xiàn)"come","China"和“Travel”各出現(xiàn)1次,而“to“出現(xiàn)了兩次。似乎看起來這個文本與”to“這個特征更關(guān)系緊密。但是實際上”to“是一個非常普遍的詞,幾乎所有的文本都會用到,因此雖然它的詞頻為2,但是重要性卻比詞頻為1的"China"和“Travel”要低的多。如果我們的向量化特征僅僅用詞頻表示就無法反應(yīng)這一點。因此我們需要進一步的預(yù)處理來反應(yīng)文本的這個特征,而這個預(yù)處理就是TF-IDF。
?
2.TF-IDF概述
TF-IDF是Term Frequency - ?Inverse Document Frequency的縮寫,即“詞頻-逆文本頻率”。它由兩部分組成,TF和IDF。
前面的TF也就是我們前面說到的詞頻,我們之前做的向量化也就是做了文本中各個詞的出現(xiàn)頻率統(tǒng)計,并作為文本特征,這個很好理解。關(guān)鍵是后面的這個IDF,即“逆文本頻率”如何理解。在上一節(jié)中,我們講到幾乎所有文本都會出現(xiàn)的"to"其詞頻雖然高,但是重要性卻應(yīng)該比詞頻低的"China"和“Travel”要低。我們的IDF就是來幫助我們來反應(yīng)這個詞的重要性的,進而修正僅僅用詞頻表示的詞特征值。
概括來講, IDF反應(yīng)了一個詞在所有文本中出現(xiàn)的頻率,如果一個詞在很多的文本中出現(xiàn),那么它的IDF值應(yīng)該低,比如上文中的“to”。而反過來如果一個詞在比較少的文本中出現(xiàn),那么它的IDF值應(yīng)該高。比如一些專業(yè)的名詞如“Machine Learning”。這樣的詞IDF值應(yīng)該高。一個極端的情況,如果一個詞在所有的文本中都出現(xiàn),那么它的IDF值應(yīng)該為0。
上面是從定性上說明的IDF的作用,那么如何對一個詞的IDF進行定量分析呢?這里直接給出一個詞xx的IDF的基本公式如下:
??
?
其中,NN代表語料庫中文本的總數(shù),而N(x)N(x)代表語料庫中包含詞xx的文本總數(shù)。為什么IDF的基本公式應(yīng)該是是上面這樣的而不是像N/N(x)N/N(x)這樣的形式呢?這就涉及到信息論相關(guān)的一些知識了。感興趣的朋友建議閱讀吳軍博士的《數(shù)學之美》第11章。
上面的IDF公式已經(jīng)可以使用了,但是在一些特殊的情況會有一些小問題,比如某一個生僻詞在語料庫中沒有,這樣我們的分母為0, IDF沒有意義了。所以常用的IDF我們需要做一些平滑,使語料庫中沒有出現(xiàn)的詞也可以得到一個合適的IDF值。平滑的方法有很多種,最常見的IDF平滑后的公式之一為:
?
?有了IDF的定義,我們就可以計算某一個詞的TF-IDF值了:
?
?其中TF(x)TF(x)指詞xx在當前文本中的詞頻。
?
代碼實現(xiàn):
?
import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizertrain = pd.read_csv('./data/train_set.csv', nrows=1000, index_col=None) tfidf_model = TfidfVectorizer(max_features=10, min_df=1).fit_transform(train['article']) print(tfidf_model.todense())?
轉(zhuǎn)載于:https://www.cnblogs.com/yankang/p/10666214.html
總結(jié)
- 上一篇: p4000电脑显示器(p400显卡是什么
- 下一篇: 面向对象进阶-反射(二)重要知识点