可以使用word2vec来猜测上下文中的单词吗? 用大数据集训练模型,例如Google新闻如何使用word2vec预测仅包含上下文的类似字词,例如凭借输入",他在国际象棋中占据了超过15年的历史,将与密苏里州圣路易斯的九名顶级球员竞争。"输出应该是卡斯帕罗夫或卡尔森。
我只看到相似的apis,但我怎么能理解如何使用它们呢?这不是word2vec打算用的吗?
答案 0 :(得分:3)
这不是word2vec的预期用途。 word2vec算法在内部尝试使用周围的单词预测精确的单词,作为学习周围单词的有用向量的迂回方式。
但即便如此,它还没有在训练期间形成准确的预测。它只是查看一个简单的训练示例 - 上下文单词和目标单词 - 并执行一个非常简单的比较和内部轻推,以使其与该示例的一致性稍好一些。随着时间的推移,即使预测仍然具有极其不同的质量,它也会向有用的载体进行自我调整。
在给定上下文单词的情况下,大多数word2vec库都没有提供直接界面来显示排名预测。对于最后几个版本(截至2017年7月的当前版本2.2.0),Python gensim库提供了一种predict_output_word()
方法,该方法大致显示了模型预测的内容,对于某些训练模式,给出了上下文单词。参见:
但是,考虑到您的填空查询(在相关教育或机器学习环境中也称为“完形填空删除”):
_____, who dominated chess for more than 15 years, will compete against nine top players in St Louis, Missouri
vanilla word2vec模型不大可能做到这一点。它对词语的相对重要性几乎没有意义(除非某些词语更加狭隘地预测其他词语)。它没有语法/秩序感,或者没有连词短语的构成意义(比如“国际象棋”,而不是单独的词语,而是主导的“和”#39;以及#39;棋&#39)。尽管描述相同类型事物的词语通常彼此接近,但它并不知道能够确定空白必须是“人”的类别。和一个国际象棋选手'和word2vec的模糊相似性不能保证一个类的单词一定比其他单词更接近于其他单词。
有很多工作要训练单词/概念向量(又称“密集嵌入”),以便更好地帮助完成这类问答任务。一个随机的例子可能是"Creating Causal Embeddings for Question Answering with Minimal Supervision"但是像[word2vec问题回答]或[问答的嵌入]这样的查询会发现更多。尽管如此,我不知道有哪些简单的开箱即用的库,无论是否有word2vec核心。