【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识
文章目录
- 词向量基础
- One-hot represention
- Distributed Representation
- word2vec 基础知识
- CBOW 和 Skip-gram
- 霍夫曼树
系列文章:
- 【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识
- 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
- 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
由于计算机不能直接对各种字符进行运算,为此需要将词的表示进行一些转换。因此,在自然语言处理中,通常需要对输入的语料进行一些预处理:
其中,如何对词汇进行表示是很关键的问题,糟糕的表示方法容易导致所谓的 “Garbage in, garbage out”。
词向量基础
对词汇的表示,常见的有One-hot represention 和 Distributed Representation 两种形式。
One-hot represention
One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:
这样的方式表示词汇虽然简单,但是也有如下缺点:
- 单词的上下文丢失了。
- 没有考虑频率信息。
- 词汇量大的情况下,向量维度高且稀疏,占用内存。
Distributed Representation
Distributed Representation 也可以理解为Word Embedding,具体形式为:
注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:
上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是,我们最后得到的词向量在训练过程中学习到了词的上下文。
那么,Distributed Representation 要如何得到?
之前介绍的神经网络语言模型可以得到。
接下来要介绍的 word2vec 就是另一种更受欢迎的方法。
word2vec 基础知识
word2vec 是 Google 于 2013 年推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。
CBOW 和 Skip-gram
CBOW 的思想是输入是某一个词wtw_twt的上下文相关的词对应的词向量,而输出就是wtw_twt的词向量。如下图所示:
可以看到,模型对输入的上下文词汇进行了求和运算,使用求和后的向量表示上下文的信息,然后学习wtw_twt的向量表示。
Skip-Gram 的思想是和 CBOW 的思路是反着来的,即输入是特定的一个词wtw_twt的词向量,而输出是特定词对应的上下文词向量。
word2vec 根据输入输出形式的不同,可以分为CBOW (Continuous Bag-of-Words) 与Skip-Gram两种模型。
霍夫曼树
一般情况下,词汇表中词汇的数量是非常多的,如果用传统的DNN+Softmax的方式来训练词向量,计算量太大了。于是,word2vec 使用的数据结构是用霍夫曼树来代替隐藏层和输出层的神经元。霍夫曼树的叶子节点起到输出层神经元的作用,叶子节点的个数即为词汇表的小大, 而内部节点则起到隐藏层神经元的作用。具体的内容,我们在之后会讲解。这里首先需要了解下霍夫曼树。
从实际的例子出发,看看如何构造霍夫曼树:
假设有(a,b,c,d,e,f)共6个词汇,词汇的权值用词频表示:wa=16,wb=4,wc=8,wd=6,we=20,wf=3w_a=16,w_b=4,w_c=8,w_d=6,w_e=20,w_f=3wa=16,wb=4,wc=8,wd=6,we=20,wf=3,我们假设这6个词汇是6棵只要根节点的森林集合。于是构造步骤如下:
首先是权值最小的b和f合并,得到的新树,根节点权重是7。将b于f这两个树从列表中删除,并且添加刚刚得到的合并的树。此时森林里共有5棵树,根节点权重分别是16,8,6,20,7。此时根节点权重最小的6,7对应的树合并,得到新子树,依次类推,最终得到下面的霍夫曼树:
如何编码呢?
一般对于一个霍夫曼树的节点(根节点除外),可以约定左子树编码为0,右子树编码为1.如上图,则可以得到c的编码是00。
注意,在word2vec中,约定编码方式和上面的例子相反,即约定左子树编码为1,右子树编码为0,同时约定左子树的权重不小于右子树的权重。
那么霍夫曼树有什么好处呢?
一般得到霍夫曼树后我们会对叶子节点进行霍夫曼编码,由于权重高的叶子节点越靠近根节点,而权重低的叶子节点会远离根节点。这样我们的高权重节点编码值较短,而低权重值编码值较长。这保证的树的带权路径最短,即我们希望越常用的词拥有更短的编码。
有了上面的基础知识,就可以对word2vec进行讲解了。相比于用传统的神经网络的方法来训练词向量,于word2vec提出了有两种改进方法:一种是基于 Hierarchical Softmax 算法的,另一种是基于 Negative Sampling 算法的。
参考文章:
word2vec模型
word2vec 中的数学原理详解
【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识相关推荐
- 《自然语言处理学习之路》02 词向量模型Word2Vec,CBOW,Skip Gram
本文主要是学习参考莫烦老师的教学,对老师课程的学习,记忆笔记. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟. 零.吃水不忘挖井人 一.计算机如何实现对于词语的理解 1.1 万物数字化 1.2 ...
- 【Word2Vec】word2vec是如何得到词向量的?
前言 word2vec是如何得到词向量的?这个问题比较大.从头开始讲的话,首先有了文本语料库,你需要对语料库进行预处理,这个处理流程与你的语料库种类以及个人目的有关,比如,如果是英文语料库你可能需要大 ...
- word2vec中单词向词向量的转换过程详解
目录 前言: 1.Word2Vec两种模型的大致印象 2.CBOW模型流程举例 3.CBOW模型流程举例 总结: 目录 前言: 针对word2vec是如何得到词向量的?这篇文章肯定能解决你的疑惑.该篇 ...
- Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Understanding Word Embeddings CBOW and Skip Gram
Rasa课程.Rasa培训.Rasa面试.Rasa实战系列之Understanding Word Embeddings CBOW and Skip Gram 字嵌入 从第i个字符,第i+1个字符预测第 ...
- 莫烦nlp——词向量—CBOW
由于不是第一次接触,本文只摘录莫烦关于词向量的观点.更多的关注代码. 上一次系统学习莫烦教程已经一年半了,时间过得太快了. 转载:https://mofanpy.com/tutorials/machi ...
- 企业隐患排查文本挖掘比赛(二):算法篇(从词向量到BERT)
1.文本挖掘的历程 对于NLP问题,首先要解决的是文本表示的问题.虽然人能够清楚地了解文本的含义,但是计算机只能处理数值运算,因此首先要考虑如何将文本转化为数值. 1.1 向量表示 1.1.1 词袋模 ...
- 【word2vec】Distributed Representation——词向量
Distributed Representation 这种表示,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点. 其基本想法是: 通过训 ...
- 120G+训练好的word2vec模型(中文词向量)
从网上了解到,很多人缺少大语料训练的word2vec模型,在此分享下使用120G+语料训练好的word2vec模型. 训练语料: 百度百科800w+条,20G+ 搜狐新闻400w+条,12G+(数据下 ...
- PGL 系列(四)词向量 CBOW
环境 python 3.6.8 paddlepaddle-gpu 2.3.0 numpy 1.19.5 pgl 2.2.4 学习路线 一.CBOW 概念 CBOW:通过上下文的词向量推理中心词 在CB ...
最新文章
- Mat转换为IplImage 类型和CvMat 类型
- 再见了,收费的Navicat。
- python设计模式(十三):解释器模式
- 兰州2021高考一诊成绩查询,2021兰州中考"一诊"成绩分析结果查询
- 利用微信登录掘金网站的HTTP请求分析
- 安全性中的Spring AOP –通过方面控制UI组件的创建
- 微信小程序---实现输入手机验证码功能
- C语言 for 循环 - C语言零基础入门教程
- 算法与数据结构(六):堆排序
- startx启动过程分析
- 刚发布!开发者调查报告:机器学习/深度学习算法工程师急缺
- AFNetworking源码学习
- Jmeter工具使用-分布式架构和服务器性能监控解决方案
- Python采集豆瓣网电影资源--疑问
- 荣耀手机wifi信号如何连接服务器,教你手机无限流量免费上网 荣耀WiFi实测
- no interpreter
- SQL基础知识归纳总结
- RegNet: Designing Network Design Spaces
- MongoDB的基础指令和练习笔记
- (Alpha)Let's-展示博客
热门文章
- None用法+连接字符串优先使用join +用format而不是%+区别可变对象和不可变对象(list的深拷贝和浅拷贝)
- Gensim初步使用和详细解释(该代码只能处理英文,处理中文不可用该代码)
- mysql 算子 谓词_[SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
- 数学狂想曲(十一)——高阶统计, 最速降线, 泛函 变分
- 【数学基础】拉格朗日对偶
- types是什么意思中文翻译成_types 和 @types 是什么?
- 合作式智能运输系统 车用通信系统应用层及应用数据交互标准(第二阶段)_携手推进汽车与信息通信标准化融合发展,CSAE与CCSA签署标准化工作备忘录...
- [转] 以 async/await 为例,说明 babel 插件怎么搭
- 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
- Sequence 带来的更多乐趣