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清除字符串里非数字字符的方法
Jul 02 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
python3制作捧腹网段子页爬虫
Feb 12 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python表示矩阵的方法分析
May 26 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
pycharm的python_stubs问题
Apr 08 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
如何使用Python调整图像大小
Sep 26 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内存溢出问题的解决方法
2013/06/25 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
委托公证书范本
2014/04/03 职场文书
学校标语大全
2014/06/19 职场文书
护士工作心得体会
2016/01/25 职场文书