python - Python中的字符串相似度度量

标签 python string algorithm levenshtein-distance edit-distance

我想找出两个字符串之间的字符串相似度。 en.wikipedia有其中一些的例子。 code.google 有一个 Levenshtein distance 的 Python 实现。 .
在这些限制下是否有更好的算法(希望是 Python 库):

  1. 我想在字符串之间进行模糊匹配。例如matches('Hello, All you people', 'hello, all You people') 应该返回True
  2. 假阴性是可以接受的,假阳性是可以接受的,极少数情况除外。
  3. 这是在非实时设置中完成的,因此速度不是(太多)问题。
  4. [编辑] 我在比较多字串。

除了 Levenshtein 距离(或 Levenshtein 比率)之外的其他算法是否适合我的情况?

最佳答案

我意识到这不是一回事,但这已经足够接近了:

>>> import difflib
>>> a = 'Hello, All you people'
>>> b = 'hello, all You peopl'
>>> seq=difflib.SequenceMatcher(a=a.lower(), b=b.lower())
>>> seq.ratio()
0.97560975609756095

你可以把它做成一个函数

def similar(seq1, seq2):
    return difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio() > 0.9

>>> similar(a, b)
True
>>> similar('Hello, world', 'Hi, world')
False

关于python - Python中的字符串相似度度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471153/

相关文章:

python - 如何在没有错误的情况下访问 iFrame 内的不和谐小部件?

python - 分配给双索引 numpy 数组

python - 注册后即可获取 Facebook 好友

algorithm - 没有除法运算符的处理器上的汇编 mod 算法

algorithm - 如何 - Prolog 中的图形着色

python - ValueError : `decode_predictions` expects a batch of predictions (i. e。形状的二维数组(样本,1000))。找到形状为 : (1, 的数组 7)

c# - 复合字符串格式的 String.Format 变量

c - 为什么我的程序不能计算字符串中的单词数?

c - 如何在c中读取字符串?

algorithm - 迭代BTreeSet和HashSet的时间复杂度是多少?