我需要为特定需求编写一个解决方案,并且我想知道是否有人熟悉可以实现它的现成库,或者可以指导我最佳做法。描述:比较字的算法(不按字母顺序)
用户输入应该是几个固定选项之一(我拥有列表中的选项)的单词。我知道输入必须在列表中的成员中,但由于是用户输入,他/她可能犯了错误。我正在寻找一种能够告诉我用户意思最可能的单词的算法。我没有任何上下文,我不能强迫用户从列表中选择(即他必须能够自由地和手动地输入单词)。例如,假设列表中包含“水”,“季度”,“啤酒”,“甜菜”,“地狱”,“你好”以及“土豚”等词组。
该解决方案必须考虑不同类型的“正常的”错误:
- 速度错别字(例如加倍字符,滴字符等)
- 键盘相邻字符的拼写错误(例如,“qater”为“水“)
- 母语非英语的拼写错误(如 “四” 为‘季度’)
- 等等...
显而易见的解决方案是逐字比较,并给每个不同的字母,额外的字母和丢失的字母赋予“惩罚权重”。但是这个解决方案忽略了数千个我确定列在某处的“标准”错误。我确信有那些处理所有案例的启发式方法,无论是特定的还是一般的,都可能使用标准不匹配的大型数据库(我愿意接受数据量大的解决方案)。
我在Python中编码,但我认为这个问题是语言不可知的。
任何建议/想法?