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中list列表的一些进阶使用方法介绍
Aug 15 Python
python 查找字符串是否存在实例详解
Jan 20 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
简单实现python聊天程序
Apr 01 Python
基于DataFrame改变列类型的方法
Jul 25 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python如何通过pyqt5实现进度条
Jan 20 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
python中yield的用法详解
Jan 13 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
递归实现php数组转xml的代码分享
2015/05/14 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
js压缩利器
2007/02/20 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
实例讲解python函数式编程
2014/06/09 Python
浅谈MySQL中的触发器
2015/05/05 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python构建自定义回调函数详解
2017/06/20 Python
Python3内置模块random随机方法小结
2019/07/13 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
工商行政处罚决定书
2015/06/24 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书