当前位置: 首页 > news >正文

自然语言处理Gensim入门:建模与模型保存

文章目录

  • 自然语言处理Gensim入门:建模与模型保存
    • 关于gensim基础知识
    • 1. 模块导入
    • 2. 内部变量定义
    • 3. 主函数入口 (`if __name__ == '__main__':`)
    • 4. 加载语料库映射
    • 5. 加载和预处理语料库
    • 6. 根据方法参数选择模型训练方式
    • 7. 保存模型和变换后的语料
    • 8.代码

自然语言处理Gensim入门:建模与模型保存

关于gensim基础知识

Gensim是一个专门针对大规模文本数据进行主题建模和相似性检索的Python库。
MmCorpus是gensim用于高效读写大型稀疏矩阵的一种格式,适用于大数据集。
TF-IDF是一种常见的文本表示方法,通过对词频进行加权以突出重要性较高的词语。
LSI、LDA和RP都是降维或主题提取方法,常用于信息检索、文本分类和聚类任务。

这段代码是使用gensim库生成主题模型的一个脚本,它根据用户提供的语言和方法参数来训练文本数据集,并将训练好的模型保存为文件。以下是核心代码逻辑的分析与解释:

1. 模块导入

  • 导入了logging模块用于记录程序运行日志。
  • 导入sys模块以获取命令行参数和程序名。
  • 导入os.path模块处理文件路径相关操作。
  • 从gensim.corpora导入dmlcorpus(一个用于加载特定格式语料库的模块)和MmCorpus(存储稀疏矩阵表示的文档-词项矩阵的类)。
  • 从gensim.models导入四个模型:lsimodel、ldamodel、tfidfmodel、rpmodel,分别对应潜在语义索引(LSI)、潜在狄利克雷分配(LDA)、TF-IDF转换模型以及随机投影(RP)。

2. 内部变量定义

  • DIM_RP, DIM_LSI, DIM_LDA 分别指定了RP、LSI和LDA模型的维度大小。

3. 主函数入口 (if __name__ == '__main__':)

  • 配置日志输出格式并设置日志级别为INFO。
  • 检查输入参数数量是否满足要求(至少包含语言和方法两个参数),否则打印帮助信息并退出程序。
  • 获取指定的语言和方法参数。

4. 加载语料库映射

  • 根据传入的语言参数创建DmlConfig对象,该对象包含了语料库的相关配置信息,如存放结果的目录等。
  • 加载词汇表字典,即wordids.txt文件,将其转换成id2word字典结构,以便在后续模型构建中将词语ID映射回实际词语。

5. 加载和预处理语料库

  • 使用MmCorpus加载二进制bow.mm文件,该文件存储了文档-词项矩阵,每个文档是一个稀疏向量表示。

6. 根据方法参数选择模型训练方式

  • 如果方法为’tfidf’,则训练并保存TF-IDF模型,该模型对原始词频进行加权,增加了逆文档频率因子。
  • 若方法为’lda’,则训练LDA模型,这是一个基于概率统计的主题模型,通过文档-主题分布和主题-词语分布抽取主题结构。
  • 若方法为’lsi’,首先用TF-IDF模型转换语料,然后在此基础上训练LSI模型,它是一种线性代数方法,用于发现文本中的潜在主题空间。
  • 若方法为’rp’,同样先转为TF-IDF表示,然后训练RP模型,利用随机投影技术降低数据维数。
  • 对于未知的方法,抛出ValueError异常。

7. 保存模型和变换后的语料

  • 训练完相应模型后,将其保存到指定的文件中(例如model_lda.pkl或model_lsi.pkl)。
  • 将原始语料经过所训练模型变换后得到的新语料(即主题表示形式)保存为一个新的MM格式文件,文件名反映所使用的主题模型方法。

8.代码

