NLP神器Gensim库(一):入门操作

2023-11-13

Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。
它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,
支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口


一:语料库的预训练

(将文档中原始的字符文本转换成Gensim模型所能理解的稀疏向量的过程。)

由于语言和应用的多样性,我们需要先对原始的文本进行分词、去除停用词等操作,得到每一篇文档的特征列表。例如,在词袋模型中,文档的特征就是其包含的word:

texts = [['human', 'interface', 'computer'],
['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']]

texts的每一行代表一篇文档,调用Gensim提供的API建立语料特征(此处即是word)的索引字典,并将文本特征的原始表达转化成词袋模型对应的稀疏向量的表达。依然以词袋模型为例:

from gensim import corpora
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
print corpus[0] 

#输出为: [(0, 1), (1, 1), (2, 1)]

出于内存优化的考虑,Gensim支持文档的流式处理。我们需要做的,只是将上面的列表封装成一个Python迭代器;每一次迭代都返回一个稀疏向量即可。

class MyCorpus(object):
    def iter(self):
        for line in open('mycorpus.txt'):
        yield dictionary.doc2bow(line.lower().split())

二:主题向量的变换

通过挖掘语料中隐藏的语义结构特征,我们最终可以变换出一个简洁高效的文本向量。

from gensim import models
tfidf = models.TfidfModel(iter) # iter是一个返回bow向量的迭代器

这两行代码将完成对iter中出现的每一个特征的IDF值的统计工作。

例如:

doc_bow = [(0, 1), (1, 1)]
print tfidf[doc_bow] # [(0, 0.70710678), (1, 0.70710678)]

同样是出于内存的考虑,model[corpus]方法返回的是一个迭代器。如果要多次访问model[corpus]的返回结果,可以先将结果向量序列化到磁盘上。

我们也可以将训练好的模型持久化到磁盘上,以便下一次使用:

tfidf.save("./model.tfidf")
## 下一次使用
tfidf = models.TfidfModel.load("./model.tfidf")


