西安网站注册,宝安做棋牌网站建设哪家好,呼和浩特微信小程序公司,百度应用商店官网NLP入门系列—词嵌入 Word embedding
2013年#xff0c;Word2Vec横空出世#xff0c;自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后#xff0c;导致了一波嵌入#xff08;Embedding#xff09;热#xff0c;基于句子、文档表达的wor…NLP入门系列—词嵌入 Word embedding
2013年Word2Vec横空出世自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后导致了一波嵌入Embedding热基于句子、文档表达的word2vec、doc2vec算法基于物品序列的item2vec算法基于图模型的图嵌入技术相继诞生。
现有的机器学习方法往往无法直接处理文本数据因此需要找到合适的方法将文本数据转换为数值型数据由此引出了Word Embedding词嵌入的概念。
词嵌入是自然语言处理NLP中语言模型与表征学习技术的统称它是NLP里的早期预训练技术。它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中每个单词或词组被映射为实数域上的向量这也是分布式表示向量的每一维度都没有实际意义而整体代表一个具体概念。
文本表示
文本是一种非结构化的数据信息是不可以直接被计算的。
文本表示的作用就是将这些非结构化的信息转化为结构化的信息这样就可以针对文本信息做计算来完成我们日常所能见到的文本分类情感判断等任务。
‘
文本表示的方法有很多种下面只介绍 3 类方式
独热编码 | one-hot representation整数编码词嵌入 | word embedding
’
独热编码 one-hot representation
假如我们要计算的文本中一共出现了4个词猫、狗、牛、羊。向量里每一个位置都代表一个词。所以用 one-hot 来表示就是
猫1000
狗0100
牛0010
羊0001
’
但是在实际情况中文本中很可能出现成千上万个不同的词这时候向量就会非常长。其中99%以上都是 0。
one-hot 的缺点如下
无法表达词语之间的关系这种过于稀疏的向量导致计算和存储的效率都不高 这里稍微解释一下 无法表达词语之间的关系因为站在向量的角度我们是可以计算向量之间的距离one-hot 模式之下所有的向量之间的距离都一样关于向量过于稀疏这主要是因为不论向量多长只有一个位置是非0的 整数编码
这种方式也非常好理解用一种数字来代表一个词上面的例子则是
猫1
狗2
牛3
羊4
‘
将句子里的每个词拼起来就是可以表示一句话的向量。
整数编码的缺点如下
无法表达词语之间的关系对于模型解释而言整数编码可能具有挑战性。
什么是词嵌入 word embedding
word embedding 是文本表示的一类方法。跟 one-hot 编码和整数编码的目的一样不过他有更多的优点。
词嵌入并不特指某个具体的算法跟上面2种方式相比这种方法有几个明显的优势
可以将文本通过一个低维向量来表达不像 one-hot 那么长。语意相似的词在向量空间上也会比较相近。通用性很强可以用在不同的任务中。
’
目前有两种主流的 word embedding 算法
‘
Word2vec
这是一种基于统计方法来获得词向量的方法他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。
Word2vec是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络用来训练以重新建构语言学之词文本。网络以词表现并且需猜测相邻位置的输入词在word2vec中词袋模型假设下词的顺序是不重要的。训练完成之后word2vec模型可用来映射每个词到一个向量可用来表示词对词之间的关系该向量为神经网络之隐藏
这种算法有2种训练模式
通过上下文来预测当前词通过当前词来预测上下文
Word2vec 是 Word Embedding 方式之一属于 NLP 领域是将词转化为「可计算」「结构化」的向量的过程这种方式在 2018 年之前比较主流但是随着 BERT、GPT2.0 的出现这种方式已经不算效果最好的方法了。
在说明 Word2vec 之前需要先解释一下 Word Embedding。 它就是将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。
将现实问题转化为数学问题只是第一步后面还需要求解这个数学问题。所以 Word Embedding 的模型本身并不重要重要的是生成出来的结果——词向量。因为在后续的任务中会直接用到这个词向量。
Word2vec 的 2 种训练模式
CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model)是Word2vec 的两种训练模式。下面简单做一下解释
CBOW
通过上下文来预测当前值。相当于一句话中扣掉一个词让你猜这个词是什么。
’
Skip-gram
用当前词来预测上下文。相当于给你一个词让你猜前面和后面可能出现什么词。
‘
优化方法
为了提高速度Word2vec 经常采用 2 种加速方式
Negative Sample负采样Hierarchical Softmax
Word2vec 的优缺点
需要说明的是Word2vec 是上一代的产物18 年之前 18 年之后想要得到最好的效果已经不使用 Word Embedding 的方法了所以也不会用到 Word2vec。
优点
由于 Word2vec 会考虑上下文跟之前的 Embedding 方法相比效果要更好但不如 18 年之后的方法比之前的 Embedding方 法维度更少所以速度更快通用性很强可以用在各种 NLP 任务中 缺点
由于词和向量是一对一的关系所以多义词的问题无法解决。Word2vec 是一种静态的方式虽然通用性强但是无法针对特定任务做动态优化 GloVe
GloVe 是对 Word2vec 方法的扩展它将全局统计和 Word2vec 的基于上下文的学习结合了起来。
GloVe的全称叫Global Vectors for Word Representation它是一个基于全局词频统计count-based overall statistics的词表征word representation工具它可以把一个单词表达成一个由实数组成的向量这些向量捕捉到了单词之间一些语义特性比如相似性similarity、类比性analogy等。我们通过对向量的运算比如欧几里得距离或者cosine相似度可以计算出两个单词之间的语义相似性。
GloVe是如何实现的
GloVe的实现分为以下三步 根据语料库corpus构建一个共现矩阵Co-ocurrence Matrix什么是共现矩阵矩阵中的每一个元素代表单词和上下文单词在特定大小的上下文窗口context window内共同出现的次数。 一般而言这个次数的最小单位是1但是GloVe不这么认为它根据两个单词在上下文窗口的距离提出了一个衰减函数decreasing weighting1/ 用于计算权重也就是说距离越远的两个单词所占总计数total count的权重越小 In all cases we use a decreasing weighting function, so that word pairs that are d words apart contribute 1/d to the total count. 构建词向量Word Vector和共现矩阵Co-ocurrence Matrix之间的近似关系论文的作者提出以下的公式可以近似地表达两者之间的关系 (1)log() 其中**和是我们最终要求解的词向量**和分别是两个词向量的bias term。 当然你对这个公式一定有非常多的疑问比如它到底是怎么来的为什么要使用这个公式为什么要构造两个词向量和~下文我们会详细介绍。 有了公式1之后我们就可以构造它的loss function了 (2)∑,1()(–log())2 这个loss function的基本形式就是最简单的mean square loss只不过在此基础上加了一个权重函数()那么这个函数起了什么作用为什么要添加这个函数呢我们知道在一个语料库中肯定存在很多单词他们在一起出现的次数是很多的frequent co-occurrences那么我们希望 1.这些单词的权重要大于那些很少在一起出现的单词rare co-occurrences所以这个函数要是非递减函数non-decreasing2.但我们也不希望这个权重过大overweighted当到达一定程度之后应该不再增加3.如果两个单词没有在一起出现也就是0那么他们应该不参与到loss function的计算当中去也就是()要满足(0)0 满足以上两个条件的函数有很多作者采用了如下形式的分段函数 (3)(){(/)if 1otherwise 这个函数图像如下所示 ’