天天看點

python scikit-learn計算tf-idf詞語權重

1 安裝scikit-learn包

python scikit-learn計算tf-idf詞語權重

sudo pip install scikit-learn  

2 中文分詞采用的jieba分詞,安裝jieba分詞包

python scikit-learn計算tf-idf詞語權重

sudo pip install jieba  

)

python scikit-learn計算tf-idf詞語權重

import jieba.posseg as pseg  

words=pseg.cut("對這句話進行分詞")  

for key in words:  

     print key.word,key.flag  

輸出結果:

對 p

這 r

句 q

話 n

進行 v

分詞 n

  一個簡單的代碼如下:

python scikit-learn計算tf-idf詞語權重

# coding:utf-8  

__author__ = "liuxuejiang"  

import jieba  

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權重

python scikit-learn計算tf-idf詞語權重

-------這裡輸出第 0 類文本的詞語tf-idf權重------           #該類對應的原文本是:"我來到北京清華大學"  

中國 0.0  

北京 0.52640543361  

大廈 0.0  

天安門 0.0  

小明 0.0  

來到 0.52640543361  

杭研 0.0  

畢業 0.0  

清華大學 0.66767854461  

碩士 0.0  

科學院 0.0  

網易 0.0  

-------這裡輸出第 1 類文本的詞語tf-idf權重------           #該類對應的原文本是: "他來到了網易杭研大廈"  

北京 0.0  

大廈 0.525472749264  

來到 0.414288751166  

杭研 0.525472749264  

清華大學 0.0  

網易 0.525472749264  

-------這裡輸出第 2 類文本的詞語tf-idf權重------           #該類對應的原文本是: "小明碩士畢業于中國科學院“  

中國 0.4472135955  

小明 0.4472135955  

來到 0.0  

畢業 0.4472135955  

碩士 0.4472135955  

科學院 0.4472135955  

-------這裡輸出第 3 類文本的詞語tf-idf權重------            #該類對應的原文本是: "我愛北京天安門"  

北京 0.61913029649  

天安門 0.78528827571  

python scikit-learn計算tf-idf詞語權重

  注:這裡随便舉了幾個文本,是以tf-idf也沒什麼實際價值,旨在說明scikit-learn包關于tf-idf計算api的調用