可以使用哪种算法来实现合理的下一个单词预测?


10

实现“下一个单词预测”的好方法是什么?例如,用户键入“我是”,并且系统建议“ a”和“ not”(或其他可能)作为下一个单词。我知道一种使用马尔可夫链和一些训练文本(显然)来或多或少地实现这一目标的方法。但是我在某处读到,该方法非常严格,适用于非常简单的情况。

我了解神经网络和遗传算法的基础知识(尽管从未在严肃的项目中使用过它们),也许它们可能会有所帮助。我想知道是否有任何算法可以在给定适当的培训文本(例如报纸文章和用户自己的打字)的情况下为下一个单词提出合理适当的建议。如果没有(链接到)算法,则欢迎使用一般的高级方法来解决此问题。

Answers:


9

看一下n-grams。一个n-gram是一个n单词序列。在您的情况下,您想n成为3,因为您需要两个query words和一个resulting word。一个三克重的东西例如是“我累了”,另一个是“我很高兴”。

然后,您需要的是这些3克语言的集合,这些语言是通过您的目标语言(例如英语)收集的。由于您无法收集所有用英语写的东西,因此需要进行选择。选择具有代表性的文本称为corpus。如果您的语料库良好,它将告诉您三个特定单词在英语中一起出现的频率。由此可以计算出3克的可能性。

收集此类数据是最困难的部分。获得所有3克列表及其概率后,您就可以将列表过滤为所有以“我是”开头的3克。然后,按照概率预测对所有这些列表进行排序您的预测。


好了,是否有一个最佳值n可以产生很好的结果?它并不总是必须是被预测第三个单词,你看
亚提sagade

2
好吧,n列表越大,生成的列表越长,这将为您提供更精确的预测,但搜索起来也更加昂贵。因此,这是精度与计算时间之间的权衡。
sebastiangeiger 2012年

2
同样,您需要更大的语料库才能使用更大的n-gram。
liori

4
嗯,这实际上是一个马尔可夫链……不仅如此,而且实际上是教科书中最多的例子……
Justin L.


1

您正在寻找一种(统计的)语言模型

统计语言模型P(w_1,...,w_m)通过概率分布将概率分配给m个单词的序列。

在语音识别和数据压缩中,这种模型试图捕获语言的属性,并预测语音序列中的下一个单词。


哇。但是我认为@sebastiangeiger的答案解释了n = 3的情况。
yati sagade 2012年

他的回答描述了一种特定的语言模型,即n-gram模型。还有其他语言模型,例如语法语言模型(goo.gl/ffPOg)。
user3287 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.