Python——TF-IDF模型

# -*- coding: utf-8 -*-

import MySQLdb
import pandas as pd 
import jieba
from sklearn.feature_extraction.text import TfidfTransformer  
from sklearn.feature_extraction.text import CountVectorizer 


conn = MySQLdb.connect("192.168.67.452", "ASF", "SDFDFG", "FGF", charset='utf8' )
curs = conn.cursor()
sql1='''select content from  evaluate_info limit 100''' #sql語句
curs.execute (sql1)
row=curs.fetchall()   #讀取數據表內容,返回元祖類型,元祖的每個元素還是爲元祖
data=[]
for i in row:
    i=list(i) #將元祖的每個元素轉換爲列表
    new=str(i[0]) #將列表轉換爲字符串
    xx = ' '.join(jieba.cut(new)) #每一段字符串進行分詞
    #print(xx)
    data.append(xx) #追加寫入data列表,得到的數據格式爲:a=['我 愛 學習','我 喜歡 北京']
data1=' '.join(data) #轉換爲一下格式:a=['我 愛 學習 我 喜歡 北京']
data2=[data1]   #轉換爲列表格式,例如:a=['a b c']  

curs.close()
conn.close()

datfrm=[]
vectorizer=CountVectorizer()         #該類會將文本中的詞語轉換爲詞頻矩陣,矩陣元素a[i][j] 表示j詞在i類文本下的詞頻  
transformer=TfidfTransformer()       #該類會統計每個詞語的tf-idf權值  
X=vectorizer.fit_transform(data2)   #將文本轉爲詞頻矩陣
tfidf=transformer.fit_transform(X)   #計算tf-idf,  
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 j in range(len(word)):
        #print(word[j],weight[i][j])
        a=[word[j]]
        b=[weight[i][j]]
        datfrm.append({'word':a,'weight':b})
       
dataframe = pd.DataFrame(datfrm)
dataframe.sort_index(by='weight',ascending = False)
#print(dataframe)
dataframe.to_csv("ciyun2.csv",index=False,sep=',')
 
        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章