我想知道是否有一些函数我可以放入一个字符串,如果这个字符串有单词,它可以自动完成(用英语)它将返回true(例如,如果字符串是“bl “那么这个函数会返回true,因为”blue“是一个单词)如果不是(比如字符串是”blszc“)那么它将返回false。
答案 0 :(得分:2)
您需要一个内置字典/单词语料库来自动填充单词。 您可以将NLTK与Wordnet一起使用:http://www.nltk.org/howto/wordnet.html
你需要一个得分来评分建议,它可能是词典编纂,即“bl”建议,如“blaze”,“blah”会出现在“blue”之前。 或者它可以基于该词在共同语言中的重要性。要粗略地这样做,您可以使用NLTK中Brown Corpus中单词的频率分布作为起点。 (例如:https://stackoverflow.com/a/38234480/533399)
您需要一个快速休息服务,因为每次击键都会发生自动完成(或者如果受到限制,则每隔几次击键就会发生,并且用户输入速度非常快)。为此,您需要将数据存储在数据存储中,该数据存储具有针对前缀优化的retreival,例如'blu'应返回'blue','blunt'等。我的建议是Solr / ElasticSearch (这将来也会让你有拼写纠正的功能或“你的意思是”)
作为一个简单的优化,您应将自动填充建议限制为任何前缀的前5-10个结果,应该是您的排名应该是如此之好,以至于最佳匹配出现在建议列表中的较高位置