1. import jieba
  2. import gensim
  3. from gensim import corpora
  4. from gensim import models
  5. from gensim import similarities
  6.  
  7. l1 = ["你的名字是什么" ,"你今年多少岁","你今年几岁了" ,"你有多高你胸多大", "你胸多大"]
  8. a = "你今年多大了"
  9.  
  10. all_doc_list = []
  11. for doc in l1:
  12. doc_list = [word for word in jieba.cut(doc)]
  13. all_doc_list.append(doc_list)
  14. print(all_doc_list)
  15.  
  16. doc_test_list = [word for word in jieba.cut(a)]
  17. print(doc_test_list)
  18.  
  19. # 制作语料库
  20. dictionary = corpora.Dictionary(all_doc_list) # 制作词袋
  21. # 词袋的理解
  22. # 词袋就是将很多很多的词,进行排列形成一个 词(key) 与一个 标志位(value) 的字典
  23. # 例如: {'什么': 0, '你': 1, '名字': 2, '是': 3, '的': 4, '了': 5, '今年': 6, '几岁': 7, '多': 8, '有': 9, '胸多大': 10, '高': 11}
  24. # 至于它是做什么用的,带着问题往下看
  25.  
  26. print("token2id", dictionary.token2id)
  27. print("dictionary", dictionary, type(dictionary))
  28.  
  29. corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]
  30. # 语料库:
  31. # 这里是将all_doc_list 中的每一个列表中的词语 与 dictionary 中的Key进行匹配
  32. # 得到一个匹配后的结果,例如['你', '今年', '几岁', '了']
  33. # 就可以得到 [(1, 1), (5, 1), (6, 1), (7, 1)]
  34. # 1代表的的是 你 1代表出现一次, 5代表的是 了 1代表出现了一次, 以此类推 6 = 今年 , 7 = 几岁
  35. print("corpus", corpus, type(corpus))
  36.  
  37. # 将需要寻找相似度的分词列表 做成 语料库 doc_test_vec
  38. doc_test_vec = dictionary.doc2bow(doc_test_list)
  39. print("doc_test_vec", doc_test_vec, type(doc_test_vec))
  40.  
  41. # 将corpus语料库(初识语料库) 使用Lsi模型进行训练
  42. lsi = models.LsiModel(corpus)
  43. # 这里的只是需要学习Lsi模型来了解的,这里不做阐述
  44. print("lsi", lsi, type(lsi))
  45. # 语料库corpus的训练结果
  46. print("lsi[corpus]", lsi[corpus])
  47. # 获得语料库doc_test_vec 在 语料库corpus的训练结果 中的 向量表示
  48. print("lsi[doc_test_vec]", lsi[doc_test_vec])
  49.  
  50. # 文本相似度
  51. # 稀疏矩阵相似度 将 主 语料库corpus的训练结果 作为初始值
  52. index = similarities.SparseMatrixSimilarity(lsi[corpus], num_features=len(dictionary.keys()))
  53. print("index", index, type(index))
  54.  
  55. # 将 语料库doc_test_vec 在 语料库corpus的训练结果 中的 向量表示 与 语料库corpus的 向量表示 做矩阵相似度计算
  56. sim = index[lsi[doc_test_vec]]
  57.  
  58. print("sim", sim, type(sim))
  59.  
  60. # 对下标和相似度结果进行一个排序,拿出相似度最高的结果
  61. # cc = sorted(enumerate(sim), key=lambda item: item[1],reverse=True)
  62. cc = sorted(enumerate(sim), key=lambda item: -item[1])
  63. print(cc)
  64.  
  65. text = l1[cc[0][0]]
  66.  
  67. print(a,text)

可用于机器学习,进行相似度比对,问题库越丰富,机器学习效果越准确

