预测自动完成背后的算法/理论?

chi*_*org 11 algorithm text nlp autocomplete probability

简单单词自动填充只显示与已键入的字符匹配的单词列表.但我想根据出现的单词的概率,根据之前输入的单词,依据文本语料库的统计模型,对自动完成列表中的单词进行排序.我需要什么算法和数据结构?你能给我一些好的教程链接吗?

Fre*_*Foo 11

您不需要自动完成的概率.相反,构建一个前缀树(也称为trie),将语料库中的单词作为键,将其频率作为值.当你遇到一个部分字符串时,尽可能地走trie,然后从你到达的点生成所有后缀并按频率对它们进行排序.

当用户输入以前看不见的字符串时,只需将其添加到频率为1的trie中; 当用户输入您看到的字符串时(可能通过从候选列表中选择它),增加其频率.

[注意,你不能用概率模型进行简单的增量; 在最坏的情况下,你必须重新计算模型中的所有概率.

如果你想深入研究这种算法,我强烈建议你阅读Jurafsky和Martin的语音和语言处理(第一章).它非常详细地处理语言处理的离散概率.


Wer*_*sey 5

彼得·诺维格 (Peter norvig) 有一篇文章如何编写拼写校正器,解释了 Google 的意思是...?功能使用贝叶斯推理使其有效。这是一本非常好的读物,应该适用于自动完成功能。

  • #4 的改进为我指明了正确的方向:使用 n-gram 进行预测。 (2认同)