初识 gensim 之 word2vec

Gensim之Word2Vec使用手册 1.介绍 一句话,Gensim中的Word2Vec类就是用来训练词向量的,这个类实现了词向量训练的两种基本模型skip-gram和CBOW,可以通过后面的参数设置来选择。但是,在Gensim这个模块中训练词向量的方法还有很多:gensim.models.doc2vec.Doc2Vec,gensim.models.fasttext.FastText,gensim.models.wrappers.V... 阅读详情

主要参考:https://www.jianshu.com/p/52ee8c5739b6(Gensim Word2vec 使用指南)
https://rare-technologies.com/word2vec-tutorial/ (Word2vec Tutorial)

作为自己复习使用。

Gensim

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

word2vec

参考:
https://zhuanlan.zhihu.com/p/22477976

一句理解 word2vec

一句话,word2vec就是用一个一层的神经网络(CBOW的本质)把one-hot形式的词向量映射为分布式形式的词向量,为了加快训练速度,用了Hierarchical softmax,negative sampling 等trick。

概念

文本表示/词向量

  • 1-of-N的one-hot方式
  • 分布式词向量(distributed word representation)

分布式词向量是一个固定大小的实数向量,事前确定它的大小比如N=300维或者N=1000维,每个元素都是一个实数,实数的具体值是词库里面每个词通过不同的贡献得来的,所以叫分布式的。而word2vec就是一种学习这个分布式词向量的算法。

分布式词向量并不是word2vec的作者发明的,他只是提出了一种更快更好的方式来训练也就是:连续词袋模型Continous Bag of Words Model(CBOW)和Skip-Gram Model

代码

输入

Gensim Word2vec 使用一个句子序列作为其输入,每个句子包含一个单词列表。

sentences = [['first', 'sentence'], ['second', 'sentence']]
# train word2vec on the two sentences
model = gensim.models.Word2Vec(sentences, min_count=1)

用 Python 内置的 list 类型作为输入很方便,但当输入内容较多时,会占用很大的内存空间。Gemsim 的输入只要求序列化的句子,而不需要将所有输入都存储在内存中。简单来说,可以输入一个句子,处理它,删除它,再载入另外一个句子。

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname
 
    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname, fname)):
                yield line.split()
 
sentences = MySentences('/some/directory') # a memory-friendly iterator
model = gensim.models.Word2Vec(sentences)

主要参数:

  • min_count

修剪内部字典树的,合理的范围是0 - 100

  • size

神经网络 NN 层单元数,它也对应了训练算法的自由程度。
更大的 size 值需要更多的训练数据,但也同时可以得到更准确的模型。合理的取值范围是几十到几百。

  • workers

训练并行粒度,用来加速训练。

输出(内存)

在内部,Word2vec 模型的参数以矩阵形式存储(NumPy 数组),数组的大小为 vocabulary 乘以 size 的浮点数 (4 bytes)。

三个如上的矩阵被存储在内存中(将其简化为两个或一个的工作进行中)。如果输入中存在 100,000 个互异的词,神经网络规模 size 设为200,则该模型大致需要内存
100,000 * 200 * 3 * 4 bytes = ~229MB。

模型储存和载入

model.save('/tmp/mymodel')
new_model = gensim.models.Word2Vec.load('/tmp/mymodel')

应用

相似度查询:

model.most_similar(positive=['woman', 'king'], negative=['man'], topn=1)
[('queen', 0.50882536)]
model.doesnt_match("breakfast cereal dinner lunch";.split())
'cereal'
model.similarity('woman', 'man')
0.73723527

可以这样查询词向量:

model['computer']  # raw NumPy vector of a word
array([-0.00449447, -0.00310097,  0.02421786, ...], dtype=float32)

-----------------——————————

主要类:KeyedVectors
主要模块:model.wv

model.wv.vocab
model.wv.syn0

model.wv.index2word
model.wv.vectors

小结:

输入:装有单词列表/序列的列表

(输入的是包含单词列表的句子序列,返回的是一个固定维度的每一个单词的词向量。)

输出:大小为**互异词的数量 * size(神经网络规模)**的numpy数组