关于Gensim模型更多的介绍,参考官网文档:API Reference(https://radimrehurek.com/gensim/apiref.html


三:文档相似度的计算:构造LSI模型并将待检索的query和文本转化为LSI主题向量

以信息检索为例。对于一篇待检索的query,我们的目标是从文本集合中检索出主题相似度最高的文档。

首先,我们需要将待检索的query和文本放在同一个向量空间里进行表达(以LSI向量空间为例):

转换之前的corpus和query均是BOW向量:

# 定义lsi空间向量模型
lsi_model = models.LsiModel(corpus, id2word=dictionary, num_topics=2)
# 将语料文本corpus变换为lsi主题向量
documents = lsi_model[corpus]
# 将待索引文本query变换为lsi主题向量
query_vec = lsi_model[query]

下一步用待检索的文档向量初始化一个相似度计算的对象:

index = similarities.MatrixSimilarity(documents)
## 待检索的目标文档过多,使用similarities.MatrixSimilarity类往往会带来内存不够用的问题。
## 此时,可以改用similarities.Similarity类
index = similarities.Similarity(documents)

我们也可以通过save()和load()方法持久化这个相似度矩阵:

index.save('/tmp/test.index')
index = similarities.MatrixSimilarity.load('/tmp/test.index')

本文参考https://www.jianshu.com/p/9ac0075cc4c0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLP神器Gensim库(一):入门操作 的相关文章

  • 企业应该选择哪种区块链

    随着探索如何把区块链应用在各种场景 许多人就想到 也许不需要全世界的人共同参与 也不需要挖矿 我们只需要用到区块链的可信任 可追溯特性 通过较少节点达到拜占庭将军容错 于是私有链就诞生了 但私有链仍是中心化的 难以维持去中心化的优势 因此又
  • webdriver版本不匹配,重新下载webdriver后不知道应该放在哪个文件夹

    1 从官网上面按照对应的版本下载了对应浏览器的webdriver版本 我的是chrome windows 113开头的版本 2 下载并解压之后发现有很多个webdriver exe的程序 正确步骤是解压后复制exe文件放在原来的文件夹即可
  • Ubuntu根目录文件作用分析

    Ubuntu Linux的文件结构与Windows的文件结构不同 Windows将硬盘分成 等盘 也就是分成这些分区 而Linux操作系统不是把硬盘分 成这样的分区 它有一个根目录 用 表示 一个目录就相当于一个文件夹 根目录就相当于Lin
  • 360周鸿祎:互联网好产品六字法则——刚需、痛点、高频

    如何找到好的产品 它必须满足三个条件 刚需 痛点 高频 6月6号 奇虎360创始人董事长兼CEO周鸿祎走上颠覆式创新研习社的讲台 以他的产品经历 带来移动互联网产品观 干货满满 全程无尿点 课程实录分为上 下两部分 研习社根据演讲整理 未经
  • vue Antd单独隐藏Modal.confirm(this.$confirm方式)对话框的默认ok或cancel按钮

    有时候我们需要单独隐藏Modal对话框的默认确定或取消按钮 设置 footer null 会把两个按钮都隐藏 Antd有提供两个参数用于单独修改确定 取消按钮 对于确定按钮 设置 ok button props style display
  • STM32学习记录——74HC595四位数码管显示

    数模管作为STM32的一个重要外设 由于其成本低 稳定 被用于许多场景中 本篇文章来介绍下四位数码管的使用方法 数码管显示 一 数码管的分类 二 74HC595芯片 串入并出 三 原理图 四 代码主要操作 五 代码分析 1 void HC5
  • PyCharm安装

    lt 一 gt PyCharm安装 下载地址 http www jetbrains com pycharm download section windows professional 表示专业版 community 是社区版 推荐安装社区版
  • CSS3 Flexbox轻松实现元素的水平居中和垂直居中

    网上有很多关于Flex的教程 对于Flex的叫法也不一 有的叫Flexbox 有的叫Flex 其实这两种叫法都没有错 只是Flexbox旧一点 而Flex是刚出来不久的东西而已 为了方便说明 赶上新技术 下面我就把这种布局叫Flex布局 元
  • Unity --- 动画脚本

    1 什么是动画 在Unity中 首先如果游戏物体想要在场景中动起来的话 就必须使其对应组件中的属性发生合适的变化 而将属性的变化过程保存下来后形成的就是动画 以后如果想播放动画的话 只需要调用这段保存下来的属性变化就可以了 二 基础知识部分
  • 内存管理之一__align字节对齐

    转 http www cnblogs com ye moooooo p 4601189 html 一 什么是字节对齐 为什么要对齐 现代计算机中内存空间都是按照byte划分的 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 但实际情
  • 日志 - 客户端及服务端写法

    一 客户端 先来看一个日志类的实现方法 这个日志类也是代表着大多数客户端日志的主流写法 log h 1 ifndef LOG H 2 define LOG H 3 4 include
  • vue-echarts自适应大小的实现

    vue echarts图表自适应用到了vue resize 完整流程为 1 下载vue resize npm i vue resize S 2 main js中引入 import ResizeObserver from vue resize
  • gtj2018如何生成工程量报表_广联达BIM土建计量平台GTJ2018

    一 概述 建造整个世界 度量每种可能 相比13产品 100 项的增加与优化 量筋合 业务扩展10 以上 效率提升20 30 土建BIM模型数据上下游无缝连接 量筋合一 一次建模 无需互导 土建计量业务范围更广 工作效率提升更高 效率快 量筋
  • 【前端】Vue项目:旅游App-(22)detail:房屋信息、房屋设施、插槽

    文章目录 目标 过程与代码 房屋信息部分info 相似结构的组件section 房屋设施facility 效果 总代码 修改或添加的文件 detail section detail facility detail info detail 参
  • 通俗易懂的告诉你,https是如何保证数据安全的

    HTTP存在的问题 窃听风险 通信使用明文 不加密 内容可能会被窃听 第三方可能获知通信内容 冒充风险 不验证通信方的身份 因此有可能遭遇伪装 篡改风险 无法证明报文的完整性 所以有可能已遭篡改 HTTPS HTTPS网站 可以看到 HTT
  • redis数据类型(图解)

    一些命令的使用场景 1 由于集合是无序的 spop命令可以用于抽奖活动 2 商品销量排行榜可以用zset做 3 setnx命令实现分布式锁 4 消息队列模型 lpush rpop 以上是本人的学习笔记 若有不对的地方 请大家指正 转载于 h
  • 【多模态】3、CLIP

    文章目录 一 背景 二 方法 2 1 使用自然语言来监督训练 2 2 建立一个超大数据集 2 3 选择预训练的方式 对比学习而非预测学习 2 4 模型缩放和选择 三 效果 四 思考 论文 Learning Transferable Visu
  • python函数编程 返回函数 匿名函数 装饰器 偏函数

    返回函数 函数的返回对象可以是一个函数 返回时不立即执行 而是调用返回对象的时候再执行 def lazy sum args def sum ax 0 for n in args ax ax n return ax return sum gt

随机推荐

  • Python边学边用--BT客户端实现之BitTorrent文件解析

    BitTorrent文件使用bencode编码 其中包括了4种数据类型 d 开头表示是dict类型 e 表示结束 l 小写字母L 开头表示是list类型 e 表示结束 i 开头表示是integer类型 e 表示结束 可以表示负数 以数字开头
  • lisa traffic sign 数据集训练

    1 lisa下载地址 http cvrr ucsd edu LISA datasets html 2 解压缩后 使用python tools splitAnnotationFiles py将数据集划分成训练集和测试集的csv描述文件 3 转
  • 企业小程序订单管理系统解决痛点文档记录

    订单管理系统关于企业订货的痛点和介绍 一 适用行业 适用于批发 生产 代理 加盟 二 企业销售批发的痛点 在实际业务环境中 无论是厂家 生产 代理 批发 加盟 企业都会有自己的客户 这些客户可能是代理商 固定散客 加盟商等会遇到如下情况 在
  • 【Spark NLP】第 6 章:信息检索

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 忘记文档密码,教你破解WORD/EXECL/PPT文件加密密码

    大家办公时 有设置密码习惯 并且容易忘记密码 今天给大家提供一款超好用得小工具 不定时更新软件 高效率工具小福利 软件 Advanced OfficePassword Recovery 今天给大家带来一款破解Excel密码的神器 涉及到重要
  • VLC解码播放H264文件

    转自 http www cnblogs com ImageVision p 4744391 html utm source tuicool utm medium referral 昨天收到几个文件名是 xxx 264的文件 这种文件属于视频
  • web开发技术总结

    web开发可以理解为动态网站的开发 以java语言为例 就是基于java动态网站的开发 前台框架 jQuery Mvc框架 Struts spring Mvc 核心框架 Spring orm框架 Hibernate Spring JDBC
  • 复数乘法是什么?

    逛木虫的时候看到一个很旧的数学帖子被人挖了坟 这个帖子大概是讨论如果把复数看作是向量 那么复数乘法应该怎么看待 向量之间有乘法 例如复数 1 i 和复数 i 其对应的向量分别是 left begin array 20 c 1 1 end a
  • git没有冲突 但是提示有_git 处理冲突步骤

    背景 工程中有一块功能是在别的远程分支上的 然后自己的分支也是一直在更新的 现在要将该分支上的信功能合到自己的分支上 于是采用了git cherry pick的方法 但是出现了报错 查了许多网上的资料最后总结出处理冲突的步骤 具体实现 输入
  • [实习]Skywalking

    SkyWalking 1 是什么 skywalking是一个包含监控 追踪 并拥有故障诊断能力的分布式系统 它主要的作用是全链路监控 收集数据 分析处理数据 然后可视化呈现 这么说有点抽象 接下来画图来说 这是skywalking的架构 它
  • VscodeSSH免密远程登录服务器

    1 windows下cmd或git bash 或powershell等输入 ssh keygen 指令输入后一直回车 在C Users user name ssh路径下生成如下文件 2 linux服务器Terminal输入 ssh keyg
  • 【SVN命令】之 revert

    名称 子命令Svn revert 取消所有的本地编辑 概要 子命令Svn revert PATH 描述 Reverts any local changes to a file or directory and resolves any co
  • nodejs HelloWorld

    nodejs 服务器端 HelloWorld 程序 a hello js d02 hollo js var http require http http createServer function request response 请求对象
  • C++&Qt 各种数据类型转换

    1 uint64转QString QString strfilerename QString 1 arg nFileID nFileID为uint64类型 QString number nFileID 2 QString转超长数字串 QSt
  • 计算机图形学GAMES101(三)变换(模型、视图、投影)

    补充内容 R 是逆时针方向旋转的矩阵 R 是顺时针方向旋转的矩阵 可以发现R T R 1 像这样的矩阵叫做正交矩阵 以后如果要求往相反的方向旋转相同角度的变换 R 只需要求正向旋转的矩阵然后转置就可以了 本节涉及内容 仿射变换 线性变换 平
  • LeetCode-Python-389. 找不同

    给定两个字符串 s 和 t 它们只包含小写字母 字符串 t 由字符串 s 随机重排 然后在随机位置添加一个字母 请找出在 t 中被添加的字母 示例 输入 s abcd t abcde 输出 e 解释 e 是那个被添加的字母 第一种思路 转成
  • Java笔记:泛型、限定通配符与非限定通配符

    目录 1 泛型 2 限定通配符与非限定通配符 2 1 限定通配符 2 2 非限定通配符 3 PECS Producer Extends Consumer Super 原则 3 1 Producer Extends 3 2 Consumer
  • jar文件怎么打开 查看jar文件内容操作方法

    jar文件怎么打开 查看jar文件内容操作方法 jar文件是java项目生成的一个小的文件项目 也可以描述为一个java压缩包 里面封装了 许多java类以及方法 变量 很多用户想要查看jar文件内容 可是却不知道jar文件怎么打开 下面小
  • TorchServe环境构建+模型更新+新模型注册

    目录 1 背景 2 torchserve环境搭建 2 1jdk环境搭建 2 2 python 环境搭建 2 3 启动服务 2 3 1 注册模型 2 3 2 模型查看 2 3 3 接口调用 3 进阶功能 3 1 模型多版本管理 3 2 新模型
  • NLP神器Gensim库(一):入门操作

    Gensim是一款开源的第三方Python工具包 用于从原始的非结构化的文本中 无监督地学习到文本隐层的主题向量表达 它支持包括TF IDF LSA LDA 和word2vec在内的多种主题模型算法 支持流式训练 并提供了诸如相似度计算 信