把单词用向量表示,是把深度神经网络语言模型引入自然语言处理领域的一个核心技术。想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍的 One-Hot Encoding(One-Hot 编码)和 Word Embedding (词嵌入)和就是把单词变成向量的两类方法。
one-hot encoding
one-hot representation把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。
例如:
苹果 [0,0,0,1,0,0,0,0,0,……]
one-hot representation相当于给每个词分配一个id,对于独热表示的向量,如果采用余弦相似度计算向量间的相似度,可以明显的发现任意两者向量的相似度结果都为 0,即任意二者都不相关,也就是说独热表示无法解决词之间的相似性问题。另外,one-hot representation将会导致特征空间非常大,但也带来一个好处,就是在高维空间中,很多应用任务线性可分。
word embedding
word embedding指的是将词转化成一种分布式表示,又称词向量。深度学习应用在自然语言处理当中的时候,基本都会通过词向量的方式将one-hot编码的向量,转换为词向量。词向量就是用一个向量来表示一个单词,可以理解为神经网络语言模型的副产品。
假设有一个词的独热编码w1[1,0,0,0],w1*Q = c1, c1就是新的词向量(one-hot也是一种向量的表示)。Embedding = 参数矩阵 × One-hot向量
word embedding 将 one-hot encoding 的向量映射到一个新的空间,embedding可以把序号映射成低维稠密向量,比one-hot的高维稀疏向量要好。
优点:
- 词之间存在相似关系:
是词之间存在“距离”概念,这对很多自然语言处理的任务非常有帮助。 - 包含更多信息:
词向量能够包含更多信息,并且每一维都有特定的含义。在采用one-hot特征时,可以对特征向量进行删减,词向量则不能。
说到embedding就不得不说说word2vector(一种神经网络语言模型,主要用来得到词向量)了,word2vector做法即为embedding的过程,这个可以扩展到推荐中的item2vector 。word2vec:
1.可以看作是多分类任务
2.浅层神经网络
3.数据构造模式:cbow、skip-gram模式
参考:
https://blog.csdn.net/mawenqi0729/article/details/80698350
https://blog.csdn.net/yunxiu988622/article/details/105816731
https://blog.csdn.net/Alex_81D/article/details/114287498