採用scikit-learn包進行tf-idf分詞權重計算關鍵用到了兩個類:countvectorizer和tfidftransformer,具體參見這裡
乙個簡單的**如下:
[python]view plain
copy
# coding:utf-8
__author__ = "liuxuejiang"
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權重
fori
inrange(len(weight)):
#列印每類文字的tf-idf詞語權重,第乙個for遍歷所有文字,第二個for便利某一類文字下的詞語權重
u"-------這裡輸出第"
,i,u
"類文字的詞語tf-idf權重------"
forj
inrange(len(word)):
word[j],weight[i][j]
程式輸出:每行格式為:詞語 tf-idf權重
[plain]view plain
copy
-------這裡輸出第 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.0
大廈 0.525472749264
天安門 0.0
小明 0.0
來到 0.414288751166
杭研 0.525472749264
畢業 0.0
清華大學 0.0
碩士 0.0
科學院 0.0
網易 0.525472749264
-------這裡輸出第 2 類文字的詞語tf-idf權重------ #該類對應的原文本是: "小明碩士畢業於中國科學院「
中國 0.4472135955
北京 0.0
大廈 0.0
天安門 0.0
小明 0.4472135955
來到 0.0
杭研 0.0
畢業 0.4472135955
清華大學 0.0
碩士 0.4472135955
科學院 0.4472135955
網易 0.0
-------這裡輸出第 3 類文字的詞語tf-idf權重------ #該類對應的原文本是: "我愛北京天安門"
中國 0.0
北京 0.61913029649
大廈 0.0
天安門 0.78528827571
小明 0.0
來到 0.0
杭研 0.0
畢業 0.0
清華大學 0.0
碩士 0.0
科學院 0.0
網易 0.0
注:這裡隨便舉了幾個文字,所以tf-idf也沒什麼實際價值,旨在說明scikit-learn包關於tf-idf計算api的呼叫
用scikit learn進行LDA降維
性判別分析lda原理總結中,我們對lda降維的原理做了總結,這裡我們就對scikit learn中lda的降維使用做乙個總結。在scikit learn中,lda類是sklearn.discriminant analysis.lineardiscriminantanalysis。那既可以用於分類又可...
通過scikit learn進行線性回歸嘗試
線性模型是在機器學習中最先接觸到的數學模型,通過對多組數值對進行擬合,從而最終得出自變數與因變數之間的線性關係。本片之中並不對線性模型進行闡述而是主要通過python的類庫scikit learn進行線性回歸的相關嘗試。1.資料來源匯入 我們在使用scikit learn的時候可以選擇類庫內部自帶的...
用scikit learn進行LDA降維
在scikit learn中,lda類是sklearn.discriminant analysis.lineardiscriminantanalysis。那既可以用於分類又可以用於降維。當然,應用場景最多的還是降維。和pca類似,lda降維基本也不用調參,只需要指定降維到的維數即可。我們這裡對lin...