Wrod2vec算法_3分钟热情学NLP第4篇

第4篇:3分钟热情学NLP,word2vec

在NLP领域,文本表示是第1步,也是很重要的1步。所谓文笔表示,即如何把自然语言的语言符合,转化成计算机能够处理的数字。

文本向量化.png

1、文本向量化

现阶段,文本向量化,大部分是通过词向量化来实现的;也有一部分算法,将整篇文章或整条句子作为最小处理单位来实现文本向量化,如doc2vec;

1.1、独热编码one-hot

one-hot编码,是最直观的1个词表示方式。构建1个文本词典,每个分词是1个比特值,比特值为0或1。

动物特征可表示为:
猴子:01
老虎:10
熊猫:11

植物的特征可表示为:
桃树:001
苹果树:010
……

水果类特征可表示为
苹果:0001
香蕉:0010
葡萄:0011
芒果:0100
木瓜:0101
桃:0110
……
如果表示1句话[“猴子”,“桃树”,“桃”],用数字化表示即为;
[0,1,0,0,1,0,1,1,0]
以上,就是one-hot的表示方式。如果1篇文章由1000个词,那么每个词汇都要用1000维向量来表示,而且每个词汇只有1个位置为“1”,其他999个位置为“0”,响应地有1万个词,就要用1万维向量来表示,每个词都是茫茫0海中的一个“1”。

the cat sat on the mat 可表示为:

the cat sat on the mat

one-hot的主要缺点:
1、随着语料库的增加,数据特征的维度会越来越大,而且得到的是1个非常稀疏的矩阵。几万甚至十几万维的向量,会造成维数爆炸,计算机会说不了。
2、每个词汇向量之间是无关的;

1.2、词袋模型BOW(bag of words)

词袋模型,将文本抽象成1个装满“词”的袋子,不考虑词的顺序、上下文或语法,只记录这个词出现的次数(进行累加);
the cat sat on the mat 可表示为:
[2,1,1,1,1]#单词the,出现了2次;

John likes to watch cricket. Chris likes cricket too 可表示为:
[1, 2, 1, 1, 2, 1, 1, 0, 0],#单词likes 和 cricket均出现了2次。

1.3、词嵌入 Word Embedding(或称词向量)

摘录1段知乎的回复https://www.zhihu.com/question/40309730/answer/86453469

理解 前面提过,one-hot表示法具有维度过大的缺点,那么现在将vector做一些改进:1、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;2、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。如图示:


词嵌入示意

以上,就是词嵌入名字的由来。

Word Embedding 矩阵给每个单词分配1个固定长度的向量表示,并且这个矩阵长度可以自行设置,可以设置1个远小于词典长度的长处,比如设置为500;
词与词之间的夹角值(向量之前的余弦值),可以反映词之间的关系。

在本文中,“词嵌入”与“词向量”这2个词等价。

2 词向量算法word2vec

word2vec算法,是2013年起很火的Word Embedding 模型,后面比较火的还有 glove。

在一定范围内,word2vec成了词向量的1个代名词,甚至直接等价于词向量。

word2vec模型,包括2种训练模型:CBOW(Continuous Bag-of-Words Model)模型和Skip-gram(Continuous Skip-Gram Model)模型

备注:
1、word2vec 和 glove,均不需要标注。
2、word2vec论文https://arxiv.org/abs/1301.3781
3、参考网址:
https://www.cnblogs.com/jiangxinyang/p/9332769.html
https://www.cnblogs.com/jiangxinyang/p/10207273.html

2.1 word2vec之CBOW模型

一句话解释:利用上下文来预测当前的词。

CBOW模型

第1层是输入层,输入的值是上下文的one-hot编码;
隐藏层对输出值做了权值加法,没有激活函数进行非线性的转换;
输出值的维度和输入值的维度是一致的。

2.2 word2vec之Skip-gram模型

一句话解释:用当前词来预测上下文


Skip-gram模型

第1层是输入层,输入值是中心词的one-hot编码;
隐藏层只是做线性转换;
输出的是输出值的softmax转换后的概率。

你可能感兴趣的:(Wrod2vec算法_3分钟热情学NLP第4篇)