预测句子中的遗失词

时间:2016-06-22 15:17:55

标签: algorithm machine-learning nlp

如何预测句子中缺少的单词?

我已经看过很多关于使用n-gram语言模型预测句子中下一个单词的论文,该模型具有来自一组训练数据的频率分布。但相反,我想预测一个缺失的词,不一定在句子的末尾。例如:

  

我带着___散步。

我似乎无法找到任何利用空白后的字词的算法;我想我可以忽略它们,但它们必须增加一些价值。当然,bi / trigram模型不能用于预测前两个单词。

我应该使用什么算法/模式?或者使用空白后的单词没有优势吗?

2 个答案:

答案 0 :(得分:7)

Tensorflow有一个教程:https://www.tensorflow.org/versions/r0.9/tutorials/word2vec/index.html

顺便提一下,它会更多地生成单词嵌入,但为了到达那里,他们会训练模型来预测(下一个/缺失)单词。他们也只使用前面的单词显示,但您可以应用相同的想法并添加后面的单词。

他们还有一些关于如何提高精度的建议(跳过ngrams)。

在教程底部的某处,您可以找到工作源代码的链接。

唯一需要担心的是获得足够的训练数据。

答案 1 :(得分:5)

所以,当我使用bigrams / trigrams时,一个示例查询通常看起来像“预测'你会____'中缺少的单词”。然后我会查看我的训练数据并收集匹配该模式的所有三个单词集,并计算空白中的内容。所以,如果我的训练数据如下:

would you not do that
would you kindly pull that lever
would you kindly push that button
could you kindly pull that lever

我会得到两个“善意”和一个“不”,我会预测“善意”。你需要为你的问题做的就是在另一个地方考虑​​空白:“____你好心”将获得两个“愿望”和一个“可能”,所以你预测“会”。就计算机而言,单词顺序没有什么特别之处 - 您可以根据训练数据描述您想要的任何模式。这有意义吗?