Python30 使用Gensim库实现Word2Vec对文本进行处理

图片

1.Word2Vec

Word2Vec 是一种将词语表示为向量的技术,能够捕捉词语之间的语义关系。它由 Google 的 Tomas Mikolov 等人在 2013 年提出,广泛应用于自然语言处理任务中。其核心概念主要包括:

词嵌入(Word Embeddings)

词嵌入是将词语映射到一个固定大小的向量空间中,使得在语义上相似的词在向量空间中也相互接近。Word2Vec 通过神经网络模型生成词嵌入。

模型架构

图片

Word2Vec 主要有两种模型架构:

  • CBOW(Continuous Bag of Words):给定一个词的上下文,预测中心词。例如,给定上下文 ["The", "cat", "on", "the", "mat"],目标词是 "sat"。

  • Skip-gram:给定一个词,预测其上下文。例如,目标词是 "sat",上下文是 ["The", "cat", "on", "the", "mat"]。

工作原理

CBOW 模型

CBOW 模型通过上下文词预测中心词。其工作原理如下:

  • 输入层接受上下文词的词向量,将这些词向量求平均,得到一个上下文表示。

  • 隐藏层将上下文表示映射到一个新的空间。

  • 输出层使用 softmax 函数预测中心词的概率分布,选择概率最大的词作为预测结果。

Skip-gram 模型

Skip-gram 模型通过中心词预测上下文词。其工作原理如下:

  • 输入层接受中心词的词向量。

  • 隐藏层将中心词词向量映射到一个新的空间。

  • 输出层使用 softmax 函数预测上下文词的概率分布,选择概率最大的词作为预测结果。

训练过程

Word2Vec 的训练过程包括以下几个步骤:

  1. 语料库准备:收集并预处理大量文本数据,将其分词,并去除低频词和停用词。

  2. 模型初始化:初始化词向量矩阵和模型参数。

  3. 前向传播:将输入词通过神经网络进行前向传播,计算预测的上下文词或中心词。

  4. 损失计算:计算预测结果与实际标签之间的损失。

  5. 反向传播:通过反向传播算法更新词向量和模型参数。

  6. 迭代训练:重复上述过程,直至模型收敛。

2. Gensim

图片

Gensim 是一个开源的 Python 库,用于从非结构化文本数据中提取语义信息,主要应用于自然语言处理(NLP)领域。它提供了高效的工具和算法来实现主题建模、文档相似性分析、词嵌入等任务。其核心功能主要包括:

Gensim 提供了多种强大的 NLP 功能,包括但不限于:

  1. 词嵌入(Word Embeddings)

    • 支持 Word2Vec、FastText、Glove 等词嵌入模型。

    • 可以从文本语料库中训练词向量,或加载预训练的词向量。

  2. 主题建模(Topic Modeling)

    • 支持 Latent Dirichlet Allocation (LDA)、Latent Semantic Indexing (LSI)、Hierarchical Dirichlet Process (HDP) 等主题模型。

    • 可以从文档集合中提取主题,分析文档的主题分布。

  3. 文档相似性分析(Document Similarity)

    • 提供相似性检索工具,可以计算文档与文档、文档与查询之间的相似性。

  4. 文本预处理(Text Preprocessing)

    • 包括分词、去停用词、词干提取、词频计算等功能。

3. Python实现

以下代码使用 Gensim 库中的 Word2Vec 模型对分词后的文本数据进行训练,并实现以下功能:

  1. 加载分词语料文件 word.txt

  2. 训练一个向量维度为200的skip-gram模型。

  3. 计算并打印两个单词"企业"和"公司"的相似度。

  4. 查找并打印与"科技"最相关的20个词。

  5. 通过词向量计算,寻找与"公司-产品+生产"关系最相关的词。

  6. 查找并打印在"企业 公司 是 合作伙伴"中最不合群的词。

  7. 将训练好的模型保存为 企业关系.model

这段代码展示了如何使用 Word2Vec 模型进行文本数据的相似性计算和关系分析。