机器学习必会工具gensim的更多相关文章

  1. mac必装工具以及mac使用介绍

    必装工具 Scroll Reverserhttp://pilotmoon.com/scrollreverser/:一款可以使得鼠标使用方式和windows系统一致的软件 编程工具 ,,,,, 常用快捷 ...

  2. Facets:一款Google开源机器学习数据集可视化工具

    Homepage/演示网站:https://pair-code.github.io/facets/ Pypi:https://pypi.org/project/facets-overview/ Git ...

  3. Orange——开源机器学习交互式数据分析工具

    Orange为新手和专家提供开源机器学习和数据可视化.使用大型工具箱交互式数据分析工作流程. 交互式数据可视化 Orange的全部内容都是关于数据可视化,帮助发现隐藏的数据模式,提供数据分析过程背后的 ...

  4. iOS之17个提升iOS开发效率的必用工具

    时间就是金钱.编码效率的提升意味着更多的收入.可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我提升编码速度和工作效率的工具 ...

  5. 17个提升iOS开发效率的必用工具

    时间就是金钱.编码效率的提升意味着更多的收入.可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我们提升编码速度和工作效率的工 ...

  6. 10个提升iOS开发效率的必用工具

    Xcode插件 几乎所有开发者都知道Alcatraz是一个开源的包管理工具,可以让我们更轻松地管理各种插件.接下来就介绍下我的最推荐的10个插件: 10.HOStringSense 在编辑字符串的时候 ...

  7. 【工利其器】必会工具之(三)systrace篇(1)官网翻译

    前言 Android 开发者官网中对systrace(Android System Trace)有专门的介绍,本篇文章作为systrace系列的开头,笔者先不做任何介绍,仅仅翻译一下官网的介绍.在后续 ...

  8. 【工利其器】必会工具之(三)systrace篇(2)

    systrace工具打开路径 以AndroidStudio(后面简写为AS),在顶部菜单栏中 Tools>Android>Android Device Monitor 打开后看到如下界面, ...

  9. 【工利其器】必会工具之(二)Android开发者官网篇

    前言 当刚开始踏入Android程序员这个行业的时候,想必绝大多数的人都和笔者一样,热血沸腾,激情四射,买了很多讲解Android开发的书籍.当开发某个功能需要学习某方面知识的时候,大家又成了“面向百 ...

随机推荐

  1. mysql 复制表结构和数据

    CREATE TABLE 新表名 SELECT 字段 as 新字段,字段 as 新字段.....from 旧表名:

  2. centos 7 安装更新php5.6

    epel  remi 什么的把我弄晕了 不深研这东西了,直接按步骤操作更新了. # yum install epel-release # rpm -ivh http://rpms.famillecol ...

  3. Excel中的clean函数

    纯属note. 之前经常用excel处理数据的时候,对长文本或网站上拉取的值都会用clean函数清除一些我们肉眼看不到的非打印字符. Excel官方介绍:clean 删除文本中的所有非打印字符. 此次 ...

  4. HTML中使用CSS样式(上)

    在每一个标签上都可以设置style属性,这就是CSS样式: <div style="height:48px;border: 1px solid red;text-align:cente ...

  5. 交换机上的MAC地址表

    拓扑图: 1.首先在R1上的配置: R1(config)#int R1(config)#interface g R1(config)#interface gigabitEthernet 0/0 R1( ...

  6. Jenkins+Jmeter+Ant   生成测试报告

    <?xml version="1.0" encoding="UTF-8"?> <project name="wms_test&quo ...

  7. CodeForces - 262B

    Roma works in a company that sells TVs. Now he has to prepare a report for the last year. Roma has g ...

  8. git的下载与安装

    Git的下载地址:https://git-scm.com/download/win 第一步:根据自己电脑的位数下载Git 第二步:下载安装包,放到指定的文件夹 第三步:更换路径安装Git(也可以放在C ...

  9. zabbix 告警信息与恢复信息

    名称: Action-Email 默认接收人: 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 默认信息: 告警主机:{HOSTNAME ...

  10. uniapp滚动监听元素

    鸽了这么久,一晃2个月过去了.自考+上班没时间记录. 前不久看到移动官网上的时间轴效果,看起来不错,我也来试着做一下. 需要元素滚动到视野内加载动画. 插件地址 https://ext.dcloud. ...