Python使用gensim计算文档相似性


Posted in Python onApril 10, 2016

pre_file.py

#-*-coding:utf-8-*-
import MySQLdb
import MySQLdb as mdb
import os,sys,string
import jieba
import codecs
reload(sys)
sys.setdefaultencoding('utf-8')
#连接数据库
try:
  conn=mdb.connect(host='127.0.0.1',user='root',passwd='kongjunli',db='test1',charset='utf8')
except Exception,e:
  print e
  sys.exit()
#获取cursor对象操作数据库
cursor=conn.cursor(mdb.cursors.DictCursor) #cursor游标
#获取内容
sql='SELECT link,content FROM test1.spider;'
cursor.execute(sql)   #execute()方法,将字符串当命令执行
data=cursor.fetchall()#fetchall()接收全部返回结果行
f=codecs.open('C:\Users\kk\Desktop\hello-result1.txt','w','utf-8')
 
for row in data:    #row接收结果行的每行数据
  seg='/'.join(list(jieba.cut(row['content'],cut_all='False')))
  f.write(row['link']+' '+seg+'\r\n')
f.close()
 
cursor.close()
      #提交事务,在插入数据时必须

jiansuo.py

#-*-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

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
 <component name="Encoding">
  <file url="PROJECT" charset="UTF-8" />
 </component>
</project>

misc.xml

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
 <component name="ProjectLevelVcsManager" settingsEditedManually="false">
  <OptionsSetting value="true" id="Add" />
  <OptionsSetting value="true" id="Remove" />
  <OptionsSetting value="true" id="Checkout" />
  <OptionsSetting value="true" id="Update" />
  <OptionsSetting value="true" id="Status" />
  <OptionsSetting value="true" id="Edit" />
  <ConfirmationsSetting value="0" id="Add" />
  <ConfirmationsSetting value="0" id="Remove" />
 </component>
 <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.11 (C:\Python27\python.exe)" project-jdk-type="Python SDK" />
</project>

modules.xml

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
 <component name="ProjectModuleManager">
  <modules>
   <module fileurl="file://$PROJECT_DIR$/.idea/爬虫练习代码.iml" filepath="$PROJECT_DIR$/.idea/爬虫练习代码.iml" />
  </modules>
 </component>
</project>
Python 相关文章推荐
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
对Python3 序列解包详解
Feb 16 Python
实例详解Python模块decimal
Jun 26 Python
简单了解python PEP的一些知识
Jul 13 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
增大python字体的方法步骤
Jul 05 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 #Python
python调用fortran模块
Apr 08 #Python
python3使用urllib模块制作网络爬虫
Apr 08 #Python
Python抓取电影天堂电影信息的代码
Apr 07 #Python
Python Requests安装与简单运用
Apr 07 #Python
Python Requests 基础入门
Apr 07 #Python
Python检测网站链接是否已存在
Apr 07 #Python
You might like
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
vue跨域解决方法
2017/10/15 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python图算法实例分析
2016/08/13 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
MIS软件工程师的面试题
2016/04/22 面试题
企业给企业的表扬信
2014/01/13 职场文书
药学职务聘任书
2014/03/29 职场文书
库房保管员岗位职责
2014/04/07 职场文书
高考寄语大全
2014/04/08 职场文书
部队2014年终工作总结
2014/11/27 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
2015年新教师工作总结
2015/04/28 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android
vscode内网访问服务器的方法
2022/06/28 Servers