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=',')
 
        

 

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