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 enumerate遍历数组示例应用
Sep 06 Python
python字符串连接方式汇总
Aug 21 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
Python实现时钟显示效果思路详解
Apr 11 Python
Python常用模块之requests模块用法分析
May 15 Python
Python 过滤错误log并导出的实例
Dec 26 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
python中round函数如何使用
Jun 19 Python
python selenium 获取接口数据的实现
Dec 07 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 阴历-农历-转换类代码
2012/01/16 PHP
php图片缩放实现方法
2014/02/20 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
js Calender控件使用详解
2015/01/05 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
手机端转换rem适应
2017/04/01 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
几个判断型的面试题
2012/07/03 面试题
社区母亲节活动记录
2014/03/06 职场文书
英语系本科生求职信
2014/07/15 职场文书
求职导师推荐信范文
2015/03/27 职场文书
周末问候语大全
2015/11/10 职场文书
Python基础详解之邮件处理
2021/04/28 Python