# -*- coding: utf-8 -*-
#Gensim入门教程from gensim import corpora,models,similarities
texts = [['human', 'interface', 'computer','interface'],['survey', 'user', 'computer', 'system', 'response', 'time'],['eps', 'user', 'interface', 'system'],['system', 'human', 'system', 'eps'],['user', 'response', 'time'],['trees'],['graph', 'trees'],['graph', 'minors', 'trees'],['graph', 'minors', 'survey']]
#以上大列表中,每个自列表代表一个文本分词后的结果
def print_dict(dict):for key in dict:print type(key),key,str(dict[key]),'\n'printdictionary = corpora.Dictionary(texts)#这个应该是分词后的结果,Dictionary用来去重
corpus = [dictionary.doc2bow(text)for text in texts]
print_dict(dict(dictionary.items()))
print("------------------------------------------------")
print("file numbers=",dictionary.num_docs)
print("------------------------------------------------")
#返回的结果中,全部都是list,可以看到,corpus下标是0~8,表示文本数目是9个
#返回的list中的元祖()中,是(id,在单个文本中出现该word的次数)、
#而一个list中包含的tuple数量=分词后word数量-重复的word数量
#举例:['human', 'interface', 'computer','interface']这个文本的
#分词后word数量是4个,而由于interface重复了一次,所以tuple数量=4-1=3
# 所以最终对应的corpus[0]输出的list中是3个tuple,而不是4个
print corpus[0]
print corpus[1]
print corpus[2]
print corpus[3]
print corpus[4]
print corpus[5]
print corpus[6]
print corpus[7]
print corpus[8]
print("--------------------------------------------------")
tfidf=models.TfidfModel(corpus)#输入稀疏矩阵
print tfidf#TfidfModel(num_docs=9, num_nnz=28),num_nnz是每个文件中不重复词个数的和
corpus_tfidf=tfidf[corpus]
query='human science good interface'
#下面是把询问的问题转化为稀疏向量
print("--------------------------------------------------")
vec_bow=dictionary.doc2bow(query.split())
print vec_bow
vec_tfidf=tfidf[vec_bow]
print vec_tfidf#这个结果是把query的词汇中,筛选出属于dictionary的部分,然后分别计算tf-idf值
print("----------------以下三行代码计算query和候选文本的相似度----------待会这里测试下复旦新闻数据集-----------------------")index=similarities.MatrixSimilarity(corpus_tfidf)#similarities是一个函数名,不要自己卵用
print "index=",index
sims=index[vec_tfidf]
print "sims=",sims#输出列表,元素数量=文本数量
print("---------------------------")
similarity=list(sims)#输出列表,元素数量=文本数量
print "similarity=",similarity
print("----------------以上三行代码计算query和候选文本的相似度----------待会这里测试下复旦新闻数据集-----------------------")
store_path='/home/appleyuchi/coai_fudan/storefile.txt'
sim_file=open(store_path,'w')
for i in similarity:sim_file.write(str(i)+'\n')
sim_file.close()

如果使用LSI模型,那么:

# -*- coding: utf-8 -*-
#Gensim入门教程from gensim import corpora,models,similarities
texts = [['human', 'interface', 'computer','interface'],['survey', 'user', 'computer', 'system', 'response', 'time'],['eps', 'user', 'interface', 'system'],['system', 'human', 'system', 'eps'],['user', 'response', 'time'],['trees'],['graph', 'trees'],['graph', 'minors', 'trees'],['graph', 'minors', 'survey']]
#以上大列表中,每个自列表代表一个文本分词后的结果
def print_dict(dict):for key in dict:print type(key),key,str(dict[key]),'\n'printdictionary = corpora.Dictionary(texts)#这个应该是分词后的结果,Dictionary用来去重
corpus = [dictionary.doc2bow(text)for text in texts]
print_dict(dict(dictionary.items()))
print("------------------------------------------------")
print("file numbers=",dictionary.num_docs)
print("------------------------------------------------")
#返回的结果中,全部都是list,可以看到,corpus下标是0~8,表示文本数目是9个
#返回的list中的元祖()中,是(id,在单个文本中出现该word的次数)、
#而一个list中包含的tuple数量=分词后word数量-重复的word数量
#举例:['human', 'interface', 'computer','interface']这个文本的
#分词后word数量是4个,而由于interface重复了一次,所以tuple数量=4-1=3
# 所以最终对应的corpus[0]输出的list中是3个tuple,而不是4个
print corpus[0]
print corpus[1]
print corpus[2]
print corpus[3]
print corpus[4]
print corpus[5]
print corpus[6]
print corpus[7]
print corpus[8]
print("--------------------------------------------------")
lsi=models.LsiModel(corpus)#输入总文本的稀疏矩阵
print lsi#TfidfModel(num_docs=9, num_nnz=28),num_nnz是每个文件中不重复词个数的和
corpus_lsi=lsi[corpus]
query='human science good interface'
#下面是把询问的问题转化为稀疏向量
print("--------------------------------------------------")
vec_bow=dictionary.doc2bow(query.split())
print vec_bow
vec_lsi=lsi[vec_bow]
print vec_lsi#这个结果是把query的词汇中,筛选出属于dictionary的部分,然后分别计算tf-idf值
print("----------------以下三行代码计算query和候选文本的相似度---------------------------------")index=similarities.MatrixSimilarity(corpus_lsi)#similarities是一个函数名,不要自己卵用
print "index=",index
sims=index[vec_lsi]
print "sims=",sims#输出列表,元素数量=文本数量
print("---------------------------")
similarity=list(sims)#输出列表,元素数量=文本数量
print "similarity=",similarity
print("----------------以上三行代码计算query和候选文本的相似度----------------------------")
store_path='/home/appleyuchi/coai_fudan/storefile.txt'
sim_file=open(store_path,'w')
for i in similarity:sim_file.write(str(i)+'\n')
sim_file.close()

