赞
踩
一直有点没明白标题中三者的关系,在此记录下来自己查阅之后的看法,有不对的地方,请大家指正,谢谢!
关于NLP中,有各种不同的表达,如: 词向量、word embedding、分布式表示、word2vec、glove等等,这一锅粥的名词术语分别代表什么,他们具体的关系是什么,他们是否处于平级关系?
希望写完这篇文章后,自己能清楚地理清他们之间的关系。
https://blog.csdn.net/sisteryaya/article/details/80879711
word representation方式:
Knowledge-based representation根据语言学家们制定的 WordNet ,其中包含了字与字之间的关联。来对文字进行表示。
from nltk.corpus import wordnet
One-Hot编码,又称为一位有效编码,独热编码,将所有需计算的文字组成一个向量,给出一个文字,它在向量中的位置标为1,其余都为0。
例如:car和motorcycle,无论怎样计算相似度都为0。
词袋模型中,每个单词向量化之后对应维度上的值,还可以用一个权重表示,这个权重由TF-IDF计算得到,用来反映这个词在整篇文档中的重要性程度;而不仅仅是用上图中所示的词频后者直接不考虑词频。
这种one-hot不能捕获词和词之间的关系,因此有了接下来的 分布式表示distributed representation
1. 基于矩阵的分布表示
基于矩阵的分布表示通常又称为分布语义模型,在这种表示下,矩阵中的一行,就成为了对应词的表示,这种表示描述了该词的上下文的分布。由于分布假说认为上下文相似的词,其语义也相似,因此在这种表示下,两个词的语义相似度可以直接转化为两个向量的空间距离。
常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示。
1.1 High-dimensional sparse word vector
基于neighbour,设置Co-occurrence Matrix共现矩阵
找到一个低维向量
1.2 Low-dimensional sparse word vector
降维dimension reduction,例如通过SVD等,从k维降为r维
直接学习出低维向量,而不是从资料中学习到高维矩阵再进行降维
由此引出了word embedding
2. 基于聚类的分布表示
3. 基于神经网络的分布表示,词嵌入( word embedding)
基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation)。
思想
directly learn low-dimensional word vectors
word2vec (Mikolov et al. 2013)
skip-gram
CBOW
Glove (Pennington et al., 2014)
CBOW中,在做语言模型任务的时候,我把要预测的单词抠掉,然后根据它的上文 Context-Before 和下文 Context-after 去预测单词。以“我爱北京天安门”这句话为例。假设我们现在关注的词是“爱”,C=2时它的上下文分别是“我”,“北京天安门”。CBOW模型就是把“我” “北京天安门” 的one hot表示方式作为输入,也就是C个1xV的向量,分别跟同一个VxN的大小的系数矩阵W1相乘得到C个1xN的隐藏层hidden layer,然后C个取平均所以只算一个隐藏层。这个过程也被称为线性激活函数(这也算激活函数?分明就是没有激活函数了)。然后再跟另一个NxV大小的系数矩阵W2相乘得到1xV的输出层,这个输出层每个元素代表的就是词库里每个词的事后概率。输出层需要跟ground truth也就是“爱”的one hot形式做比较计算loss。这里需要注意的就是V通常是一个很大的数比如几百万,计算起来相当费时间,除了“爱”那个位置的元素肯定要算在loss里面,word2vec就用基于huffman编码的Hierarchical softmax筛选掉了一部分不可能的词,然后又用nagetive samping再去掉了一些负样本的词所以时间复杂度就从O(V)变成了O(logV)。Skip gram训练过程类似,只不过输入输出刚好相反。
神经网络词向量表示技术通过神经网络技术对上下文,以及上下文与目标词之间的关系进行建模。由于神经网络较为灵活&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。