word2vec 猜测词嵌入
Posted
技术标签:
【中文标题】word2vec 猜测词嵌入【英文标题】:word2vec guesing word embeddings 【发布时间】:2017-12-10 14:53:13 【问题描述】:word2vec 可以用于仅根据上下文猜测单词吗? 使用大型数据集训练模型,例如谷歌新闻我如何使用 word2vec 来预测只有上下文的相似词,例如有输入“,主宰国际象棋超过15年,将在密苏里州圣路易斯与九位***棋手一较高下。”输出应该是 Kasparov 或者 Carlsen。
我只看到了相似性 api,但我不知道如何使用它们?这不是 word2vec 打算使用的方式吗?
【问题讨论】:
【参考方案1】:这不是 word2vec 的预期用途。 word2vec 算法在内部尝试使用周围的词来预测准确的词,作为一种迂回的方式来学习那些周围词的有用向量。
但即便如此,它并没有在训练期间形成准确的预测。它只是查看一个狭窄的训练示例——上下文词和目标词——并执行非常简单的比较和内部微调,以使其与该示例的一致性稍好一些。随着时间的推移,它会自我调整为有用的向量——即使预测的质量仍然千差万别。
大多数 word2vec 库不提供直接界面来显示排名预测,给定上下文词。 Python gensim 库在最近的几个版本中(截至 2017 年 7 月的当前版本 2.2.0)提供了一个predict_output_word()
方法,该方法粗略地显示了模型在给定上下文词的情况下对某些训练模式的预测。见:
https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.predict_output_word
但是,考虑到您的填空查询(在相关教育或机器学习上下文中也称为“完形填空删除”):
_____, who dominated chess for more than 15 years, will compete against nine top players in St Louis, Missouri
普通的 word2vec 模型不太可能做到这一点。它对单词的相对重要性知之甚少(除非某些单词更窄地预测其他单词)。它没有语法/顺序感,或连接短语的组合含义(如“主宰国际象棋”,而不是单独的词“主宰”和“国际象棋”)。尽管描述相同事物的词通常彼此靠近,但它不知道能够确定空白必须是“人”和“棋手”的类别,以及 word2vec 的模糊相似性'不保证同类词一定会比其他词更接近。
为了更好地帮助完成此类问答任务,已经进行了大量工作来训练单词/概念向量(又名“密集嵌入”)。一个随机的例子可能是"Creating Causal Embeddings for Question Answering with Minimal Supervision",但是像 [word2vec question answering] 或 [embeddings for question answering] 这样的查询会发现更多。不过,我不知道有什么简单的开箱即用的库可以做到这一点,不管有没有 word2vec 的核心。
【讨论】:
以上是关于word2vec 猜测词嵌入的主要内容,如果未能解决你的问题,请参考以下文章
在 TensorFlow 中使用预训练的词嵌入(word2vec 或 Glove)