Word2vec

Word2Vec中文语料实战 1、环境配置             本人使用的是MacBook +Python2.7.11             首先,安装NLP工具包gensim,这里包含了今天的主角:Word2Vec pip install--upgrade gensim             其次,安装中文分词工具包jieba pip installjieba 2、语料库说明 阅读详情

Word2vec的出现改变了OneHot的高维稀疏的困境,自此之后各种xxx2vec如雨后春笋般冒了出来,用来解决各种嵌入式编码,包括后来的各种Embedding方式其实很多本质上都是Word2vec的延伸和优化。

本主题文章将会分为三部分介绍,每部分的主题为:

1、背景介绍

word2vec 是Google 2013年提出的用于计算词向量的工具,在论文Efficient Estimation of Word Representations in Vector Space中,作者提出了Word2vec计算工具,并通过对比NNLM、RNNLM语言模型验证了word2vec的有效性。

word2vec工具中包含两种模型:CBOW和skip-gram。论文中介绍的比较简单,如下图所示,CBOW是通过上下文的词预测中心词,Skip-gram则是通过输入词预测上下文的词。

图片

CBOW和skip-gram

2、CBOW 和 Skip-gram

原论文对这两种模型的介绍比较粗略,在论文《word2vec Parameter Learning Explained》中进行了详细的解释和说明,接下来我们详细看下CBOW和Skip-gram。

a)CBOW

One-word context

图片

multi-word context

图片

b)Skip-gram

图片

注意⚠️

  • 经验上一般选择使用skip-gram模型,因为效果较好

  • 在Word2vec模型中,如果选择使用CBOW时,最终产出的word embedding为 单词的输出向量()表示,如果选择使用skip-gram时,最终产出的word embedding为单词的输入向量()表示,因为更倾向于选择靠近中心词一端的权重矩阵。

3、hierarchical softmax 和negative sampling

因为基于word2vec框架进行模型训练要求语料库非常大,这样才能保证结果的准确性,但随着预料库的增大,随之而来的就是计算的耗时和资源的消耗。那么有没有优化的余地呢?比如可以牺牲一定的准确性来加快训练速度,答案就是 hierarchical softmax 和 negative sampling。

在论文《Distributed Representations of Words and Phrases and their Compositionality》中介绍了训练word2vec的两个技(同样在论文《word2vec Parameter Learning Explained》中进行了详细的解释和说明),下面来具体看一下。

a)霍夫曼树和霍夫曼编码

例如一组数据其对应的权重为:[9,11,13,8,4,5],其生成的霍夫曼树为(图来源于百度经验):

图片

霍夫曼树构建示例

注意⚠️:

  • 在构造哈夫曼树时,叶子节点无左右之分,只需约定好一个规则,从头到尾遵守这个规则执行即可。习惯上左节点比右节点小。

那什么又是霍夫曼编码呢?霍夫曼编码是一种基于霍夫曼树的编码方式,是可变长编码的一种。

对于构造好的霍夫曼树进行0/1编码,左子树为0,右子树为1,则针对上图构造好的霍夫曼树,其各个叶子节点的霍夫曼编码分别为:

  • 9 -> 00

  • 11 -> 01

  • 13 -> 10

  • 8 -> 110

  • 4 -> 1110

  • 5 -> 1111

注意⚠️:

  • 同样针对霍夫曼树的编码也没有明确规定说左子树为1或者左子树为0

  • 在word2vec中,针对霍夫曼树的构建和编码和上边说的相反,即约定左子树编码为1,右子树编码为0(论文中说的是-1,含义一致),同时约定左子树的权重不小于右子树的权重

b)hierarchical softmax

图片

 

c)negative sampling

除了hierarchical softmax,另外一种优化方法是Noise Contrasive Estimation(NCE),在论文《Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics》中有详细的解释和说明,但因为NCE的逻辑有些复杂,所以这里使用的是简化版的,称之为:Negative Sampling。

注意⚠️:

  • 基于层次softmax或者negative sampling优化的cbow或者skip-gram模型,输出的词向量应该是输入层到隐藏层之间的词向量(之所以说应该,是因为论文中没有进行特意说明,也没有在公开的资料中看到,可能是我看的不够认真)

  • 猜想:能否根据最短路径节点的平均向量来表示叶子结点,即词向量?

  • 以上两个问题有读者明白了可以在评论区进行留言,感谢!

4、Gensim中Word2vec的使用

关于gensim的文档可以参考:https://radimrehurek.com/gensim/auto_examples/index.html#documentation

使用之前需要先引入对应的模型类

from gensim.models.word2vec import Word2Vec

创建一个模型

model = Word2Vec(sentences=topics_list, iter=5, size=128, window=5, min_count=0, workers=10, sg=1, hs=1, negative=1, seed=128, compute_loss=True)

其对应的模型参数有很多,主要的有:

  • sentences:训练模型的语料,是一个可迭代的序列

  • corpus_file:表示从文件中加载数据,和sentences互斥

  • size:word的维度,默认为100,通常取64、128、256等

  • window:滑动窗口的大小,默认值为5

  • min_count:word次数小于该值被忽略掉,默认值为5

  • seed:用于随机数发生器

  • workers:使用多少线程进行模型训练,默认为3

  • min_alpha=0.0001

  • sg:1 表示 Skip-gram 0 表示 CBOW,默认为0

  • hs:1 表示 hierarchical softmax 0 且 negative 参数不为0 的话 negative sampling 会被启用,默认为0

  • negative:0 表示不采用,1 表示采用,建议值在 5-20 表示噪音词的个数,默认为5

更多参数可以参考模型中的注释

保存模型

model.save(model_path)

加载模型

model = Word2Vec.load(model_path)

输出loss值

model.get_latest_training_loss()

计算相似度

model.wv.similarity(word1, word2)

word2vec原理及实现 word2vec,字词的向量空间模型依靠将语意相近的词语聚在一起来提高自然语言处理的表现。 阅读详情

相关推荐

gensim中word2vec API参数说明

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

xiaoQL520的博客 5365

word2vec 代码解读

