假设您有一个单词词典(最坏情况下出现在词典中的所有单词,最坏情况下出现在系统数据中的所有短语),并且知道各个单词的相对频率,应该能够通过单词相似度和相似单词的点击次数的某种组合合理地猜测用户的意思。权重显然需要反复试验,但通常来说,用户会比从语言上更接近但只有一个或两个有效单词的流行结果更感兴趣,因为流行结果在语言上与输入的字符串距离更远命中您的系统。
第二种情况应该更直接一些。您会找到以字符串开头的所有有效单词(“ T”无效,“ Tr”无效,“ Try”是一个单词,“ Tryt”不是一个单词,依此类推),对于每个有效单词,请重复剩余字符串的算法。假设您的字典已建立索引,这应该很快。如果找到可以将长字符串分解为一组有效单词而没有剩余字符的结果,则建议这样做。当然,如果您是Google,则可能会修改算法,以查找与实际单词基本错字的子字符串,并且您具有一些逻辑来处理可以通过足够宽松的拼写检查以多种方式读取字符串的情况(可能使用打破平局的结果数)。
0
我知道这个问题的重复之处:
这些问题与算法的实际工作方式有关。我的问题更像是:假设Google不存在,或者此功能可能不存在,并且我们没有用户输入。如何实现这种算法的近似版本?
为什么这很有趣?
好。尝试在Google中输入“ qualfy ”,它会告诉您:
很公平。它对从数十亿用户收集的数据使用统计机器学习来做到这一点。但是,现在尝试在Google中输入以下内容:“ Trytoreconnectyou ”,它告诉您:
现在,这是更有趣的部分。 Google如何确定呢?拥有一本方便的字典,并使用用户输入再次猜测最可能的单词吗?以及如何区分拼写错误的单词和句子?
现在考虑到大多数程序员无法访问数十亿用户的输入,我正在寻找实现该算法的最佳近似方法以及可用的资源(数据集,库等)。有什么建议么?