word2vec中一个词的向量代表啥?
Posted
技术标签:
【中文标题】word2vec中一个词的向量代表啥?【英文标题】:what does the vector of a word in word2vec represents?word2vec中一个词的向量代表什么? 【发布时间】:2015-01-17 21:30:45 【问题描述】:word2vec 是 Google 的开源工具:
它为每个单词提供一个浮点值向量,它们究竟代表什么?
还有一篇关于paragraph vector 的论文,谁能解释他们如何使用word2vec 来获得段落的固定长度向量。
【问题讨论】:
对你的问题的一个好的回答需要对神经网络的解释,并且超出了 Q&A 的 SO 格式的范围。 我发现这个问题对“句子和文档的分布式表示”非常有用且相关,正如提问者引用的论文中所述 【参考方案1】:TLDR:Word2Vec 在 N 维的潜在空间中构建单词投影(embeddings),(N 是单词的大小获得的向量)。浮点数表示单词在这个 N 维空间中的坐标。
潜在空间投影(将对象置于不同且连续的维度空间)背后的主要思想是,您的对象将具有比基本对象具有更有趣的微积分特征的表示(向量)。
换句话说,有用的是你有一个编码相似性的密集向量空间(即树的向量比跳舞更类似于木头)。这与经典的 sparse one-hot 或“bag-of-word”编码相反,后者将每个单词视为一个维度,使它们在设计上正交(即树、木头和舞蹈)它们之间的距离相同)
Word2Vec 算法这样做:
想象你有一句话:
狗必须去___去公园散步。
你显然想用“outside”这个词来填空,但你也可以用“out”。 w2v 算法的灵感来自于这个想法。您希望所有填空的词都靠近,因为它们属于一起 - 这被称为 分布假设 - 因此“out”和“outside”这两个词会更靠近,而像“胡萝卜”会更远。
这是 word2vec 背后的“直觉”。对于正在发生的事情的更理论解释,我建议阅读:
GloVe: Global Vectors for Word Representation Linguistic Regularities in Sparse and Explicit Word Representations Neural Word Embedding as Implicit Matrix Factorization对于段落向量,想法与 w2v 中的相同。每个段落都可以用它的词来表示。论文中介绍了两个模型。
-
以“词袋”方式(pv-dbow 模型),其中一个固定长度段落向量用于预测其词。
通过在单词上下文中添加固定长度段落标记(pv-dm 模型)。通过逆向传播梯度,他们可以“了解”缺失的内容,将具有相同单词/主题“缺失”的段落放在一起。
Bits from the article:
段落向量和词向量被平均或连接 预测上下文中的下一个单词。 [...] 段落标记可以被认为是另一个词。它 充当记忆,记住丢失的东西 当前上下文 - 或段落的主题
要全面了解这些向量的构建方式,您需要了解神经网络的构建方式以及反向传播算法的工作原理。 (我建议从this video 和 Andrew NG 的 Coursera 课程开始)
注意: Softmax 只是一种花哨的分类方式,w2v 算法中的每个单词都被视为一个类。分层 softmax/负采样是加速 softmax 和处理大量类的技巧。
【讨论】:
【参考方案2】:每个单词的固定宽度上下文用作神经网络的输入。网络的输出是给定维度(通常为 50 或 100)的浮点值向量 - 也就是词嵌入。网络经过训练,以便在给定训练/测试语料库的情况下提供良好的词嵌入。
人们可以很容易地为任何单词想出一个固定大小的输入 - 比如左边的 M 个单词和右边的 N 个单词。对于大小不一的句子或段落,如何做到这一点并不那么明显,或者至少一开始并不明显。在不先阅读论文的情况下,我猜可以结合句子/段落中所有单词的固定宽度嵌入来为句子/段落提供固定长度的向量嵌入。
【讨论】:
以上是关于word2vec中一个词的向量代表啥?的主要内容,如果未能解决你的问题,请参考以下文章
python gensim使用word2vec词向量处理英文语料
python gensim使用word2vec词向量处理中文语料
机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv