【问题标题】:Levenshtein Distance/string matching algorithm for phrasesLevenshtein 短语的距离/字符串匹配算法
【发布时间】:2012-03-29 03:19:15
【问题描述】:

我有两个电子表格,每个电子表格都提供有关在我的工作网络上运行的一堆应用程序的信息。它们是由两个不同的人创建的,他们似乎从来没有对应过。

因此,他们为应用程序指定的名称在工作表之间不是固定的。然而,它们是相似的。例如,可以将一个应用程序称为“Office 2010”,另一个称为“MS Office 10”之类的。

我查看了 Levenshtein 算法,但这似乎只适用于单词顺序不变且只有拼写不同的单个单词或短语。 (我不是计算机科学家;请随时纠正我)。

因此,我正在寻找一种算法,对于一张表中的每个名称,可以循环遍历另一张表中的每个名称并找到最接近的匹配项。不一定要完美,任何事情都会有所帮助。

有什么想法吗?感谢所有可以提供帮助的人。

【问题讨论】:

    标签: excel spreadsheet levenshtein-distance


    【解决方案1】:

    Levenshtein 距离是编辑距离的一种通用形式,它计算将一个字符串转换为另一个字符串所需的编辑次数(插入、删除和替换)。你是对的,它不能很好地处理转置,但根据你的需要,它可能仍然可以完成这项工作。

    模糊字符串匹配是一个启发式领域,因此最好的办法是尝试满足您的特定目标。例如,您可以尝试通过大小写折叠来预处理文本,然后在获取编辑距离之前按字典顺序对标记进行排序,这在许多情况下有助于转置。您还可以减去两个字符串之间的绝对长度差,以便在一个字符串是另一个字符串的近似子字符串时获得较小的距离 - 但要小心,好像您这样做空字符串将匹配所有内容。

    一般而言,您将始终在特异性和敏感性之间进行权衡,因此诀窍就是调整启发式算法,使其以您喜欢的方式执行。

    【讨论】:

      猜你喜欢
      • 2017-05-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2020-11-11
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多