Python字符串比较相似性

Python字符串比较相似性,python,Python,我试图比较两个数据列表,其中包含一些表示同一对象的自由文本。范例 List 1 ['abc LLC','xyz, LLC'] List 2 ['abc , LLC','xyz LLC'] 这是一个简单的例子,但问题是可能会有很多变化,比如在case中的变化或在两者之间添加一些“.”。是否有任何python包可以进行比较并给出相似性度量?例如,您可以使用算法的实现进行非精确字符串匹配 另一种选择是,例如,在进行原始比较之前,将所有内容折叠成小写,删除空格等——这当然取决于您的用例: import

我试图比较两个数据列表,其中包含一些表示同一对象的自由文本。范例

List 1 ['abc LLC','xyz, LLC']
List 2 ['abc , LLC','xyz LLC']

这是一个简单的例子,但问题是可能会有很多变化,比如在case中的变化或在两者之间添加一些“.”。是否有任何python包可以进行比较并给出相似性度量?

例如,您可以使用算法的实现进行非精确字符串匹配

另一种选择是,例如,在进行原始比较之前,将所有内容折叠成小写,删除空格等——这当然取决于您的用例:

import string, unicodedata
allowed = string.letters + string.digits
def fold(s):
  s = unicodedata.normalize("NFKD", unicode(s).lower()).encode("ascii", "ignore")
  s = "".join(c for c in s if c in allowed)
  return s

for example in ['abc LLC','xyz, LLC', 'abc , LLC','xyz LLC']:
  print "%r -> %r" % (example, fold(example))
将打印

'abc LLC' -> 'abcllc'
'xyz, LLC' -> 'xyzllc'
'abc , LLC' -> 'abcllc'
'xyz LLC' -> 'xyzllc'

有一个优秀的二进制库,它使用字符串之间的levenshtein距离(编辑距离)来估计相似性。试一试:


你所说的“概率”是什么意思?@OliCharlesworth我想作者想找出两个字符串之间的相似性百分比。比如,如果字符串85%相似,你不需要“概率”,你需要“相似性”@麦克斯,是的,我就是这个意思。Thanks@all谢谢你的帮助