在机器学习的任务里,尤其是在NLP任务里,经常需要对文本转化为可以计算的向量的形式。目前市面上出现了各种各样的方法,各有所长,所以在这里简单的整理一下。
文本转化为向量的方法,一般有两种,一种是one-hot方法,一种是词嵌入(word embedding)。
one-hot方法很简单,简单理解,就是把一本字典作为向量,包含这个词的位置是1,其他位置都是0。这种方法的问题在于,它忽略了词之间的相关性,而且每个词的向量长度都是字典的长度。
回顾机器学习的初衷,就是希望在有限的不确定性样本中学到确定的规律,one-hot这种高维度的表示方法,需要大量的样本才能学习到规律。结合人平时做阅读理解时候的方法,往往我们会结合上下文去理解一个词的意思,比如:小明 爱 妈妈,小明 也爱 爸爸。就算不知道爸爸是什么,也能猜出来是跟妈妈很类似的亲属。
所以用word embedding(Distributed Representation)的方法,可以做到有效的降维,而且还可以做类比,比如
V(“hotter”) - V(“hot”) ≈V(“bigger”) - V(“big”) ,V(“king”) - V(“queen”) ≈V(“uncle”) - V(“ant”)
这些都是语义空间的线性关系,可以做加减法,例如:
V(“hotter”) ≈V(“bigger”) - V(“big”) + V(“hot”)
用输入单词作为中心单词去预测周边单词的方式叫做:Word2Vec The Skip-Gram Model。
用输入单词作为周边单词去预测中心单词的方式叫做:Continuous Bag of Words (CBOW)。
关于具体的解析,可以看一下网易分享的这个文档:word2vec
接下来,简单分析一下,各种方法的异同点