Word2Vec 与 Word Embedding的关系
文章目录
- 参考文章
- 一、 DeepNLP的核心
- 二、 NLP中的文本表示(Representation)
- 1. One Hot Representation
- 2. 整数编码
- 3. Distributed Reprensentation
- 背景
- 如何将语义融入到词表示中?
- 如何利用上下文
- 三、 NLP语言模型
- 四、词的分布式表示
- 1. 基于矩阵的分布表示
- 2. 基于聚类的分布表示
- 3. 基于神经网络的分布表示
- 五、 词嵌入(Word Embedding)
- 1. 概念
- 2. 理解
- 3. 实现方式
- 六、 神经网络语言模型与word2vec
- 1. 神经网络语言模型
- 2. word2vec 与 CBOW、Skip-gram
- ① CBOW
- 简介
- ② Skip-gram
- 简介
- 七、总结
- 七、扩展知识
参考文章
- 秒懂词向量Word2vec的本质
- 通俗理解word2vec
- 莫烦PYTHON GITHUB
- word2vec和word embedding有什么区别?
- YJango的Word Embedding–介绍 - YJango的文章
- 李宏毅机器学习视频
- 词嵌入 | Word embedding
一、 DeepNLP的核心
核心关键:语言表示(Representation)
二、 NLP中的文本表示(Representation)
文本是一种非结构化的数据信息,是不可以直接被计算的。
文本表示的作用就是将这些非结构化的信息转化为结构化的信息,这样就可以针对文本信息做计算,来完成我们日常所能见到的文本分类,情感判断等任务。
主要介绍以下三种
- 独热编码 | one-hot representation
- 整数编码
- 分布式编码|Distributed Reprensentation
1. One Hot Representation
示例
~~~~假设有1000个词汇量,排在第一个位置的代表英语中的冠词aaa,aaa就用[1,0,0,....][1,0,0,....][1,0,0,....]表示,只有第一个位置为111,其余都是000,如下图所示
在one hot representation编码的每个单词都是一个维度,彼此相互独立
优点
- 解决了分类器难以处理离散数据的问题
- 一定程度上起到了扩充特征的作用
缺点
- 它是一个词袋模型,不考虑词语词之间的顺序(文本中词的顺序信息也是很重要i的)
- 词语词之间完全独立,没有相互联系,这显然是不符合实际。
- 其得到的特征是离散稀疏的,得到的向量过于稀疏,导致计算和存储的效率不高
2. 整数编码
一个数字来表示一个词
- 猫:1
- 狗:2
- 牛:3
- 羊:4
将句子中的每个词拼起来就是可以表示一句话的向量。
缺点
- 无法表达词语之间的关系
- 对于模型解释而言,整数编码可能具有挑战性
3. Distributed Reprensentation
第四节详细阐述分布式表示
代表性的就是词嵌入(Word Embedding),具体将在后面讲解
背景
每个单词之间彼此无关是不符合现实的,实际上大量单词之间会有着相关性
- 语义:girl 和 women虽然在年龄上不同,但都是女性
- 复数:word和words仅仅是复数和单数的差别
- 时态:buy和bought表达的是"买"
one hot representation的编码方式就不会考虑这些差别
我们更希望用诸如“语义”,“复数”,“时态”等维度去描述一个单词。每一个维度不再是0或1,而是连续的实数,表示不同的程度。
如何将语义融入到词表示中?
Harris在1954年提出的分布假说(distributional hypothesis):上下文相似的词,其语义也相似
Firth在1957年对分布假说进一步阐述和明确:词的语义由其上下文决定(a word is characterized by
thecompany it keeps)
示例
给machine阅读大量文本,例如下图中的两例,机器通过上下文认为“马英九”和“蔡英文”是相似类型的词
基于分布假说的词表示方法
根据建模的不同分为以下三类
- 基于矩阵的分布表示
- 基于聚类的分布表示
- 基于神经网络的分布表示
上述方法的核心思想
- 选择一种方式描述上下文
- 选择一种模型刻画某个词(下文称"目标词")与其上下文之间的关系
如何利用上下文
1 Count based
若是两个单词wiw_iwi和wjw_jwj经常一起出现,那么这两个单词就有紧密的联系
2 Predition based
三、 NLP语言模型
在详细介绍词的分布式表示之前,需要将NLP中的一个关键概念描述清楚:语言模型。
语言模型包括文法语言模型和统计语言模型。
一般我们指的是统计语言模型。之所以要将语言模型摆在词表示方法之前,是因为后面的表示方法马上要用到这一概念。
- 统计语言模型:
- 统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。
- 给定一个词汇集合 VVV,对于一个由 VVV 中的词构成的序列S=⟨w1,⋅⋅⋅,wT⟩∈VnS = ⟨w_1, · · · , w_T ⟩ \in V_nS=⟨w1,⋅⋅⋅,wT⟩∈Vn,统计语言模型赋予这个序列一个概率P(S)P(S)P(S),来衡量SSS符合自然语言的语法和语义规则的置信度。
用一句简单的话说,就语言模型就是计算一个句子的概率大小的这种模型。有什么意义呢?
一个句子的打分概率越高,越说明他是更合乎人说出来的自然句子。就是这么简单。
常见的统计语言模型有NNN元文法模型(N-gram Model),
最常见的是unigram model、bigram model、trigram model等等。
形式化讲,统计语言模型的作用是为一个长度为 mmm 的字符串确定一个概率分布 P(w1;w2;.....;wm)P(w_1; w_2;..... ; w_m)P(w1;w2;.....;wm),表示其存在的可能性,其中 w1w_1w1 到 wmw_mwm 依次表示这段文本中的各个词。一般在实际求解过程中,通常采用下式计算其概率值:
P(wi∣w1,w2,...wi−1)≈P(wi∣wi−(n−1),...,wi−1)P(w_i|w_1,w_2,...w_{i-1}) \approx P(w_i|w_{i-(n-1)},...,w_{i-1})P(wi∣w1,w2,...wi−1)≈P(wi∣wi−(n−1),...,wi−1)
同时通过这些方法均也可以保留住一定的词序信息,这样就能把一个词的上下文信息capture住。
具体的语言模型请自行搜索。
四、词的分布式表示
1. 基于矩阵的分布表示
~~~~基于矩阵的分布表示通常又称为分布语义模型,在这种表示下,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。
~~~~常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示。
2. 基于聚类的分布表示
3. 基于神经网络的分布表示
基于神经网络的分布表示一般称为词向量、词嵌入(wordembedding)或分布式表示(distributedrepresentation)\color{red}{基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation})基于神经网络的分布表示一般称为词向量、词嵌入(wordembedding)或分布式表示(distributedrepresentation),这就是此次文章的主角
神经网络词向量表示技术通过神经网络技术对上下文,以及上下文与目标词之间的关系进行建模。
由于神经网络较为灵活,这类方法的最大优势在于可以表示复杂的上下文。
在前面基于矩阵的分布表示方法中,最常用的上下文是词。如果使用包含词序信息的 n−gramn-gramn−gram 作为上下文,当 nnn 增加时,n−gramn-gramn−gram的总数会呈指数级增长,此时会遇到维数灾难问题。 而神经网络在表示 n−gramn-gramn−gram 时,可以通过一些组合方式对 nnn个词进行组合,参数个数仅以线性速度增长。有了这一优势,神经网络模型可以对更复杂的上下文进行建模,在词向量中包含更丰富的语义信息。
五、 词嵌入(Word Embedding)
1. 概念
~~~~基于神经网络的分布表示又称为词向量、词嵌入,神经网络词向量模型与其它分布表示方法一样,均基于分布假说,核心依然是上下文的表示以及上下文与目标词之间的关系的建模。
前面提到过,为了选择一种模型刻画某个词(下文称“目标词”)与其上下文之间的关系,我们需要在词向量中capture到一个词的上下文信息。同时,上面我们恰巧提到了统计语言模型正好具有捕捉上下文信息的能力。那么构建上下文与目标词之间的关系,最自然的一种思路就是使用语言模型。从历史上看,早期的词向量只是神经网络语言模型的副产品。
~~~~ 2001年, Bengio 等人正式提出神经网络语言模型( Neural Network Language Model ,NNLM),该模型在学习语言模型的同时,也得到了词向量。所以请注意一点:词向量可以认为是神经网络训练语言模型的副产品。
2. 理解
one−hotone-hotone−hot表示法具有维度过大的缺点,那么现在将vector做一些改进:
- 1、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;
- 2、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。如下图所示,这也是词向量又名词嵌入的缘由。
优势
- 将文本通过一个低维向量来表达,不像 one-hot 那么长。
- 语意相似的词在向量空间上也会比较相近。
- 通用性很强,可以用在不同的任务中。
3. 实现方式
主要的实现方式
- word2vec(Google)
- GloVe
- wordRank
- FastText(Facebook)
六、 神经网络语言模型与word2vec
1. 神经网络语言模型
通过神经网络训练模型可以得到词向量,主要的神经网络语言模型如下所示
- Neutral Network Language Model(NNLM)
- Log-Bilinear Language Model(LBL)
- Recurrent Neutral Netword based Language Model(RNNLM)
- Collobert和Weston在2008年提出的C&W Model
- Mikolov等人提出CBOW和SKip-gram Model
2. word2vec 与 CBOW、Skip-gram
上面的5个神经网络语言模型,只是逻辑概念上的东西。
具体模型我们得通过设计将其实现出来,而实现CBOW( Continuous Bagof-Words)和 Skip-gram 语言模型的工具正是 word2vec
C&W 模型的实现工具是SENNA。
所以说,分布式词向量并不是word2vec的作者发明的,他只是提出了一种更快更好的方式来训练语言模型罢了。分别是:连续词袋模型Continous Bag of Words Model(CBOW)和Skip-Gram Model,这两种都是可以训练出词向量的方法,再具体代码操作中可以只选择其一,不过据论文说CBOW要更快一些。
① CBOW
简介
通过上下文来预测中间那个词
② Skip-gram
简介
根据当前词来预测上下文
Skip-Gram Model 论文
七、总结
- Word Embedding是词的一种表示方式,属于Distributed Representation中的一类
- Word2Vec 是实现Word Embedding的一种方式
- Word2Vec的两种训练模式是:CBOW和kip-gram
七、扩展知识
- word2vec中的数学原理详解
Word2Vec 与 Word Embedding的关系相关推荐
- 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)
文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...
- NLP(词向量、word2vec和word embedding)
最近在做一些文本处理相关的任务,虽然对于相关知识有所了解,而且根据相关开源代码也可以完成相应任务:但是具有有些细节,尤其是细节之间的相互关系,感觉有些模糊而似懂非懂,所以找到相关知识整理介绍,分享如下 ...
- word2vec和word embedding有什么区别?
目录 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NLP词的表示方法类型 三.NLP语言模型 四.词的分布式表示 五.词嵌入( word embedding) ...
- 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】
1.6.1.如何表示字符串 1.6.1.1.word embedding 1.6.1.1.1.文本表示(Representation) 1.6.1.1.2.独热编码 | one-hot represe ...
- Word2Vec+ Word Embedding
word2vec和word embedding有什么区别? 2018年06月18日 22:53:30 阿华Go 阅读数:1625 作者:Scofield 链接:https://www.zhihu.co ...
- Pytorch:jieba分词、hanlp分词、词性标注、命名实体识别、one-hot、Word2vec(CBOW、skipgram)、Word Embedding词嵌入、fasttext
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本预处理及其作用: 文本语料在输送给模型前一般需要一系列的预 ...
- 关于词嵌入(Word Embedding)的一些总结
看了课程半天没搞懂词嵌入是啥,梳理一下相关知识.参考: https://www.jianshu.com/p/2fbd0dde8804 https://blog.csdn.net/m0_37565948 ...
- 词嵌入来龙去脉 word embedding、word2vec
文章目录 0词嵌入来龙去脉 1 NLP的核心关键:语言表示(Representation) 2 NLP词的表示方法类型 2.1词的独热表示one-hot representation 2.2词的分布式 ...
- Word Embedding与Word2Vec学习
一.词嵌入背景 Embed这个词,英文的释义为, fix (an object) firmly and deeply in a surrounding mass, 也就是"嵌入"之 ...
- CS224n 2019 Winter 笔记(一):Word Embedding:Word2vec and Glove
CS224n笔记:Word2Vec:CBOW and Skip-Gram 摘要 一.语言模型(Language Model) (一)一元模型(Unary Language Model) (二)二元模型 ...
最新文章
- 高招攻略 领英助你清晰解读大数据专业
- date javascript 时区_js Date 时间戳 时区等问题总结
- python dicom图像分割_处理医疗影像的Python利器:PyDicom
- Nginx模块开发入门
- C++内存管理(1)
- python xgboost用法_XGBoost使用教程(纯xgboost方法)一
- tomcat监控脚本
- 题目1003:A+B
- 中汽中心软件测评中心与紫光国微达成芯片认证合作
- C# Get请求携带body
- html和css的编程规范,Bootstrap CSS编码规范
- Nginx之(一)Nginx是什么
- c语言指针的作用 举例,c语言指针详解(c语言指针用法举例)
- 嵌入式——嵌入式与单片机傻傻分不清
- visio2003中、origin中、matlab中,字体的大小以pt为单位,与word中的几号字大小是如何对应?
- 【Roboware编译(小锤子)无法选择Debug选项】
- 一名股票量化交易者该如何管理股票数据——股票代码表的维护
- 棋子的移动问题(递归问题)
- java使用正则表达式获取字符串中的所有英文单词或数字
- 计算机图形学——绘制钻石图案