# -*- coding:utf-8 -*
#本代码是在jupyter notebook上实现,author:huzhifei, create time:2018/8/14
#本脚本主要实现了基于python的gensim包里的similarities接口对文本做相似度的项目目的#导入gensim与jieba包
from gensim import corpora, models, similarities
import jieba#去除中英停用词
def get_custom_stopwords(stop_words_file):with open(stop_words_file,encoding='utf-8')as f:stopwords=f.read()stopwords_list=stopwords.split('\n')custom_stopwords_list=[i for i in stopwords_list]return custom_stopwords_list#调用停用词函数
stop_words_file="stopwordsHIT.txt"
stopwords=get_custom_stopwords(stop_words_file)
print(len(stopwords))#jieba分词函数
def cut(sentence):generator = jieba.cut(sentence)return [word for word in generator if  word not in stopwords]#连接数据库
import pyodbc
conn = 'DRIVER={SQL Server Native Client 10.0};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s'%('database', 'server', 'username', 'password')mssql_conn = pyodbc.connect(conn)
cur = mssql_conn.cursor()
sql='select  ArticleId, 标题, 摘要, Taskid from tablecur.execute(sql)
listl=cur.fetchall()
cur.close()
mssql_conn.commit()
mssql_conn.close()# 数据处理——将数据库里的数据存入一个list
s=[]
for i in listl:s.append(list(i))# 对上面的s列表的摘要一列文本数据进行分词
t=[]
for line in s:t.append(line[2])
texts = [cut(str(text)) for text in t[:]]# 对分好词的文本数据建立语料词典
dictionary = corpora.Dictionary(texts)
feature_cnt = len(dictionary.token2id.keys())
corpus = [dictionary.doc2bow(text) for text in texts]#对语料进行tfidf计算并对要做相似度的那批文本数据做词典向量转换
tfidf = models.TfidfModel(corpus)
new_vec=[]
for i in t[:]:new_vec.append(dictionary.doc2bow(cut(str(i))))# 相似度计算并对满足条件的数据存入数据库
import pyodbc
import datetime
import time
start = time.time()
conn = 'DRIVER={SQL Server Native Client 10.0};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s'%('database', 'server', 'username', 'password')mssql_conn = pyodbc.connect(conn)
cur = mssql_conn.cursor() sql="insert into table  values (?,?,?,?,?,?,?,?,?)"index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=feature_cnt,num_best=50000)
w=[]
insert={}
for k,j in enumerate(new_vec):sim = index[tfidf[j]]for i in range(len(sim)):insert[s[k][0]]=s[sim[i][0]][0]if 0.75<=sim[i][1]<=0.99 and s[sim[i][0]][0] not in insert.keys():#提取了相似度在0.75以上,0.99以下(排除相似度为1的数据自身)的非重复的文本数据cur.execute(sql,(s[k][0],s[k][1],s[k][2],s[sim[i][0]][0],s[sim[i][0]][1],s[sim[i][0]][2],str(s[k][3]),sim[i][1],datetime.datetime.now().strftime('%D')));
cur.close()
mssql_conn.commit()
mssql_conn.close()
end = time.time()
print (end-start)#打印出计算相似度所消耗的时间