1 导入的库 from gensim.models import Word2Vec 2 参数说明 word2vec = Word2Vec(walk_sequences, size=128, window=10, min_count=0, sg=1, hs=1, workers=4) walk_sequences list 里面是 list walk_sequences = [['fir...

dipinrong5221的博客 343

word2vec模型

(一)简介 1、传统的词向量一般用one-hot表示,通常面临两个问题:(1)高维稀疏的向量带来计算成本;(2)不同的词向量彼此正交,无法衡量词之间的相似度。而distributed representation通过训练,可以得到每个词的低维稠密向量,不仅计算成本低,而且可以通过向量的距离计算来表示词与词之间的相似度。word2vector就是一个将词进行低维稠密向量化的工具。 2、wor...

zakexu的专栏 1万+

Word2vec简介,入门

word2vec构建的过程: https://www.cnblogs.com/Newsteinwell/p/6034747.html https://blog.youkuaiyun.com/zhaoxinfan/article/details/11069485 Word2vec,是用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输...

飘过的春风 1万+

Word2Vec 简介

Word2Vec 简介 Word2vec是一个用于处理文本的双层神经网络。它的输入是文本语料,输出则是一组向量:该语料中词语的特征向量。虽然Word2vec并不是深度神经网络,但它可以将文本转换为深度神经网络能够理解的数值形式 Word2vec的目的和功用是在向量空间内将词的向量按相似性进行分组。它能够识别出数学上的相似性。Word2vec能生成向量,以分布式的数值形式来表示词的上下文...

随笔记录代码本 2668

word2vec 笔记

word2vec 是 Google 于 2013年开源的一个用于获取词向量的工具包,作者是 Tomas Mikolov,不过现在他已经从 Google Brain 跳槽到了 Facebook Research,后来还参与了 fasttext 项目的研究。下面是我读博客 word2vec 中的数学原理 的一些笔记和总结。Language Model (语言模型)统计语言模型(statistical l

张小彬的专栏 5159

如何通俗理解Word2Vec (23年修订版)

在继续聊 Word2vec 之前,先聊聊 NLP (自然语言处理)。NLP 里面,最细粒度的是词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要拿词语开刀。咱们居住在各个国家的人们通过各自的语言进行交流,但机器无法直接理解人类的语言,所以需要先把人类的语言“计算机化”,那如何变成计算机可以理解的语言呢?我们可以从另外一个角度上考虑。举个例子,对于计算机,它是如何判断一个词的词性,是动词还是名词的呢?

结构之法 算法之道 15万+

word2vec、doc2vec的使用

word2vec

静心净气的博客 6173

一篇文章入门Word2Vec

一篇文章入门Word2Vec

julac的博客 9602

2023-07-04 Fast-Lio论文中公式(6)与BCH公式中近似雅可比公式的一致性推导

将(1)式代入(6)式,就有。

wmorries的博客 478

PyCharm旧版本下载地址

快捷找到PyCharm历史版本下载地址

piaopiaolanghua的专栏 4439

word2vec

本文介绍 wordvec的概念 语言模型训练的两种模型 CBOW + skip gram word2vec 优化的四种方法:层次softmax、高频词组当做单个词来处理、对高频单词采样、负例采样 gensim word2vec默认用的模型和方法 机器学习的输入都是数字,而NLP都是文字; 为了让机器学习应用在NLP上,需要把文字转换为数字,把文字嵌入到数学空间。 1. wordve...

qfikh的博客 8796

WSL基础环境配置方案

通过以上步骤,您已经在 Windows 的 WSL 环境中成功搭建了一个完整的基础开发环境,包含 Docker、Kubernetes、Helm、kubectl、yq、Git 等工具。这套环境特别适用于在国内使用阿里云镜像服务部署和管理 Tekton,提升了开发和运维的效率和稳定性。

落魄书生的职业学习生涯 8876

Word2Vec解释

Word2Vec解释 一、Word2Vec梗概 字面意思:即Word to Vector,由词到向量的方法。 专业解释:Word2Vec使用一层神经网络将one-hot(独热编码)形式的词向量映射到分布式形式的词向量。使用了Hierarchical softmax, negative sampling等技巧进行训练速度上的优化1。 作用:我们日常生活中使用的自然语言不能够直接被计算机所...

大戴的博客 2万+

零基础学会制作 基于STM32/51单片机的智能血压表设计/血压表/血压计

本系统是以单片机为主控,传感器模快、显示模块、人机交互、无线传输等组成的智能血压表设计。传感器用于测量血压和脉搏,主控电路板用于处理数据和控制设备,显示屏则用于显示测量结果。通过软件设计,完成测量数据的处理,其中血压和脉搏的测量、数据的分析和处理等。

weixin_55654459的博客 2473

VulnHub--mrrobot

Vulnhub靶场--Mr robot 靶机

记录笔记 1097

Word2vec原理浅析及gensim中word2vec使用

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

luoxuexiong的博客 1万+

BL0910-从零到一:多路交/直流电能计量的实战配置与校准

本文详细介绍了BL0910芯片在多路交直流电能计量中的实战应用。从硬件连接、SPI通信配置,到软件初始化、核心寄存器设置,再到偏置与增益校准,提供了完整的配置与校准指南。文章重点阐述了直流测量模式的切换要点及数据读取的工程化处理,帮助开发者快速实现高精度、多通道的电能监控方案。

rice5的博客 564

Spark MLlib — Word2Vec

Word2vec 是 Google 在 2013 年开源的一款将词表征为实数值向量的高效工具。能够将单词映射到K维向量空间,同时由于算法考虑了每个单词的上下文环境,因此词向量表示同时具有语义特性。本文对Word2Vec的算法原理以及其在spark MLlib中的实现进行了对应分析。1.背景知识1.1 词向量NLP中词向量通常有两种表示方式: One-hot Representaion 把每个单词按

Alice 5017

YOLOv11目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 8412

VTK-9.5.0 1D2D3DWidget实现灰度图+深度图+3D点云显示(可轻松集成到自己的项目)

VTK1D2D3DWidget是一个基于Qt和VTK开发的3D点云可视化工具,支持RGB和深度点云数据的显示与处理。主要功能包括点云加载、可视化、保存为PLY格式文件,以及背景颜色、点间隔、坐标轴显示等参数的自定义设置。该工具采用模块化设计,核心组件包括主窗口管理类、VTK渲染组件和自定义鼠标交互样式,依赖Qt5+和VTK9.5.0库实现跨平台支持。项目提供完整的源码和构建指南,适用于点云数据的快速展示与分析。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 385

详解word2vec

1.嵌入是用向量表示一个物体2.用数值表示标识符,在机器学习领域称为词嵌入,也称分布式表示3.词嵌入通常有两种方法——基于平台的Embedding学习,基于预训练模型4.word2vec是...

咔咔响 4519

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Word2Vec

在聊 Word2vec 之前,先聊聊 NLP。NLP里面,最细粒度的是词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要拿词语开刀。 举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本(x,y)(x,y)(x,y),这里 xxx 是词语,yyy 是它们的词性,我们要构建 f(x)−>yf(x)->yf(x)−>y 的映射,但这里的数学模型 fff(比如神经网络、SVM)只接受数值型输入,而NLP里的词语,是人类的抽象总结,是符

猫敷雪 2478

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

经典的Embedding方法Word2vec

提起Embedding,就不得不提Word2vec,它不仅让词向量在自然语言处理领域再度流行,更为关键的是,自2013年谷歌提出Word2vec以来,Embedding 技术从自然语言处理领域推广到广告、搜索、图像、推荐等深度学习应用领域, 成了深度学习知识框架中不可或缺的技术点。作为经典的Embedding方法,熟悉 Word2vec对于理解之后所有的Embedding相关技术和概念至关重要。 什么是Word2vec? Word2vec是“word to vector”的简称,顾名思义,Word2vec是

星辰的博客 3608

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Word2Vec 使用总结

word2vec是google 推出的做词嵌入(word embedding)的开源工具。 简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为"word embedding"。基于这个向量表示,可以计算词与词之间的关系,例如相似性(同义词等),语义关联性(中国 - 北京 = 英国 - 伦敦)等。NLP中传统的词表示方法是 one-hot representation, 即把每个单词表示成dim维的稀疏向量,dim等于词汇量的大小。这个稀疏向量只有一个...

张伟的专栏 3541
上一篇: item2vec
less97
博客等级 码龄12年 60粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值