# 导入包
from gensim.models import word2vec
import logging# 初始化日志
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus("files/data/python32-data/word.txt")  # 加载分词语料# 训练skip-gram模型,使用vector_size参数替代size
model = word2vec.Word2Vec(sentences, vector_size=200)  # 默认window=5
print("输出模型", model)# 计算两个单词的相似度
try:y1 = model.wv.similarity("企业", "公司")
except KeyError:y1 = 0
print("【企业】和【公司】的相似度为:{}\n".format(y1))# 计算某个词的相关词列表
y2 = model.wv.most_similar("科技", topn=20)  # 20个最相关的
print("与【科技】最相关的词有:\n")
for word in y2:print(word[0], word[1])
print("*********\n")# 寻找对应关系
print("公司-产品", "生产")
y3 = model.wv.most_similar(positive=["公司", "产品"], negative=["生产"], topn=3)
for word in y3:print(word[0], word[1])
print("*********\n")# 寻找不合群的词
y4 = model.wv.doesnt_match("企业 公司 是 合作伙伴".split())
print("不合群的词:{}".format(y4))
print("***********\n")# 保存模型
model.save("files/data/python32-data/企业关系.model")

输入数据:

图片

输出结果:

图片

通过 Gensim 的 Word2Vec 模型对给定文本数据进行了训练,生成了词向量,并通过计算词语相似度、相关词、对应关系、不合群的词等方法对词向量进行了分析和应用。

以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3224585.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

头歌资源库(23)资源分配

一、 问题描述 某工业生产部门根据国家计划的安排,拟将某种高效率的5台机器,分配给所属的3个工厂A,B,C,各工厂在获得这种机器后,可以为国家盈利的情况如表1所示。问:这5台机器如何分配给各工厂,才能使国家盈…

Java并发关键字

并发关键字 关键字: synchronized详解关键字: volatile详解关键字: final详解 # Synchronized可以作用在哪里? 对象锁方法锁类锁 # Synchronized本质上是通过什么保证线程安全的? 加锁和释放锁的原理 深入JVM看字节码,创建如下的代码: public cl…

瓦罗兰特游戏帧数低怎么办 瓦罗兰特游戏帧率提不上去怎么解决

瓦罗兰特是一款由拳头游戏(Riot Games)开发的5v5英雄射击游戏。结合了MOBA元素,每个角色都拥有四个独特的技能;提供了多种游戏模式,如5V5战术射击等;角色和皮肤设计丰富。游戏中,玩家将扮演各具…

STM32G474使用HRTIM触发多路ADC采样,通过DMA传输,通过串口打印显示,实现PWM中间时刻采样,避免开关噪声

