简单单词自动完成只显示与已键入的字符匹配的单词列表。但是我想根据出现的单词的概率,在自动完成列表中排序单词,这取决于之前输入的单词,依赖于文本语料库的统计模型。我需要什么算法和数据结构?你能给我一些好的教程链接吗?
简单单词自动完成只显示与已键入的字符匹配的单词列表。但是我想根据出现的单词的概率,在自动完成列表中排序单词,这取决于之前输入的单词,依赖于文本语料库的统计模型。我需要什么算法和数据结构?你能给我一些好的教程链接吗?
彼得诺维格有一篇文章 如何编写拼写校正器 这解释了谷歌的方式 你的意思是...? 功能使用贝叶斯推理使其有效。这是一个非常好的阅读,应该适应自动完成功能。
彼得诺维格有一篇文章 如何编写拼写校正器 这解释了谷歌的方式 你的意思是...? 功能使用贝叶斯推理使其有效。这是一个非常好的阅读,应该适应自动完成功能。
您不需要自动完成的概率。相反,建立一个 前缀树 (又名a 特里)将语料库中的单词作为键,将其频率作为值。当你遇到一个部分字符串时,尽可能地走trie,然后从你到达的点生成所有后缀并按频率对它们进行排序。
当用户输入以前看不见的字符串时,只需将其添加到频率为1的trie中;当用户输入您看到的字符串时(可能通过从候选列表中选择它),增加其频率。
[注意,你不能用概率模型进行简单的增量;在最坏的情况下,你必须重新计算模型中的所有概率。
如果你想深入研究这种算法,我强烈建议你阅读(第一章) 语音和语言处理 由Jurafsky和Martin。它非常详细地处理语言处理的离散概率。