成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

自然語(yǔ)言處理——TF-IDF

zhaochunqi / 615人閱讀

摘要:在自然語(yǔ)言處理詞袋模型與向量化中我們講到在文本挖掘的預(yù)處理中,向量化之后一般都伴隨著的處理,那么什么是,為什么一般我們要加這一步預(yù)處理呢這里就對(duì)的原理做一個(gè)總結(jié)。

TF-IDF

在自然語(yǔ)言處理——詞袋模型與向量化中我們講到在文本挖掘的預(yù)處理中,向量化之后一般都伴隨著TF-IDF的處理,那么什么是TF-IDF,為什么一般我們要加這一步預(yù)處理呢?這里就對(duì)TF-IDF的原理做一個(gè)總結(jié)。

文本向量化特征的不足

在將文本分詞并向量化后,我們可以得到詞匯表中每個(gè)詞在各個(gè)文本中形成的詞向量,比如在自然語(yǔ)言處理——詞袋模型與向量化這篇文章中,我們將下面4個(gè)短文本做了詞頻統(tǒng)計(jì):

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)計(jì)詞頻后的19維特征做為文本分類(lèi)的輸入,會(huì)發(fā)現(xiàn)有一些問(wèn)題。比如第一個(gè)文本,我們發(fā)現(xiàn)"come","China"和“Travel”各出現(xiàn)1次,而“to“出現(xiàn)了兩次。似乎看起來(lái)這個(gè)文本與”to“這個(gè)特征更關(guān)系緊密。但是實(shí)際上”to“是一個(gè)非常普遍的詞,幾乎所有的文本都會(huì)用到,因此雖然它的詞頻為2,但是重要性卻比詞頻為1的"China"和“Travel”要低的多。如果我們的向量化特征僅僅用詞頻表示就無(wú)法反應(yīng)這一點(diǎn)。因此我們需要進(jìn)一步的預(yù)處理來(lái)反應(yīng)文本的這個(gè)特征,而這個(gè)預(yù)處理就是TF-IDF。

TF-IDF概述

TF-IDF是Term Frequency - Inverse Document Frequency的縮寫(xiě),即“詞頻-逆文本頻率”。它由兩部分組成,TF和IDF。

前面的TF也就是我們前面說(shuō)到的詞頻,我們之前做的向量化也就是做了文本中各個(gè)詞的出現(xiàn)頻率統(tǒng)計(jì),并作為文本特征,這個(gè)很好理解。關(guān)鍵是后面的這個(gè)IDF,即“逆文本頻率”如何理解。在上一節(jié)中,我們講到幾乎所有文本都會(huì)出現(xiàn)的"to"其詞頻雖然高,但是重要性卻應(yīng)該比詞頻低的"China"和“Travel”要低。我們的IDF就是來(lái)幫助我們來(lái)反應(yīng)這個(gè)詞的重要性的,進(jìn)而修正僅僅用詞頻表示的詞特征值。

概括來(lái)講,IDF反應(yīng)了一個(gè)詞在所有文本中出現(xiàn)的頻率,如果一個(gè)詞在很多的文本中出現(xiàn),那么它的IDF值應(yīng)該低,比如上文中的“to”。而反過(guò)來(lái)如果一個(gè)詞在比較少的文本中出現(xiàn),那么它的IDF值應(yīng)該高。比如一些專(zhuān)業(yè)的名詞如“Machine Learning”。這樣的詞IDF值應(yīng)該高。一個(gè)極端的情況,如果一個(gè)詞在所有的文本中都出現(xiàn),那么它的IDF值應(yīng)該為0。

上面是從定性上說(shuō)明的IDF的作用,那么如何對(duì)一個(gè)詞的IDF進(jìn)行定量分析呢?這里直接給出一個(gè)詞xx的IDF的基本公式如下:

$$ IDF(x) = logfrac{N}{N(x)} $$

其中,$N$代表語(yǔ)料庫(kù)中文本的總數(shù),而$N(x)$代表語(yǔ)料庫(kù)中包含詞xx的文本總數(shù)。為什么IDF的基本公式應(yīng)該是是上面這樣的而不是像$N/N(x)$這樣的形式呢?這就涉及到信息論相關(guān)的一些知識(shí)了。感興趣的朋友建議閱讀吳軍博士的《數(shù)學(xué)之美》第11章。

