天天看點

TF-IDF特征值

1.TF-IDF簡介

内容參考百度百科

TFIDF實際上是:TF * IDF

詞頻(term frequency,TF)指的是某一個給定的詞語在該檔案中出現的頻率。

逆向檔案頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總檔案數目除以包含該詞語之檔案的數目。

這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該檔案的總詞語數。假如一篇檔案的總詞語數是100個,而詞語“母牛”出現了3次,那麼“母牛”一詞在該檔案中的詞頻就是3/100=0.03。一個計算檔案頻率 (IDF) 的方法是檔案集裡包含的檔案總數除以測定有多少份檔案出現過“母牛”一詞。是以,如果“母牛”一詞在1,000份檔案出現過,而檔案總數是10,000,000份的話,其逆向檔案頻率就是 lg10,000,000 / 1,000)=4。最後的TF-IDF的分數為0.03 * 4=0.12。

2.計算文本中的TF-IDF值

使用skitlearn中的TfidfTransformer函數

# coding:utf-8
 
import jieba
import jieba.posseg as pseg
import os
import sys
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
 
if __name__ == "__main__":
    corpus=["我 來到 北京 清華大學",#第一類文本切詞後的結果,詞之間以空格隔開
        "他 來到 了 網易 杭研 大廈",#第二類文本的切詞結果
        "小明 碩士 畢業 與 中國 科學院",#第三類文本的切詞結果
        "我 愛 北京 天安門"]#第四類文本的切詞結果
    vectorizer=CountVectorizer()#該類會将文本中的詞語轉換為詞頻矩陣,矩陣元素a[i][j] 表示j詞在i類文本下的詞頻
    transformer=TfidfTransformer()#該類會統計每個詞語的tf-idf權值
    tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一個fit_transform是計算tf-idf,第二個fit_transform是将文本轉為詞頻矩陣
    word=vectorizer.get_feature_names()#擷取詞袋模型中的所有詞語
    weight=tfidf.toarray()#将tf-idf矩陣抽取出來,元素a[i][j]表示j詞在i類文本中的tf-idf權重
    for i in range(len(weight)):#列印每類文本的tf-idf詞語權重,第一個for周遊所有文本,第二個for便利某一類文本下的詞語權重
        print (u"-------這裡輸出第",i,u"類文本的詞語tf-idf權重------")
        for j in range(len(word)):
            print (word[j],weight[i][j])
           
TF-IDF特征值

3.自資訊熵、條件熵、聯合熵、互資訊

這部分内容參考書籍《從投骰子到阿爾法狗》第五章:趣談資訊熵

香農根據機率取對數後的平均值定義資訊熵。如果隻有一個随機變量,比如一個資訊源,定義的是源的自資訊熵。如果有多個随機變量,可以定義它們的條件機率、聯合機率等,相對應地,也就有了條件熵、聯合熵、互資訊,等等,它們之間的關系如下圖所示。

TF-IDF特征值

比如說,最簡單的情況,隻有兩個随機變量X和Y。如果它們互相獨立的話,那就隻是将它們看成兩個互相不影響的随機變量而已,在這種情形,圖(a)中的兩個圓圈沒有交集,變量X和Y分别有自己的自資訊熵H(X)和H(Y)。如果兩個變量互相關聯,則兩個圓圈交叉的情況可以描述關聯程度的多少。圖中的條件熵H(X|Y)表示的是,在給定随機變量Y的條件下,X的平均資訊量;相類似地,條件熵H(Y|X)是随機變量X被給定的條件下Y的平均資訊量。聯合熵H(X,Y),則是兩個變量X,Y同時出現(比如同時丢硬币和骰子)的資訊熵,也就是描述這一對随機變量同時發生,平均所需要的資訊量。圖中兩個圓的交叉部分I(X ;Y)被稱為互資訊,是兩個變量互相依賴程度的量度,或者可看作是兩個随機變量共享的資訊量。

繼續閱讀