【问题标题】:Is there any implementation of this string matching method in python?这个字符串匹配方法在python中有没有实现?
【发布时间】:2011-07-08 17:10:00
【问题描述】:

我正在尝试使用近似字符串匹配来确定我的数据存储中的哪些条目几乎是重复的。

在python中是否有以下方法的实现,或者我需要尝试自己动手?

谢谢:)

from wikipedia:

...

蛮力的方法是 计算所有人到 P 的编辑距离 T 的子串,然后选择 具有最小距离的子串。 但是,该算法将具有 运行时间 O(n3 m)

更好的解决方案[3][4],利用 动态规划,使用 的替代公式 问题:对于每个位置 j 文本 T 和每个位置 i 模式 P,计算最小编辑 第一个之间的距离 模式的字符,Pi 和任何 T 的子串 Tj',j 结束于 位置 j。

将它应用于许多字符串的最有效方法是什么?

【问题讨论】:

    标签: python string fuzzy-search fuzzy-comparison


    【解决方案1】:

    Levenshtein distance 的表现与fuzzywuzzy 标准ratio() 函数非常相似。 blurwuzzy 使用 difflib http://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python

    fuzzywuzzy 文档中的示例: https://github.com/seatgeek/fuzzywuzzy

    fuzz.ratio("this is a test", "this is a test!")
        96
    

    【讨论】:

      【解决方案2】:

      difflib.get_close_matches 应该做这项工作。

      【讨论】:

        【解决方案3】:

        是的。

        google("python levenshtein")
        

        【讨论】:

          【解决方案4】:

          difflib 可能是答案,例如,

          from difflib import context_diff
          
          a = 'acaacbaaca'
          b = 'accabcaacc'
          
          print ''.join(context_diff(a,b))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-09-20
            • 1970-01-01
            • 2019-03-24
            • 1970-01-01
            • 1970-01-01
            • 2012-02-23
            • 2015-07-14
            • 1970-01-01
            相关资源
            最近更新 更多