【问题标题】:If you are missing some letters of a word, how to determine which word it is?如果您遗漏了一个单词的某些字母,如何确定它是哪个单词?
【发布时间】:2013-02-17 11:41:08
【问题描述】:

假设您正在编写 OST 或网络纠错应用程序。所以你正在处理一个缺少一些字母的单词,比如“*leph*nt”。您将英语词典存储在一个数组中。如何确定是哪个词?

【问题讨论】:

  • 请在此上下文中定义“OST”。
  • 您知道缺少哪些字母吗?还是你只是按照你收到的顺序给了你收到的字符?

标签: algorithm artificial-intelligence complexity-theory neural-network


【解决方案1】:

一种常见的方法是使用由Levenshtein distance 衡量的最接近的词。平局可以任意解决,通常使用最大允许距离。

【讨论】:

  • 但是你必须对照字典上的每个单词来检查它?这将需要很长时间。
  • @Dokkat - 不一定。例如,您不必查看长度差异超过与示例单词的最大距离的字典单词。通过巧妙的字典索引和动态编程的使用,事情可以大大加快。有关更多信息和资源链接,请参阅Wikipedia article Approximate string matching
【解决方案2】:

计算查询和所有字典单词之间的 Levenstein 距离肯定会很慢。

BLAST 程序对生物序列使用了更好的策略。在 BLAST 中,索引首先建立了一个序列数据库,该数据库将固定长度的小子字符串 K 与包含它们的所有单词的列表相关联。

在查询中,BLAST 在索引中搜索查询字符串中的所有 K 长度子字符串。然后可以扩展查询和索引字符串中的匹配子字符串以快速计算近似的 Levenstein 距离,并返回距离低于某个阈值的索引字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2016-03-22
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多