#!/usr/bin/env python
#
# Copyright (C) 2010 Radim Rehurek <radimrehurek@seznam.cz>
# Licensed under the GNU LGPL v2.1 - https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html"""
USAGE: %(program)s LANGUAGE METHODGenerate topic models for the specified subcorpus. METHOD is currently one \
of 'tfidf', 'lsi', 'lda', 'rp'.Example: ./gensim_genmodel.py any lsi
"""import logging
import sys
import os.pathfrom gensim.corpora import dmlcorpus, MmCorpus
from gensim.models import lsimodel, ldamodel, tfidfmodel, rpmodelimport gensim_build# internal method parameters
DIM_RP = 300  # dimensionality for random projections
DIM_LSI = 200  # for lantent semantic indexing
DIM_LDA = 100  # for latent dirichlet allocationif __name__ == '__main__':logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s')logging.root.setLevel(level=logging.INFO)logging.info("running %s", ' '.join(sys.argv))program = os.path.basename(sys.argv[0])# check and process input argumentsif len(sys.argv) < 3:print(globals()['__doc__'] % locals())sys.exit(1)language = sys.argv[1]method = sys.argv[2].strip().lower()logging.info("loading corpus mappings")config = dmlcorpus.DmlConfig('%s_%s' % (gensim_build.PREFIX, language),resultDir=gensim_build.RESULT_DIR, acceptLangs=[language])logging.info("loading word id mapping from %s", config.resultFile('wordids.txt'))id2word = dmlcorpus.DmlCorpus.loadDictionary(config.resultFile('wordids.txt'))logging.info("loaded %i word ids", len(id2word))corpus = MmCorpus(config.resultFile('bow.mm'))if method == 'tfidf':model = tfidfmodel.TfidfModel(corpus, id2word=id2word, normalize=True)model.save(config.resultFile('model_tfidf.pkl'))elif method == 'lda':model = ldamodel.LdaModel(corpus, id2word=id2word, num_topics=DIM_LDA)model.save(config.resultFile('model_lda.pkl'))elif method == 'lsi':# first, transform word counts to tf-idf weightstfidf = tfidfmodel.TfidfModel(corpus, id2word=id2word, normalize=True)# then find the transformation from tf-idf to latent spacemodel = lsimodel.LsiModel(tfidf[corpus], id2word=id2word, num_topics=DIM_LSI)model.save(config.resultFile('model_lsi.pkl'))elif method == 'rp':# first, transform word counts to tf-idf weightstfidf = tfidfmodel.TfidfModel(corpus, id2word=id2word, normalize=True)# then find the transformation from tf-idf to latent spacemodel = rpmodel.RpModel(tfidf[corpus], id2word=id2word, num_topics=DIM_RP)model.save(config.resultFile('model_rp.pkl'))else:raise ValueError('unknown topic extraction method: %s' % repr(method))MmCorpus.saveCorpus(config.resultFile('%s.mm' % method), model[corpus])logging.info("finished running %s", program)

相关文章:

自然语言处理Gensim入门:建模与模型保存

文章目录 自然语言处理Gensim入门&#xff1a;建模与模型保存关于gensim基础知识1. 模块导入2. 内部变量定义3. 主函数入口 (if __name__ __main__:)4. 加载语料库映射5. 加载和预处理语料库6. 根据方法参数选择模型训练方式7. 保存模型和变换后的语料8.代码 自然语言处理Gens…...

Windows 10中Visual Studio Code(VSCode)无法自动打开终端的解决办法

1.检查设置&#xff1a; 打开VSCode。点击左侧菜单栏的“文件”&#xff08;File&#xff09;。选择“首选项”&#xff08;Preferences&#xff09;。点击“设置”&#xff08;Settings&#xff09;。在搜索框中输入“shell”&#xff0c;然后点击“settings.json”进行编辑。…...

python dictionary 字典中的内置函数介绍及其示例

Python字典内置方法&#xff1a; 本文介绍了Python字典&#xff08;dictionary&#xff09;中的内置函数及其用法示例。字典是Python中非常常用的一种数据结构&#xff0c;它允许我们通过键&#xff08;key&#xff09;来快速查找、添加、修改或删除值&#xff08;value&#…...

pdf转word文档怎么转?分享4种转换方法

pdf转word文档怎么转&#xff1f;在日常工作中&#xff0c;我们经常遇到需要将PDF文件转换为Word文档的情况。无论是为了编辑、修改还是为了重新排版&#xff0c;将PDF转为Word都显得尤为重要。那么&#xff0c;PDF转Word文档怎么转呢&#xff1f;今天&#xff0c;就为大家分享…...

深度测试:指定DoC ID对ES写入性能的影响

在[[使用python批量写入ES索引数据]]中已经介绍了如何批量写入ES数据。基于该流程实际测试一下指定文档ID对ES性能的影响有多大。 一句话版 指定ID比不指定ID的性能下降了63%&#xff0c;且加剧趋势。 以下是测评验证的细节。 百万数据量 索引默认使用1分片和1副本。 指定…...

【JGit】 AddCommand 新增的文件不能添加到暂存区

执行git.add().addFilepattern(".").setUpdate(true).call() 。新增的文件不能添加到暂存区&#xff0c;为什么&#xff1f; 在 JGit 中&#xff0c;setUpdate(true) 方法用于在调用 AddCommand 的 addFilepattern() 方法时&#xff0c;将已跟踪文件标记为需要更新。…...

golang学习6,glang的web的restful接口传参

1.get传参 //get请求 返回json 接口传参r.GET("/getJson/:id", controller.GetUserInfo) 1.2.接收处理 package controllerimport "github.com/gin-gonic/gin"func GetUserInfo(c *gin.Context) {_ c.Param("id")ReturnSucess(c, 200, &quo…...

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆&#xff0c;这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator&#xff08;观察者&#xff09;&#xf…...

HarmonyOS | 状态管理(八) | PersistentStorage(持久化存储UI状态)

系列文章目录 1.HarmonyOS | 状态管理(一) | State装饰器 2.HarmonyOS | 状态管理(二) | Prop装饰器 3.HarmonyOS | 状态管理(三) | Link装饰器 4.HarmonyOS | 状态管理(四) | Provide和Consume装饰器 5.HarmonyOS | 状态管理(五) | Observed装饰器和ObjectLink装饰器 6.Harmo…...

Git 突破 文件尺寸限制

前言 当Git本地存储里右超过50MB&#xff0c;却又确实需要上传的时候&#xff0c;就需要用到了不是 解决 本代码就是把大文件进行拆解成小文件&#xff0c;然后上传。 等到拉取下来的时候&#xff0c;可以直接再进行合并&#xff0c;合并成原文件 代码如下&#xff0c;仅供…...

HarmonyOS开发云工程与开发云函数

创建函数 您可直接在DevEco Studio创建函数、编写函数业务代码、为函数配置调用触发器。 1.右击“cloudfunctions”目录&#xff0c;选择“New > Cloud Function”。 2.输入函数名称后&#xff0c;点击“OK”。 函数名称仅支持小写英文字母、数字、中划线&#xff08;-&a…...

SpringMVC了解

1.springMVC概述 Spring MVC&#xff08;Model-View-Controller&#xff09;是基于 Java 的 Web 应用程序框架&#xff0c;用于开发 Web 应用程序。它通过将应用程序分为模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&a…...

day44((VueJS)路由的懒加载使用 路由的元信息(meta) 路由守卫函数 vant组件库的应用)

一.路由懒加载的使用 使用原因 1.使用原因1&#xff09; 使用一般写法&#xff08;即直接填写组件的缺点&#xff09;当使用这种写法&#xff0c;页面在初次加载会将所有路由配置表的添加的组件一次性全部加载&#xff0c;如果项目中组件代码量庞大&#xff0c;就需要很长时间…...

非线性优化资料整理

做课题看了一些非线性优化的资料&#xff0c;整理一下&#xff0c;以方便查看&#xff1a; 优化的中文博客 数值优化|笔记整理&#xff08;8&#xff09;——带约束优化&#xff1a;引入&#xff0c;梯度投影法 (附代码)QP求解器对比对于MPC的QP求解器 数值优化| 二次规划的…...

踩坑wow.js 和animate.css一起使用没有效果

踩坑wow.js 和animate.css一起使用没有效果 问题及解决方法一、电脑系统配置问题二、版本问题 问题及解决方法 一、电脑系统配置问题 在系统属性里面把窗口内的动画和元素勾选 二、版本问题 使用wow加animate4.4.1也就是最新本&#xff0c;打开网页没有任何动画效果 但是把…...

Laravel - API 项目适用的图片验证码

1. 安装 gregwar/captcha 图片验证码接口的流程是&#xff1a; 生成图片验证码 生成随机的 key&#xff0c;将验证码文本存入缓存。 返回随机的 key&#xff0c;以及验证码图片 # 不限于 laravel 普通 php 项目也可以使用额 $ composer require gregwar/captcha2. 开发接口 …...

iMazing3安全吗?好不好用?值不值得下载

一、安全性 iMazing在设计和开发过程中&#xff0c;始终把用户数据的安全性放在首位。它采用了多种先进的安全技术来确保用户数据在传输、备份和存储过程中的安全。 iMazing3Mac-最新绿色安装包下载如下&#xff1a; https://wm.makeding.com/iclk/?zoneid49816 iMazing3Wi…...

韩国突发:将批准比特币ETF

作者&#xff1a;秦晋 韩国两党宣布将批准比特币ETF。比特币也再次成为竞选的宠儿。 4月10日&#xff0c;韩国将迎来每隔4年而进行的一次立法大选。在大选之前&#xff0c;现执政党与反对党都承诺将批准比特币ETF。 我们知道&#xff0c;比特币的主要受众群体以年轻人居多。此前…...

Kubernetes IoTDB系列 | IoTDB数据库同步|IoTDB数据库高可用

目录 一、介绍二、应用场景三、IoTDB 数据库搭建四、修改同步配置文件1、配置接收端的参数2、配置发送端的参数五、启动同步功能发送端六、测试一、介绍 IoTDB 数据库同步是指将一个节点的数据复制到其他节点,以确保数据的冗余和可用性。在分布式环境中,数据同步是保证系统高…...

重拾前端基础知识:CSS

重拾前端基础知识&#xff1a;CSS 前言选择器简单选择器属性选择器组合选择器 插入CSS内嵌样式&#xff08;Inline Style&#xff09;内部样式&#xff08;Internal Style&#xff09;外部样式&#xff08;External Style&#xff09; 层叠颜色背景颜色文本颜色RGB 颜色HEX 颜色…...

3分钟掌握Windows三指拖拽:让触控板操作效率翻倍

3分钟掌握Windows三指拖拽&#xff1a;让触控板操作效率翻倍 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWindo…...

OV5640图像拖影?帧率不稳?可能是你的PCLK没配对!附调试心得

OV5640图像拖影与帧率不稳的PCLK调试实战指南 当你在嵌入式项目中集成OV5640摄像头模组时&#xff0c;是否遇到过这样的场景&#xff1a;硬件连接一切正常&#xff0c;驱动程序也能跑通&#xff0c;但实际采集到的图像却出现拖影、撕裂或帧率跳变&#xff1f;作为一款广泛应用…...

工业控制系统安全:PLC编程与协议分析入门

工业控制系统安全&#xff1a;PLC编程与协议分析入门 随着工业4.0和智能制造的快速发展&#xff0c;工业控制系统&#xff08;ICS&#xff09;的安全性日益受到关注。作为工业自动化核心的可编程逻辑控制器&#xff08;PLC&#xff09;&#xff0c;其编程与通信协议的安全性直…...

避坑指南:PyTorch中ReflectionPad2d和ReplicationPad2d用错了?详解两者区别与适用场景

PyTorch边界填充终极指南&#xff1a;ReflectionPad2d与ReplicationPad2d的深度抉择 在图像处理任务中&#xff0c;边界填充&#xff08;Padding&#xff09;是一个看似简单却影响深远的关键操作。许多开发者在实现卷积神经网络时&#xff0c;往往只关注模型架构和损失函数的设…...

AI专著撰写新趋势:AI工具助力,快速完成20万字专著创作!

撰写学术专著是一项复杂的任务&#xff0c;需要在“内容的深度”和“覆盖的广度”之间找到恰当的平衡点。这也是许多研究者在创作过程中常遇到的难题。从内容深度来看&#xff0c;AI写专著时&#xff0c;核心观点必须具备足够的学术价值&#xff0c;既要明确“是什么”&#xf…...

Claude Code 不只是会写代码:这 10 个 Skills,才是效率分水岭

一个接口测通了&#xff0c;不代表 AI 功能能上线。 一个问答结果看起来没问题&#xff0c;也不代表这个版本真的可用。这两年&#xff0c;很多团队一边接入大模型&#xff0c;一边沿用原来的测试思路&#xff1a;提测、冒烟、回归、上线。流程看上去没变&#xff0c;但项目一落…...

OpenCore Legacy Patcher终极指南:4步让老Mac显卡驱动重获新生

OpenCore Legacy Patcher终极指南&#xff1a;4步让老Mac显卡驱动重获新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 让旧Mac焕发新生的终极解决方案来了…...

Windows虚拟显示器驱动终极指南:解锁无限多屏办公与VR应用

Windows虚拟显示器驱动终极指南&#xff1a;解锁无限多屏办公与VR应用 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: https://gi…...

Sunshine深度配置实战:从基础部署到性能优化的完整指南

Sunshine深度配置实战&#xff1a;从基础部署到性能优化的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款自托管的游戏流媒体主机&#xff0c;专为Moonlig…...

Gemma-3-270m镜像免配置优势:统一镜像保障开发/测试/生产环境一致

Gemma-3-270m镜像免配置优势&#xff1a;统一镜像保障开发/测试/生产环境一致 1. 为什么环境一致性如此重要 在AI项目开发中&#xff0c;最让人头疼的问题之一就是环境不一致。开发人员在本地电脑上调试好的模型&#xff0c;部署到测试服务器就报错&#xff1b;测试环境运行正…...