我正在寻找Python中字符串相似性度量函数的有效实现(或者提供Python绑定的lib)。
我想比较平均10kb的字符串,我不能采取任何快捷方式,比如逐行比较,我需要比较整个事情。我不太关心,只要结果合理且计算速度快,将使用什么样的指标。这是我到目前为止所尝试的内容:
difflib.SequenceMatcher
。 ratio()
可以获得良好的效果,但对于10kb文本则需要> 100毫秒。 quick_ratio()
只花费一半的时间,但结果有时远远超过真正的价值。python-Levenshtein
:levenshtein是我的用例可接受的指标,但Levenshtein.ratio('foo', 'bar')
并不比SequenceMatcher
快。在我开始对pypi上的每个lib进行基准测试之前,它提供了测量字符串相似性的函数,也许你可以指出我正确的方向?如果可能的话,我喜欢将单次比较的时间缩短到不到10毫秒(在商品硬件上)。
答案 0 :(得分:0)
edlib
似乎对我的用例足够快。
这是一个带有Python绑定的C ++库,可以在不到10毫秒的时间内(在我的机器上)计算文本的Levehnstein距离<100kb。 10kb文本在~1ms内完成,比setInterval
快100倍。