上面的IDF公式已經(jīng)可以使用了,但是在一些特殊的情況會(huì)有一些小問(wèn)題,比如某一個(gè)生僻詞在語(yǔ)料庫(kù)中沒(méi)有,這樣我們的分母為0, IDF沒(méi)有意義了。所以常用的IDF我們需要做一些平滑,使語(yǔ)料庫(kù)中沒(méi)有出現(xiàn)的詞也可以得到一個(gè)合適的IDF值。平滑的方法有很多種,最常見(jiàn)的IDF平滑后的公式之一為:

$$ IDF(x) = logfrac{N+1}{N(x)+1} + 1 $$

有了IDF的定義,我們就可以計(jì)算某一個(gè)詞的TF-IDF值了:

$$ TF-IDF(x) = TF(x) * IDF(x) $$

其中$TF(x)$指詞xx在當(dāng)前文本中的詞頻。

用scikit-learn進(jìn)行TF-IDF預(yù)處理

在scikit-learn中,有兩種方法進(jìn)行TF-IDF的預(yù)處理。

第一種方法是在用CountVectorizer類(lèi)向量化之后再調(diào)用TfidfTransformer類(lèi)進(jìn)行預(yù)處理。第二種方法是直接用TfidfVectorizer完成向量化與TF-IDF預(yù)處理。

首先我們來(lái)看第一種方法,CountVectorizer+TfidfTransformer的組合,代碼如下:

from sklearn.feature_extraction.text import TfidfTransformer  
from sklearn.feature_extraction.text import CountVectorizer  

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"] 

vectorizer=CountVectorizer()

transformer = TfidfTransformer()
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))  
print tfidf

輸出的各個(gè)文本各個(gè)詞的TF-IDF值如下:

 (0, 4)    0.442462137895
  (0, 15)    0.697684463384
  (0, 3)    0.348842231692
  (0, 16)    0.442462137895
  (1, 3)    0.357455043342
  (1, 14)    0.453386397373
  (1, 6)    0.357455043342
  (1, 2)    0.453386397373
  (1, 9)    0.453386397373
  (1, 5)    0.357455043342
  (2, 7)    0.5
  (2, 12)    0.5
  (2, 0)    0.5
  (2, 1)    0.5
  (3, 15)    0.281131628441
  (3, 6)    0.281131628441
  (3, 5)    0.281131628441
  (3, 13)    0.356579823338
  (3, 17)    0.356579823338
  (3, 18)    0.356579823338
  (3, 11)    0.356579823338
  (3, 8)    0.356579823338
  (3, 10)    0.356579823338

現(xiàn)在我們用TfidfVectorizer一步到位,代碼如下:

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

輸出的各個(gè)文本各個(gè)詞的TF-IDF值和第一種的輸出完全相同。大家可以自己去驗(yàn)證一下。

由于第二種方法比較的簡(jiǎn)潔,因此在實(shí)際應(yīng)用中推薦使用,一步到位完成向量化,TF-IDF與標(biāo)準(zhǔn)化。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19792.html

相關(guān)文章

  • TF-IDF、詞袋模型與特征工程

    摘要:如標(biāo)題,與詞集詞袋模型都是數(shù)據(jù)預(yù)處理中常用的算法,這里展示一下這兩種算法的聯(lián)合應(yīng)用。我們?cè)倩剡^(guò)頭來(lái)看看的缺陷,其中的第二點(diǎn)和第三點(diǎn)以相反角度來(lái)看都有助于我們對(duì)詞袋模型中特征向量的優(yōu)化這個(gè)需要各位好好理解一下。 如標(biāo)題,TF-IDF與詞集詞袋模型都是數(shù)據(jù)預(yù)處理中常用的算法,這里展示一下這兩種算法的聯(lián)合應(yīng)用。 一. 詞集與詞袋模型 這個(gè)算法的主要作用也就是對(duì)文本做單詞切分,有點(diǎn)從一篇文章里...

    xialong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<