gensim中word2vec API参数说明 在gensim中,word2vec相关的API都在gensim.models.word2vec中,与算法相关的参数在gensim.models.word2vec.Word2Vec中。其具体参数说明如下:(个人翻译,如有出入欢迎指正) class Word2Vec(BaseWordEmbeddingsModel): """训练, 使用和评估https://code.google.com... 阅读详情

相关推荐

基于Gensim的Word2Vec增量式训练方法

Word2Vec训练好以后,随着时间的积累,出现一些新词,此时可能需要在已有的模型基础上重新训练,以补充这些新词汇,亦即增量式训练。本文分析了基于Gensim的Word2Vec的增量式训练方法。 数据: 以小说《人民的名义》,《明朝那些事儿》作为语料库,小说中出现的词语相对集中,且很容易找到未出现词,便于观察增量式训练效果。 过程:首先以小说《人民的...

https://github.com/shaofengzeng/ 6844

gensim使用汇总

1. 训练word2vec 2. 使用词向量 2.1 求多个词向量的平均值 3. 其他 3.1 查看word2vec模型的词: 3.2 unable to import 'smart_open.gcs', disabling that module

herosunly的博客 5305

【NLP】基于python的gensim word2vec训练词向量

准备工作当我们下载了anaconda后,可以在命令窗口通过命令conda install gensim安装gensimgensim介绍gensim是一款强大的自然语言处理工具,里面包括N多常见模型,我们体验一下:interfaces – Core gensim interfaces utils – Various utility functions matutils – Math utils cor

Ezrealmore 4万+

N3:(gensim库详解)直接用gensim 库训练word2vec模型

(gensim库详解)直接用gensim 库训练word2vec模型

HaoChen的博客 350

用gensim实现word2vec 和 glove

本篇讲讲gensim的word2vec模型的使用以及 glove模型用gensim来实现! 首先我们来讲word2vec,  刚开始接触的时候比较迷糊, 我是从tensorflow的神经网络切入的,了解了one-hot 知道要将word 转换成向量才能作为tensor的输入,因此之前的文章也专门写了怎么将word 转换成是很tensor输入格式的操作.网络上大部分文章都会很详尽的讲述了word2...

weixin_42724775的博客 5172

用gensim库训练word2vec踩过的坑

最近在进行毕设,也用tensorflow写了一个skip-gram算法的embedding 由于是论文复现,需要的embedding matrix(skip-gram,dimension = 400,negative samples =10) 和网上现有的训练好的词向量不太一样,于是开始尝试自己训练 整个过程分为两部分 1.训练demo: text8.zip 先贴代码   #!/usr...

HeReCJJ的博客 1万+

NLP 利器 Gensim 中 word2vec 模型添加 model to dict 方法来加速搜索

本文为系列文章之一,前面的几篇请点击链接: NLP 利器 gensim 库基本特性介绍和安装方式 NLP 利器 Gensim 库的使用之 Word2Vec 模型案例演示 NLP 利器 Gensim 来训练自己的 word2vec 词向量模型 NLP 利器 Gensim 来训练 word2vec 词向量模型的参数设置 NLP 利器 Gensim 中 word2vec 模型的内存需求,和模型评估方式 NLP 利器 Gensim 中 word2vec 模型的恢复训练:载入存储模型并继续训练 NLP 利器 Gens

AItrust的博客 786

Mamba-YOLO训练前必看:从环境配置到数据集调整的完整流程

本文详细介绍了Mamba-YOLO目标检测框架的完整训练流程,包括环境配置、数据集优化和模型调参。从硬件准备到依赖安装,再到数据增强和超参数调整,提供了一系列实用技巧和常见问题解决方案,帮助开发者高效训练Mamba-YOLO模型,避免常见踩坑记录。

tech5的博客 826

运用gensim三种不同格式的词向量的保存与加载

一、了解gensim训练词向量 利用gensim.models.Word2Vec(sentences)建立词向量模型 三步实现:建立一个空的模型对象,遍历一次语料库建立词典,第二次遍历语料库建立神经网络模型。可以通过分别执行 model=gensim.models.Word2Vec() model.build_vocab(sentences) model.train(sentences) 也可以直...

weixin_42968194的博客 2277

【自动驾驶】汽车智能驾驶计算芯片

本文介绍汽车智能驾驶计算芯片的软硬件要求、 可靠性和安全性要求、 性能要求,和相应的试验方法。除了用于汽车智能驾驶, 其他领域的计算芯片可参照执行。

Mr.Cssust的博客 2631

STC8H单片机ADC实战:从读取电位器到串口绘图,12位精度玩起来

本文详细介绍了STC8H单片机的ADC功能实战应用,从读取电位器到串口绘图,展示了12位精度的实现方法。通过硬件连接、代码配置、串口数据传输及高级优化技巧,帮助开发者快速掌握ADC模块的使用,适用于各种传感器数据采集和信号处理场景。

weixin_28278377的博客 343

python︱gensim训练word2vec及相关函数与功能理解

一、gensim介绍 gensim是一款强大的自然语言处理工具,里面包括N多常见模型: - 基本的语料处理工具 - LSI - LDA - HDP - DTM - DIM - TF-IDF - word2vec、paragraph2vec . 二、训练模型 1、训练 最简单的训练方式: # 最简单的开始 import gensim sent...

素质云笔记 8万+

PX4控制云台的两种方式 方法适用控舵机 控灯

云台控制插件是mount_control,运行mavros启动文件的时候需要注意该插件是否正常启动,需要在px4_pluginlists.yaml配置文件中将mount_control从blacklisted中移除后才可启动。后会默认占用AUX端口1-4,此时通过AUX通道1-4输出PWM控制信号至云台,对应的RC通道映射功能失效。控制信号输入为RC 则接收机必须连接对应的通道至AUX辅助通道,并通过MNT_MAN_*参数设置pitch/roll/yaw对应的AUX通道。配置为AUTO或MAVLINK,

z1872385的博客 3668

Python学习笔记-gensim初识Word2Vec、Doc2Vec

安装依赖工具包: pip install -U gensim 安装过程中出现已经安装过的工具包冲突可以uninstall或删除Lib目录下相关包或使用: pip install -U gensim --ignore-installed scipy Word2Vec、Doc2Vec原理可以参考链接: https://blog.csdn.net/mpk_no1/article/details...

PURSUE ONE PIECE 900

自定义载板RK3588HDMI输入配置完整解决方案

✅ HDMI输入信号检测✅ 自动时序识别(支持1080p@60Hz等标准格式)✅ V4L2视频设备接口✅ 实时视频流捕获✅ H.264编码录制✅ HDCP内容保护支持问题根因识别:发现了hdmim1模块资源冲突的本质问题硬件设计理解:明确了Orange Pi 5 Plus的真实硬件设计意图功能实现:成功启用HDMI输入功能,替代了无法使用的HDMI1输出完整验证:建立了从硬件检测到视频录制的完整测试流程。

梁俊星的博客 1271

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

本文介绍了在Pix4d软件中通过修改中央子午线设置来解决跨分带测区刺点问题的方法。针对测区跨3度分带(如105°和108°之间)时像控点与靶标点偏移较大的情况,建议将中央子午线设为测区中心(如106.5°)。具体操作步骤包括:修改投影文件中的中央子午线参数,选择新的输出坐标系配置文件。该方法能有效提高像控点刺点效率,为航测内业数据处理提供便利。操作简单实用,适合大比例尺测图项目中跨分带测区的数据处理需求。

智慧空间实验室 5527

word2vec词向量训练及gensim的使用

一、什么是词向量 词向量最初是用one-hot represention表征的,也就是向量中每一个元素都关联着词库中的一个单词,指定词的向量表示为:其在向量中对应的元素设置为1,其他的元素设置为0。采用这种表示无法对词向量做比较,后来就出现了分布式表征。 在word2vec中就是采用分布式表征,在向量维数比较大的情况下,每一个词都可以用元素的分布式权重来表示,因此,向量的每一维都表示一个特征向

木槿花开 8万+

继电器管理策略(二)

介绍了电池管理系统中的继电器管理,包含控制和诊断

manjixingkong1234的专栏 418

Word2vec原理浅析及gensim中word2vec使用

本文转载于以下博客链接:Word2vec原理浅析:https://blog.csdn.net/u010700066/article/details/83070102; gensim中word2vec使用:https://www.jianshu.com/p/b779f8219f74 如有冒犯,还望谅解! Word2vec原理浅析及tensorflow实现 Word2Vec是由Google的M...

luoxuexiong的博客 1万+

Linux加密框架中的算法和算法模式(1)——算法介绍

算法和算法模式

yangguoyu8023的博客 2031

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

自然语言处理库——Gensim之Word2vec

Gensim(http://pypi.python.org/pypi/gensim)是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 主要用于主题建模和文档相似性处理,它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法。Gensim在诸如获取单词的词向量等任务中非常有用。 1. gensim概...

满腹的小不甘 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Word2vec详解(附Gensim代码)

简单讲解word2vec及其代码

m0_62965652的博客 5820

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

机器学习:gensim之Word2Vec 详解

一 前言 Word2Vec是同上一篇提及的PageRank一样,都是Google的工程师和机器学习专家所提出的的;在学习这些算法、模型的时候,最好优先去看Google提出者的原汁Paper和Project,那样带来的启发将更大。因为创造者对自己所创之物的了解程度优于这世上的绝大部分者,这句话,针对的是爱看博文的读者,like me。 另外,补充几句。 1.防止又被抄袭,故关键笔记以图贴之。 2.标题前带阿拉伯数字标号的内容,便是使用Gensim的Word2Vec模型过程中的完整流程序...

张伟的专栏 5827

基于gensim实现word2vec模型(附案例实战)

Word2Vec是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。用词向量来表示词并不是Word2Vec的首创,在很久之前就出现了。最早的词向量采用One-Hot编码,又称为一位有效编码,每个词向量维度大小为整个词汇表的大小,对于每个具体的词汇表中的词,将对应的位置置为1。

m0_64336780的博客 9231

Gensim简介及word2vec API

1. 简介 Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法。 参考: zhihu 15分钟入门Gensim; wiki Genism; ...

rosefun96的博客 9992

gensim中的word2vec的使用

本着尊重原著的想法,我们先把一些引用的文章贴上来,供大家参考 word2vec的理论知识,这个真的蛮详细的,我表示没有耐心全部搞透啊!:https://blog.csdn.net/itplus/article/details/37969519 苏剑林苏大神的博客,我很喜欢的一位大神:https://kexue.fm/archives/3863 刘建平Pinard大神的博客:https://...

eli的博客 2870
上一篇: OSError: [Errno 24] Too many open files
下一篇: Python文本处理(3)——文本表示之 one-hot 词向量(1)——纯小白都能懂!
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值