1 安裝scikit-learn包
sudo pip install scikit-learn
2 中文分詞采用的jieba分詞,安裝jieba分詞包
sudo pip install jieba
)
import jieba.posseg as pseg
words=pseg.cut("對這句話進行分詞")
for key in words:
print key.word,key.flag
輸出結果:
對 p
這 r
句 q
話 n
進行 v
分詞 n
一個簡單的代碼如下:
# 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權重
-------這裡輸出第 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
注:這裡随便舉了幾個文本,是以tf-idf也沒什麼實際價值,旨在說明scikit-learn包關于tf-idf計算api的調用