Gensim初步使用和详细解释(该代码只能处理英文,处理中文不可用该代码)相关推荐

  1. python鸭制作类代码_详细解释ducktyping鸭子类型程序设计与Python的实现

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定. 这个概念的名字来源 ...

  2. 吴恩达机器学习 神经网络 作业1(用已经求好的权重进行手写数字分类) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  3. 吴恩达机器学习 逻辑回归 作业3(手写数字分类) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  4. 吴恩达机器学习 逻辑回归 作业2(芯片预测) Python实现 代码详细解释

    整个项目的github:https://github.com/RobinLuoNanjing/MachineLearning_Ng_Python 里面可以下载进行代码实现的数据集 题目介绍: In t ...

  5. python模板代码替换_Python - 安全替换字符串模板(safe_substitute) 详细解释

    安全替换字符串模板(safe_substitute) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27057339 字 ...

  6. 《算法竞赛入门经典》(第二版)代码及详细解释(持续更新!)

    笔者中山大学硕士,医学生+计科学生的集合体,机器学习爱好者. 现发布[刘汝佳<算法竞赛入门经典>(第二版)--紫书]的例题和习题的代码和详细解释. 欢迎批评指正! 另外欢迎关注本人微信公众 ...

  7. 单指标时间序列异常检测——基于重构概率的变分自编码(VAE)代码实现(详细解释)

    1. 编写目的 不少论文都是基于VAE完成的异常检测,比如 Donut .Bagel.尽管 Donut 实现的模型很容易通过继承于重写父类方法的方式实现一个 VAE-baseline,并且 Bagel ...

  8. PointNet代码详细解释(Pytorch版本)

    pointnet.pytorch的代码详细解释 1. PointNet的Pytorch版本代码解析链接 2. 代码解释 2.1 代码结构思维导图 2.2 代码注释 2.2.1 build.sh 2.2 ...

  9. 【机器学习】交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图

    [机器学习]交叉验证详细解释+10种常见的验证方法具体代码实现+可视化图 一.使用背景 由于在训练集上,通过调整参数设置使估计器的性能达到了最佳状态:但在测试集上可能会出现过拟合的情况. 此时,测试集 ...

最新文章

  1. python-eggs异常解决方法
  2. 英文版PDF不能显示中文PDF文件的解决方法
  3. nginx转发端口路由器再转发
  4. TSQL--NESTED LOOPS JOIN
  5. Python入门100题 | 第027题
  6. 阿里docker安装mysql_docker安装mysql
  7. 5训练需要更改参数吗_糖尿病病人需要多喝水吗?多喝水的5大好处,了解一下...
  8. SpringApplication.run做了哪些事情
  9. 浏览器标准模式和怪异模式
  10. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)中
  11. [转]微信小程序之购物车功能
  12. java 实现base64编码的三种方式、各方式性能比较、最后给出最优工具类 小白实操记录
  13. PTA:计算正方体体积与表面积(c++,类)
  14. 在计算机内部.机器码的形式,在计算机内部,机器码的形式是____。
  15. 全球及中国卫星产业应用建设布局及投资机会分析报告2022-2028年版
  16. Fiddler之自动修改数据包(Free HTTP插件)
  17. Verilog学习笔记-——Verilog模块例化
  18. [附源码]java毕业设计流浪宠物免费领养系统
  19. oracle 11g从DBF文件恢复数据
  20. initpki.dll加载失败 找不到指定的模块的解决办法

热门文章

  1. JAVA的静态变量、静态方法、静态类
  2. 解决接收参数乱码,tomcat的URIEncoding=UTF-8
  3. VS2008下配置WTL开发环境
  4. Silverlight初级教程系列
  5. Vscode----热门插件超实用插件汇总(史上最全)
  6. android settext 参数,Android TextView.setTextColor()的参数设置方式
  7. JQuery中.css()与.addClass()设置样式的区别
  8. mysql 备份库的shell_shell学习之自动备份mysql数据库
  9. LeetCode-28 实现strStr()
  10. Promise:Promise.all、Promise.race、Promise.any的用法及区别