Word2vec
连续词袋模型(CBOW)
Word2vec模型可用来映射每个词到一个向量。
Google 公司在 2013年开放了 Word2vec这一款用于训练词向量的软件工具。Word2vec 可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应用研究提供了新的工具。Word2vec依赖 skip-grams 或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。
Word2vec确实没那么简单,涉及的知识点包括神经网络、语言模型、n-gram、One-Hot、NNLM、到CBOW、Skip-gram、哈夫曼编码、反向传播、Hierarchical SoftMax、负采样等等,各种概念,
Word2vec基本出发点是上下文相似的两个词,它们的词向量也应该相似,比如香蕉和梨在句子中可能经常出现在相同的上下文中,因此这两个词的表示向量应该就比较相似。
我们来看个例子,如何用 Word2vec 寻找相似词:
对于一句话:她们 夸 吴彦祖 帅 到 没朋友,如果输入 x 是吴彦祖,那么 y 可以是:“她们、夸、帅、没朋友”这些词
现有另一句话:她们 夸 我 帅 到 没朋友,如果输入 x 是:我,那么不难发现,这里的上下文 y 跟上面一句话一样
从而 f(吴彦祖) = f(我) = y,所以大数据告诉我们:我 = 吴彦祖(完美的结论)
所以说,word2vec模型中比较重要的概念是词汇的上下文,说白了就是一个词周围的词,比如 wt 的范围为1的上下文就是 wt−1 和 wt+1 。
https://blog.csdn.net/v_JULY_v/article/details/102708459
传统词嵌入的问题
不管是基于local训练的Word2vec,还是基于全局的Glove,传统词嵌入存在的一个很大的问题:一旦预训练词向量,就只能将其按照训练结果嵌入模型中,这样会导致词向量无法根据具体语境作动态的调整。比如说下面这个句子:
There is a traffic 'jam',so I began to eat my apple 'jam'.
第一个jam是堵塞,第二个jam是果酱。明显,两个单词的含义完全不同。如果仅仅只是将jam用同一个词向量表示,无疑给下游任务造成了巨大的噪声。因此传统词嵌入只能依据具体语境去训练Embedding(或者在有更多语料的相似语境训练),无法像CV一样做迁移学习(VGGNet)。
————————————————
转自:
链接:https://blog.csdn.net/weixin_43301333/article/details/104861975
https://blog.csdn.net/weixin_43301333/article/details/104861975
GOOD
https://blog.csdn.net/v_JULY_v/article/details/102708459
https://blog.csdn.net/weixin_43301333/article/details/104861975