机器学习算法Python实现:gensim里的similarities文本相似度计算相关推荐

  1. python文本相似度检测框架_机器学习入门之使用gensim 的 doc2vec 实现文本相似度检测...

    本文主要向大家介绍了机器学习入门之使用gensim 的 doc2vec 实现文本相似度检测,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助.环境 Python3, gensim,jieb ...

  2. 决策算法python_GitHub - nxety/MachineLearning_Python: 机器学习算法python实现

    机器学习算法Python实现 目录 1.代价函数 其中: 下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近 共有m条数据,其中代表我们要拟合出来的方程到真实值距离的平方,平 ...

  3. 机器学习算法 | Python实现k-近邻算法

    机器学习算法 | Python实现k-近邻算法 目录 机器学习算法 | Python实现k-近邻算法 基本介绍 工作原理 程序设计 参考资料 基本介绍 KNN,全名k近邻算法.是⼀种⾮常简单有效的机器 ...

  4. 文本相似度计算python lda_如何识别“答非所问”?使用gensim进行文本相似度计算...

    在文本处理中,比如商品评论挖掘,有时需要了解每个评论分别和商品的描述之间的相似度,以此衡量评论的客观性. 评论和商品描述的相似度越高,说明评论的用语比较官方,不带太多感情色彩,比较注重描述商品的属性和 ...

  5. 文本相似度计算——Simhash算法(python实现)

    互联网网页存在着大量重复内容,必须有一套高效的去重算法,否则爬虫将做非常多的无用功,工作时效性无法得到保证,更重要的是用户体验也不好.业界关于文本指纹去重的算法众多,如 k-shingle 算法.go ...

  6. Finding Similar Items 文本相似度计算的算法——机器学习、词向量空间cosine、NLTK、diff、Levenshtein距离...

    http://infolab.stanford.edu/~ullman/mmds/ch3.pdf 汇总于此 还有这本书 http://www-nlp.stanford.edu/IR-book/ 里面有 ...

  7. 如何识别“答非所问”?使用gensim进行文本相似度计算

    在文本处理中,比如商品评论挖掘,有时需要了解每个评论分别和商品的描述之间的相似度,以此衡量评论的客观性. 评论和商品描述的相似度越高,说明评论的用语比较官方,不带太多感情色彩,比较注重描述商品的属性和 ...

  8. sklearn tfidf求余弦相似度_【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

  9. 【基础算法 】文本相似度计算

    在自然语言处理中,文本相似度是一种老生常谈而又应用广泛的基础算法模块,可用于地址标准化中计算与标准地址库中最相似的地址,也可用于问答系统中计算与用户输入问题最相近的问题及其答案,还可用于搜索中计算与输 ...

最新文章

  1. com.android.ide.common process ProcessException:Failed to execcue aapt
  2. SQL Server 2005 18452登录错误 的解决方法
  3. v2视频服务器退出系统怎么启动,V2视频会议系统入门操作手册.doc
  4. Java字符串的10大热点问题盘点
  5. Linux CentOS 7下 Apache Tomcat 7 安装与配置
  6. 5分钟了解TypeScript
  7. word2007中如何隐藏工具栏
  8. 两个矩阵相加 Exercise08_05
  9. Spring boot(六):如何优雅的使用mybatis
  10. 拳王虚拟项目公社:说一个合法正规兼职创业,副业虚拟资源项目
  11. CentOS 6.5 x64安装nagios fetion报警
  12. AD中画PCB详细流程
  13. 早年的一篇关于80286保护模式的文章
  14. 通信恩仇,5G江湖(转)
  15. 皮尔逊相关 p值_皮尔逊,p值和图
  16. 手机关闭浏览器html,如何解除手机浏览器网页限制?
  17. 营业执照识别/发票识别在供应链与物流智能移动解决方案
  18. 基于Autojs的淘宝/京东618自动化
  19. [sphinx]中文语言模型训练
  20. Spark hadoop票据过期问题HDFS_DELEGATION_TOKEN

热门文章

  1. Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)
  2. is running beyond the ‘VIRTUAL‘ memory limit. Current usage: 123.5 MB of 1 GB physical memory used
  3. JNI之C语言简单回顾
  4. 计算机组成原理第三章视频,计算机组成原理 第3章 3.4 十进制转换二进制
  5. xml 和android脚本之家,AndroidManifest.xml配置文件解析_Android_脚本之家
  6. python比较两个二进制文件_python三种方法判断文件是否为二进制文件
  7. linux得到当前系统时间,在LINUX下用C++编程,怎么获取系统当前的时间。
  8. poi报空指针_POI 导出文件 报空指针异常 --Docker 中
  9. 怎么复制远程服务器上的文件夹,Linux系统复制文件/文件夹到远程服务器
  10. python 生成html文件浏览器_python如何将数据生成html文件+浏览器中文显示乱码问题...