importjiebaimportgensimfrom gensim importcorporafrom gensim importmodelsfrom gensim importsimilarities

l1= ["祖国祖国我们爱你", "你今年几岁了", "你有多高你胸多大", "你胸多大"] #语料库

a = "祖国我爱你"all_doc_list=[]for doc inl1:

doc_list=list(jieba.cut_for_search(doc))

all_doc_list.append(doc_list)print(all_doc_list)

doc_test_list=list(jieba.cut_for_search(a))#制作语料库 # [['你', '的', '名字', '是', '什么'], ['你', '今年', '几岁', '了'],#['你', '有', '多', '高', '你', '胸多大'], ['你', '胸多大']]#{"你":1,"的":2,"名字":3}

dictionary = corpora.Dictionary(all_doc_list) #制作词袋#{'什么': 0, '你': 1, '名字': 2, '是': 3, '的': 4, '了': 5,#'今年': 6, '几岁': 7, '多': 8, '有': 9, '胸多大': 10, '高': 11}

#词袋的理解#词袋就是将很多很多的词,进行排列形成一个 词(key) 与一个 标志位(value) 的字典#例如: {'什么': 0, '你': 1, '名字': 2, '是': 3, '的': 4, '了': 5, '今年': 6, '几岁': 7, '多': 8, '有': 9, '胸多大': 10, '高': 11}#至于它是做什么用的,带着问题往下看

print("token2id", dictionary.token2id)print("dictionary", dictionary, type(dictionary))

corpus= [dictionary.doc2bow(doc) for doc inall_doc_list]#[14230 1675]#"你,今年,多,大,了" 1,6,8,5#[['你', '的', '名字', '是', '什么'], ['你', '今年', '几岁', '了'],#['你', '有', '多', '高', '你', '胸多大'], ['你', '胸多大']]#语料库:#这里是将all_doc_list 中的每一个列表中的词语 与 dictionary 中的Key进行匹配#得到一个匹配后的结果,例如['你', '今年', '几岁', '了']#就可以得到 [(1, 1), (5, 1), (6, 1), (7, 1)]#1代表的的是 你 1代表出现一次, 5代表的是 了 1代表出现了一次, 以此类推 6 = 今年 , 7 = 几岁

print("corpus", corpus, type(corpus))#将需要寻找相似度的分词列表 做成 语料库 doc_test_vec

doc_test_vec = dictionary.doc2bow(doc_test_list) #doc_test_vec "你,今年,多,大,了" 1,6,8,5

print("doc_test_vec", doc_test_vec, type(doc_test_vec))#corpus [14230,1675] 语料库 l1#doc_test_vec 1685 用户问题 a

#将corpus语料库(初识语料库) 使用Lsi模型进行训练

lsi = models.LsiModel(corpus) #向量#corpus = [[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1)], [(1, 1), (5, 1), (6, 1), (7, 1)], [(1, 2), (8, 1), (9, 1), (10, 1), (11, 1)], [(1, 1), (10, 1)]]#这里的只是需要学习Lsi模型来了解的,这里不做阐述

print("lsi", lsi, type(lsi))#语料库corpus的训练结果

print("lsi[corpus]", lsi[corpus])#获得语料库doc_test_vec 在 语料库corpus的训练结果 中的 向量表示

print("lsi[doc_test_vec]", lsi[doc_test_vec])#向量 :#位置表示 [(0, 1), (1, 1), (2, 1), (3, 1), (4, 1)] = 834473503#[(1, 1), (5, 1), (6, 1)] = 987527163817476541#矩阵#[(5,5),(6,6),(7,3),(5,6),(7,8),(4,4)]#(7,7)#1,边长+-1 ==7 100 -+1 = -30 [40,40],[70,70],[100,-20],[40,70],[100,70],[10,10]#2,正方形 +-1 ==正 100 -+1 = -30 100,100,-20,70,70,100#3,边长小于 +-1 == 100 -+1 = -30 [70,70],[100,100],[0,40],[],[0,0]#4,加权求和 = 180,240,60,180,240,120

#文本相似度#稀疏矩阵相似度 将 主 语料库corpus的训练结果 作为初始值#0 1 0 1 1#0 0 1 1 1#0 1 0 1 1#0 0 1 1 1#0 1 0 1 1

index= similarities.SparseMatrixSimilarity(lsi[corpus], num_features=len(dictionary.keys()))print("index", index, type(index))#将 语料库doc_test_vec 在 语料库corpus的训练结果 中的 向量表示 与 语料库corpus的 向量表示 做矩阵相似度计算

sim =index[lsi[doc_test_vec]]print("sim", sim, type(sim))#对下标和相似度结果进行一个排序,拿出相似度最高的结果#cc = sorted(enumerate(sim), key=lambda item: item[1],reverse=True)