本工程使用CUBEIDE进行配置以及编译调试,使用的硬件为STM32G474官方开发板NUCLEO-G474RE CUBEIDE配置 HRTIM配置 本章工程使用HRTIM定时器进行ADC的触发,打开主定时器,子定时器A,B,C。(本工程未使用到A与C定时器,配置…

【界面态】霍尔效应表征氮化对SiC/SiO2界面陷阱的影响

引言 引言主要介绍了硅碳化物(SiC)金属-氧化物-半导体场效应晶体管(MOSFETs)作为新一代高压、低损耗功率器件的商业化背景。SiC MOSFETs因其优越的电气特性,在高电压和高温应用领域具有巨大的潜力。然而,尽…

前端javascript中的排序算法之插入排序

插入排序(Selection Sort)基本思想: 插入排序每次排一个数组项,以此方式构建最后的排序数组。假定第一项已经排序了,接着, 它和第二项进行比较,第二项是应该待在原位还是插到第一项之前呢&#…

ST Smart Things Sentinel:一款针对复杂IoT协议的威胁检测工具

关于ST Smart Things Sentinel ST Smart Things Sentinel,简称ST,是一款功能强大的安全工具,广大研究人员可以使用该工具检测物联网 (IoT) 设备使用的复杂协议中的安全威胁。 在不断发展的联网设备领域,ST Smart Things Sentinel…

LabVIEW开发阀门自动校准装置

1. 装置概述与目标 在工业和实验室环境中,阀门的准确性和稳定性对于流体控制和实验数据的可靠性非常重要。LabVIEW可以作为开发阀门自动校准装置的理想工具,提供高度可定制化的解决方案。 2. 硬件与设备选择 型号选择:为了实现阀门自动校准…

精讲:java之多维数组的使用

一、多维数组简介 1.为什么需要二维数组 我们看下面这个例子?“ 某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如果改写为按季度为单位存储怎么办呢? 或许现在学习了一维数组的你只能申请四个一维数组去存储每…

【区块链+跨境服务】粤澳健康码跨境互认系统 | FISCO BCOS应用案例

2020 年突如其来的新冠肺炎疫情,让社会治理体系面临前所未见的考验,如何兼顾疫情防控与复工复产成为社会 各界共同努力的目标。区块链技术作为传递信任的新一代信息基础设施,善于在多方协同的场景中发挥所长,从 而为粤澳两地的疫情…

Go语言入门之基础语法

Go语言入门之基础语法 1.简单语法概述 行分隔符: 一行代表一个语句结束,无需写分号。将多个语句写在一行可以用分号分隔,但是不推荐 注释: // 或者/* */ 标识符: 用来命名变量、类型等程序实体。 支持大小写字母、数字…

Vue基础--v-model/v-for/事件属性/侦听器

目录 一 v-model表单元素 1.1 v-model绑定文本域的value 1.1.1 lazy属性:光标离开再发请求 1.1.2 number属性:如果能转成number就会转成numer类型 1.1.3 trim属性:去文本域输入的前后空格 1.2v-model绑定单选checkbox 1.3代码展示 二 …

【AIGC】一、本地docker启动私有大模型

本地docker启动私有大模型 一、最终效果中英文对话生成代码 二、资源配置三、搭建步骤启动docker容器登录页面首次登录请注册登录后的效果 配置模型尝试使用选择模型选项下载模型选择适合的模型开始下载 试用效果返回首页选择模型中英文对话生成代码 四、附录资源监控 五、参考…

Oracle基础以及一些‘方言’(二)

1、Oracle的查询语法结构 Oracle 的单表查询的语法结构: SELECT 1 FROM 2 WHERE 3 GROUP BY 4 HAVING 5 ORDER BY 6 其每个关键词的功能与MySQL中的功能已知,不过分页查询的关键词 limit 并不在Oracle的语法结构中。伪列: 在 Oracle 的表的使…

在Windows中使用开源高性能编辑器Zed(持续更新)

简介 “Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter. It’s also open source.” “Zed是一款高性能的支持多人协作的代码编辑器,由Atom和Tree-sitter的创建者开发。它也是开源的。” Zed主打“高性能”&…

Ensp配置防火墙的web界面

Ensp配置防火墙的web界面 准备工作新建网卡配置网卡 启动防火墙配置防火墙注意事项和错误如果云里面没有网卡选项防火墙启动不了没有web界面启动不了没有web界面 准备工作 新建网卡 我用的是win10系统,新建网卡 先右键管理 再点击设备管理器 --- 再网络适配器 接…

Day62 单调栈part01

LC739每日温度(未掌握) 暴力解法:两层for循环,时间复杂度O(n^2),会超时未掌握原因分析:只想到了从栈顶到栈底是递减的情况,忽略了从栈顶到栈底是递增的情况 因为需要找到一个元素右边第一个更大元素,只有…

机器视觉理论入门

文章目录 前言一、马尔视觉理论二、图形与图像三、图像基础名词总结 前言 Marr的视觉计算理论立足于计算机科学,系统地概括了心理物理学、神经生理学、临床神经病理学等方面已取得的所有重要成果,是迄今为止最为系统的视觉理论。Marr 的视觉计算理论虽然…

同步时钟系统支持多种校时方式

在当今数字化、信息化高速发展的时代,时间的准确性和同步性变得至关重要。无论是金融交易、通信网络、交通运输,还是工业生产、科学研究等领域,都离不开一个精确且同步的时钟系统。而同步时钟系统之所以能够在众多领域发挥关键作用&#xff0…

阈值分割后配合Connection算子和箭头工具快速知道区域的ID并选择指定区域

代码 dev_close_window () read_image (Image, E:/机器视觉学习/海康视觉平台/二期VM视觉学习/二期VM视觉学习/机器视觉程序/标定相机找圆心和焊头修正相机找圆心之算法软件/标定相机找圆心和焊头修正相机找圆心之算法软件/03 标定相机找圆心/S2/1号机/1.bmp) get_image_size …