天天看點

python文檔相似性比較代碼_Python使用gensim計算文檔相似性

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

import sys

import string

import MySQLdb

import MySQLdb as mdb

import gensim

from gensim import corpora,models,similarities

from gensim.similarities import MatrixSimilarity

import logging

import codecs

reload(sys)

sys.setdefaultencoding('utf-8')

con=mdb.connect(host='127.0.0.1',user='root',passwd='kongjunli',db='test1',charset='utf8')

with con:

cur=con.cursor()

cur.execute('SELECT * FROM cutresult_copy')

rows=cur.fetchall()

class MyCorpus(object):

def __iter__(self):

for row in rows:

yield str(row[1]).split('/')

#開啟日志

logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO)

Corp=MyCorpus()

#将網頁文檔轉化為tf-idf

dictionary=corpora.Dictionary(Corp)

corpus=[dictionary.doc2bow(text) for text in Corp] #将文檔轉化為詞袋模型

#print corpus

tfidf=models.TfidfModel(corpus)#使用tf-idf模型得出文檔的tf-idf模型

corpus_tfidf=tfidf[corpus]#計算得出tf-idf值

#for doc in corpus_tfidf:

#print doc

###

'''

q_file=open('C:\Users\kk\Desktop\q.txt','r')

query=q_file.readline()

q_file.close()

vec_bow=dictionary.doc2bow(query.split(' '))#将請求轉化為詞帶模型

vec_tfidf=tfidf[vec_bow]#計算出請求的tf-idf值

#for t in vec_tfidf:

# print t

'''

###

query=raw_input('Enter your query:')

vec_bow=dictionary.doc2bow(query.split())

vec_tfidf=tfidf[vec_bow]

index=similarities.MatrixSimilarity(corpus_tfidf)

sims=index[vec_tfidf]

similarity=list(sims)

print sorted(similarity,reverse=True)

encodings.xml