我正在寻找一个Python模块,可以做简单的模糊字符串比较。具体来说,我想知道字符串相似程度的百分比。我知道这是潜在的主观,所以我希望找到一个库,可以做位置比较以及最长的相似字符串匹配,等等。
基本上,我希望找到一些足够简单的东西,可以产生单个百分比,同时仍然可以配置,以便我可以指定要进行哪种类型的比较。
我正在寻找一个Python模块,可以做简单的模糊字符串比较。具体来说,我想知道字符串相似程度的百分比。我知道这是潜在的主观,所以我希望找到一个库,可以做位置比较以及最长的相似字符串匹配,等等。
基本上,我希望找到一些足够简单的东西,可以产生单个百分比,同时仍然可以配置,以便我可以指定要进行哪种类型的比较。
当前回答
谷歌也有自己的Google -diff-match-patch(“目前在Java, JavaScript, c++和Python中可用”)。
(不能评论它,因为我自己只使用python的difflib)
其他回答
我用的是双变音位,就像一个咒语。
一个例子:
>>> dm(u'aubrey')
('APR', '')
>>> dm(u'richard')
('RXRT', 'RKRT')
>>> dm(u'katherine') == dm(u'catherine')
True
更新: 水母也有。在语音编码下。
另一种选择是使用最近发布的软件包FuzzyWuzzy。本博客还介绍了包支持的各种功能。
我一直在用座位极客的Fuzzy Wuzzy,而且非常成功。
https://github.com/seatgeek/fuzzywuzzy
具体来说,令牌集比率函数…
他们还写了一篇关于模糊字符串匹配过程的文章:
http://seatgeek.com/blog/dev/fuzzywuzzy-fuzzy-string-matching-in-python
谷歌也有自己的Google -diff-match-patch(“目前在Java, JavaScript, c++和Python中可用”)。
(不能评论它,因为我自己只使用python的difflib)
Levenshtein Python扩展和C库。
https://github.com/ztane/python-Levenshtein/
Levenshtein Python C扩展模块包含用于快速的函数 计算 - Levenshtein(编辑)距离,编辑操作 -字符串相似度 -近似中值字符串,通常字符串平均 -字符串序列和集相似度 它支持普通字符串和Unicode字符串。
$ pip install python-levenshtein
...
$ python
>>> import Levenshtein
>>> help(Levenshtein.ratio)
ratio(...)
Compute similarity of two strings.
ratio(string1, string2)
The similarity is a number between 0 and 1, it's usually equal or
somewhat higher than difflib.SequenceMatcher.ratio(), becuase it's
based on real minimal edit distance.
Examples:
>>> ratio('Hello world!', 'Holly grail!')
0.58333333333333337
>>> ratio('Brian', 'Jesus')
0.0
>>> help(Levenshtein.distance)
distance(...)
Compute absolute Levenshtein distance of two strings.
distance(string1, string2)
Examples (it's hard to spell Levenshtein correctly):
>>> distance('Levenshtein', 'Lenvinsten')
4
>>> distance('Levenshtein', 'Levensthein')
2
>>> distance('Levenshtein', 'Levenshten')
1
>>> distance('Levenshtein', 'Levenshtein')
0