自然语言处理(NLP)之使用TF-IDF模型计算文本相似度

所用数据集:ChnSentiCorp_htl_all.csv
语料库即存放稀疏向量的列表。
要注意的是,搜索文本text与被检索的文档共用一个特征词词典。

NLP计算文本相似度的方法,可以参考博文:https://blog.csdn.net/weixin_34101784/article/details/94639717

代码主要使用gensim库完成了分词、TF-IDF模型训练、文本相似度计算。
过程如下:

分词、建立特征词典、建立语料库、用TF-IDF模型处理语料库、计算搜索文本与被检索文本的相似度。
示例代码:

import csv
import jieba
from gensim import corpora, models, similaritiescount = 0
wordListTop10 = []
with open('ChnSentiCorp_htl_all.csv', 'r', encoding='utf-8') as f:lines = csv.reader(f)  # lines的类型是<class '_csv.reader'>   指向csv文件的第一行next(lines)  # 指向csv文件的第二行  这个函数的参数是迭代器(iterator)和一个default# next(iterator, default)# default是迭代器已经到了最末端,再调用next()函数的输出值。不填这个参数的话,到了最末端还用next()的话会报错。for line in lines:# 只选取前10句话if count == 10:breaksegList = list(jieba.cut(line[1]))  # 分词      jieba.cut(line[1])对每一行列表的第二个元素进行分词,类型是generatorwordListTop10.append(segList)  # 把前10句话的所有分词放进一个列表中,该列表为一个列表嵌套10个列表count += 1
#         print('/'.join(segList))       # '/'.join(segList)将segList即每句话的分词列表 转换成字符串,用’/‘将每个元素连接起来"""
制作词袋模型(bag_of_word  (bow))
"""
# 制作字典
dictionary = corpora.Dictionary(wordListTop10)
# 可以通过token2id得到特征数字
# print(dictionary.token2id)"""
制作数字向量类型的语料库(doc2bow)
"""
# ----> 将字符串转换成数字向量类型的词袋模型(稀疏向量)
# 源文件不做处理是一个字符串类型的语料库
corpus = [dictionary.doc2bow(doc) for doc in wordListTop10]def semblance(text, corpus):# 对测试文本分词dic_text_list = list(jieba.cut(text))# 制作测试文本的词袋doc_text_vec = dictionary.doc2bow(dic_text_list)# 获取语料库每个文档中每个词的tfidf值,即用tfidf模型训练语料库tfidf = models.TfidfModel(corpus)# 对稀疏向量建立索引index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))sim = index[tfidf[doc_text_vec]]  # 相当于sim = index.get_similarities(tfidf[doc_text_vec])print(sim)print(len(sim))# 按照相似度来排序sim_sorted = sorted(enumerate(sim, 1), key=lambda x: -x[1])  # enumerate(x, 1) 代表从1开始设立索引# 相当于sorted(enumerate(sim), key=lambda x: x[1], reverse=Trueprint(sim_sorted)#     for e,s in enumerate(sim,1):
#         print('text 与 doc%d 相似度为:%.6f' % (e, s))if __name__ == '__main__':text = '这个商务大床房,感觉还不错'
semblance(text, corpus)

运行结果:

[0.         0.46778572 0.11295232 0.01399767 0.         0.058496550.01257649 0.01730035 0.03707163 0.09614414]
10
[(2, 0.46778572), (3, 0.11295232), (10, 0.09614414), (6, 0.058496553), (9, 0.037071627), (8, 0.017300347), (4, 0.013997675), (7, 0.012576494), (1, 0.0), (5, 0.0)]

可以看到,text与数据集中第二条语句相似度最高。

自然语言处理(NLP)之使用TF-IDF模型计算文本相似度相关推荐

  1. 中文自然语言处理(NLP)(三)运用python jieba模块计算知识点当中关键词的词频

    前两次链接:中文自然语言处理(NLP)(一)python jieba模块的初步使用       中文自然语言处理(NLP)(二)python jieba模块的进一步学习和xlrd模块 续上次的随笔之后 ...

  2. NLP——计算文本相似度的常用算法

    文章目录 一.绪论 二.余弦相似度 2.1 余弦相似度定义 2.2 计算相似度步骤 2.3 举例 2.4 改进方式 2.5 代码 三.TF-IDF计算 3.1 TF.IDE.TF-IDF的计算方法 3 ...

  3. NLP: 0基础应用T5模型进行文本翻译代码实例~

    文章目录 前言 一.目标文本是什么? 二.模型调用步骤 1.引入库 2.导入模型,本文使用 t5-base 3.使用分词器对目标文本进行分词 4.对刚刚生成的分词结果进行目标语言的生成工作 5.对生成 ...

  4. 向量空间模型(VSM)--用于计算文本相似度

    向量空间模型将文档映射为一个特征向量V(d)=(t1,ω1(d):-:tn, ωn(d)),其中ti(i=1,2, -,n)为一列互不雷同的词条项,ωi(d)为ti在d中的权值, 一般被定义为ti在d ...

  5. 向量空间模型——计算文本(英文)相似度

    http://blog.chinaunix.net/uid-26548237-id-3541783.html 1.向量空间模型 向量空间模型作为向量的标识符,是一个用来表示文本文件的代数模型.它应用于 ...

  6. 【NLP】余弦定理计算文本相似度

    一. 余弦相似概述 余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性.0度角的余弦值是1,而其他任何角度的余弦值都不大于1:并且其最小值是-1. 从而两个向量之间的角度的余弦值确定两个向 ...

  7. 文本特征抽取的向量空间模型(VSM)和TF/IDF方法

    文本特征抽取 两组小说,一组是爱情的,另一组是科幻的.我们能否用支持向量机训练一个模型,用来识别小说类型呢? 这个并不容易.因为支持向量机这类机器学习算法只能接受数学里面的向量作为输入.如果用它来做文 ...

  8. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  9. 自然语言处理(NLP)之word2vec的实现(PTB语料库)<找语义相近的词>

    在2013年Google开源了一款用于词向量计算的工具:word2vec,它本身不是一种深度学习之类的模型,是一种用于计算词嵌入的体系结构.实际上大家平时说的这个指代的就是前面介绍过的跳字(元)模型与 ...

最新文章

  1. 1022 Digital Library
  2. 用C++实现十进制转二进制【个人思想】
  3. 618选购手机正当时,好评率高达99%的手机了解一下!
  4. 洛谷 题解 P1135 【奇怪的电梯】
  5. php动态创建属性,PHP使用方法重载实现动态创建属性的get和set方法
  6. Silverlight 中的通信安全访问策略
  7. windows 下 TensorFlow(GPU 版)的安装
  8. guava-Retryer失败重试
  9. SAP soamanager发布的Webservice服务,调用时出现http500报错
  10. tbslog乱码转换_日文游戏乱码怎么办 乱码转换工具LocaleEmulator
  11. 微信小程序密码显示隐藏(小眼睛)
  12. 屏幕录像专家 V2013 + 注册机(屏幕录像)
  13. 小学计算机机器人大赛,2019年花都区中小学电脑机器人竞赛活动
  14. css动画animation详细解读
  15. DataGridView 控件中自动生成列
  16. yy欢聚时代软件测试笔试题
  17. 支付宝被罚18万元;金立副总裁回应60亿广告费;苹果再遭专利诉讼丨价值早报
  18. IDF实验室-抓到一只苍蝇
  19. 基于浏览器请求的国际化实现
  20. buuctf blacklist

热门文章

  1. 2021第一融!第四范式完成D轮7亿美元融资
  2. 快速适应性很重要,但不是元学习的全部目标
  3. 重磅!全球首个可视化联邦学习产品与联邦pipeline生产服务上线
  4. 强烈推荐一款Python可视化神器!
  5. 虐狗日记:和小冰同居的日子
  6. Space X的火箭上天,Tesla的业绩落地
  7. 重磅!阿里开源AI核心技术,95%算法工程师受用
  8. 月入5W,月花销不足2K的程序员,可免费获得AI女友一名
  9. 面试官:聊一聊 Spring Boot 服务监控机制
  10. JUC 常用 4 大并发工具类