cc = sorted(enumerate(sim), key=lambda item: -item[1])print(cc)

text=l1[cc[0][0]]print(a,text)

python权重相似度矩阵_gensim之使用稀疏矩阵相似度,判断输入的文字意图相关推荐

  1. 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取

    文章目录 第1章 项目体系架构设计 1.1 项目系统架构 1.2 项目数据流程 1.3 数据模型 第2章 工具环境搭建 2.1 MongoDB(单节点)环境配置 2.2 Redis(单节点)环境配置 ...

  2. 分别用matlab和python计算物品相似度矩阵(Jaccard系数

    用户\物品 A B C D E 101 1 1 0 0 1 102 0 1 0 1 0 103 1 1 1 1 1 104 1 1 0 1 0 105 1 1 0 0 1 106 0 0 0 1 0 ...

  3. 相似度矩阵遍历 python

    相似度矩阵结果遍历 向量: tensor([[0.4284, 0.7538, 0.4982],         [0.8600, 0.0694, 0.5055]], dtype=torch.float ...

  4. python多分类混淆矩阵代码_深度学习自学记录(3)——两种多分类混淆矩阵的Python实现(含代码)...

    深度学习自学记录(3)--两种多分类混淆矩阵的Python实现(含代码),矩阵,样本,模型,类别,真实 深度学习自学记录(3)--两种多分类混淆矩阵的Python实现(含代码) 深度学习自学记录(3) ...

  5. python绘制混淆矩阵_使用python matplotlib绘制混淆矩阵

    使用python matplotlib绘制混淆矩阵 今天使用了python matplotlib包,绘制混淆矩阵.基本代码参考官网教程,在此基础上增加了格网显示. 代码说明: cm - 混淆矩阵的数值 ...

  6. python矩阵计算_python计算矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵.行列式的计算答案 ...

  7. 用python做算法_自己用python写的螺旋矩阵生成算法

    自己用python写的螺旋矩阵生成算法 如果输入6,可以生成如下矩阵: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 ...

  8. python文本数据转换数值矩阵_python numpy矩阵的数据类型转换

    在python中,numpy矩阵的数据类型转换需要调用astype(),直接修改dtype是无效的.调用astype返回数据类型修改后的矩阵,但是源数据的类型不会变,需要再对源数据的赋值进行操作才可以 ...

  9. Python实现打印螺旋矩阵功能的方法

    Python实现打印螺旋矩阵功能的方法 本文实例讲述了Python实现打印螺旋矩阵功能的方法.分享给大家供大家参考,具体如下: 一.问题描述 输入N, 打印 N*N 螺旋矩阵 比如 N = 3,打印: ...

  10. python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

最新文章

  1. windows 如何配置 Go 环境(Zip archive 方式)?
  2. 关于前端缓存的一个封装思路
  3. boot.img的分析
  4. PowerDesigner 逆向工程 从SQL文件转换成PDM 从PDM转成CDM
  5. 显示照片的RGB直方图
  6. linux将mysql中得配置为可读写_MySQL注入 利用系统读、写文件
  7. format python value error_格式化计算变量时出现“ValueError:无效的格式说明符”
  8. 用 pycharm 可视化管理 sqlite 数据库
  9. Centos7的 git: 未找到命令解决方法
  10. redis的info
  11. String的replaceAll()用法详解
  12. WinEdt Latex使用人家提供的模板时无法插入参考文献的方法
  13. 第一二三章 PMP第六版读书笔记
  14. 尚硅谷Maven2022----②单一架构案例
  15. 考研408.计算机网络.特殊IP地址的记忆方法
  16. 计算机操作系统与生态系统
  17. linux下解压文件丢失文件,Linux下解压文件
  18. 禁用键盘上的某些按键
  19. 华为PPPoE简单实验
  20. 机器学习项目之数据清洗

热门文章

  1. mysql中的sql在添加的操作中,id或者是某些字段,需要它添加自带的默认值,或者我们并不想对id或者某个字段赋值
  2. python循环语句c次_python循环语句
  3. linux 低功耗模式,stm32的低功耗模式:
  4. python多线程下载编程_Python多线程结合队列下载百度音乐代码详解
  5. ajax怎么添加表单,使用Ajax动态地将表单添加到Django表单集
  6. 计算机二级java应用题怎么答,2015年计算机二级考试JAVA基本操作和简单应用题
  7. linux中SPI相关API函数,linux spi驱动开发学习(一)-----spi子系统架构
  8. linux第五单元作业,第五单元《微型计算机系统》教案
  9. 【转】 C#泛型集合—Dictionary使用技巧
  10. 《网页设计技巧》系列之一 浅谈文本排版