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://www.mzph.cn/web/42910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用昇腾芯片进行多卡训推时使用hccl_tools.py为npu分配ip报错问题解决办法

目录 问题描述问题产生原因解决办法最终执行并验证参考网站命令扩展 问题描述 昇腾芯片(910b/310p等)进行多卡训练或者推理时需要先获取并配置每张npu的ip信息,因此需要执行类似下面问题: python mindformers/tools/hccl_tools.…

[AI 大模型] Meta LLaMA-2

文章目录 [AI 大模型] Meta LLaMA-2简介模型架构发展新技术和优势示例 [AI 大模型] Meta LLaMA-2 简介 Meta LLaMA-2 是 Meta 推出的第二代开源大型语言模型(LLM),旨在为研究和商业应用提供强大的自然语言处理能力。 LLaMA-2 系列模型包括从…

Python29 Tensorflow的基本知识和使用

1. TensorFlow TensorFlow 是一个开源的机器学习框架,由 Google Brain 团队开发。它用于数据流图的计算,尤其擅长深度学习任务。在 TensorFlow 中,数据流图(Data Flow Graph)是其核心概念之一,它定义了计算…

Blackbox AI : 全新的人工智能编码助手 您的高效AI开发全能助手

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 提起AI 智能编码助手,相信到了如今大家都不陌生。其对我们开发的代码时的效率有显著的提升,可以说…

效果惊人!LivePortrait开源数字人技术,让静态照片生动起来

不得了了,快手已经不是众人所知的那个短视频娱乐平台了。 可灵AI视频的风口尚未过去,又推出了LivePortrait--开源的数字人项目。LivePortrait让你的照片动起来,合成逼真的动态人像视频,阿里通义EMO不再是唯一选择。 让图像动起来 LivePortrait 主要提供了对眼睛和嘴唇动作的…

Mattermost:一个强大的开源协作平台

Mattermost是一个强大的开源协作平台,基于云原生架构,为企业级用户提供安全、可扩展且自托管的消息传递解决方案。 一、平台特点 开源与定制性:Mattermost是一个开源项目,用户可以根据自身需求定制界面、添加功能或扩展其功能&am…

matlab 卷积和多项式乘法

目录 一、算法原理1、原理概述2、主要函数二、代码实现1、通过卷积计算多项式乘法2、向量卷积3、卷积的中心部分三、参考链接一、算法原理 1、原理概述 两个向量 u u u和 v v v的卷积,表示

大屏自适应容器组件 v-scale-screen

在vue中,v-scale-screen可用于大屏项目开发,实现屏幕自适应,可根据宽度自适应,高度自适应,和宽高等比例自适应,全屏自适应。 仓库地址:github国内地址:gitee 一、安装 npm instal…

React setState

老生常谈之setState 是同步的还是异步的? 设想setState是同步的,那也就是每次调用setState都要进行新旧虚拟DOM的对比,然后将差异化的dom更新到页面上,性能损耗很大 所以react把setState设置为了异步,当状态更新时不…

【Unity2D 2022:Audio】添加游戏音乐和音效

一、添加背景音乐 1. 创建空的游戏物体,名为BackgroundMusic 2. 为音频播放器添加音频源(Audio Source)组件 3. 将背景音乐音频赋值到AudioClip(红色) 4. 设置循环播放(蓝色) 二、添加草莓拾取…

springboot封装请求参数json的源码解析

源码位置: org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type…

解答 | http和https的区别,谁更好用

TTP(超文本传输协议)和HTTPS(安全超文本传输协议)的主要区别在于安全性和数据传输的方式。 一、区别 1、协议安全性: HTTP:使用明文形式传输数据,不提供数据加密功能,数据在传输过…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型,prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路,提示词文档。 当有明确的需求和实现需求的路径时,可以通过搭建工作流来完成标准化任务为…

Multi-Wing Optimiser风扇选型软件介绍

Multi-Wing Optimiser风扇选型软件

一、YOLO V10安装、使用、训练大全

YOLO V10安装、使用、训练大全 一、下载官方源码二、配置conda环境三、安装YOLOV10依赖四、使用官方YOLO V10模型1.下载模型2.使用模型2.1 图片案例 五、制作数据集1.数据集目录结构2.标注工具2.1 安装标注工具2.2 运行标注工具2.3 设置自动保存2.4 切换yolo模式2.5 开始标注2.…

Python不使用元类的ORM实现

不使用元类的简单ORM实现 在 Python 中,ORM(Object-Relational Mapping)是一种将对象和数据库之间的映射关系进行转换的技术,使得通过面向对象的方式来操作数据库更加方便。通常,我们使用元类(metaclass&a…

香橙派5plus上跑云手机方案二 waydroid

前言 上篇文章香橙派5plus上跑云手机方案一 redroid(带硬件加速)说了怎么跑带GPU加速的redroid方案,这篇说下怎么在香橙派下使用Waydroid。 温馨提示 虽然能运行,但是体验下来只能用软件加速,无法使用GPU加速,所有会很卡。而且…

linux磁盘分区管理

首先关机状态下,先配置硬盘 硬盘分区管理 识别硬盘 》分区规划 》 格式化 》 挂载使用 [rootlocalhost ~]# lsblk 查看硬盘 分区划分(m帮助, p 查看分区, n 创建分区, d 删除分区, q 退出, w 保存, g gpt分区) [roo…

绝区陆--大语言模型的幻觉问题是如何推动科学创新

介绍 大型语言模型 (LLM)(例如 GPT-4、LLaMA-2、PaLM-2、Claude-2 等)已展示出为各种应用生成类似人类文本的出色能力。然而,LLM 的一个鲜为人知的方面是它们倾向于“产生幻觉”或生成不正确或没有根据的事实陈述。我不认为这仅仅是一个限制…

前端构建工具(webpackvite)

这里写目录标题 构建工具webpack介绍配置文件简介entryoutputloaderbabel插件开发服务器(webpack-dev-server)soureMap vite 构建工具 当我们习惯了在node中编写代码的方式后,在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:…