我正在寻找一种在Python中实现字符串相似度度量函数的高效方法(或提供Python绑定的库)。
我想比较大小为10kb的字符串,不能采取逐行比较等捷径,需要比较整个字符串。我并不关心使用哪种确切的度量标准,只要结果合理且计算速度快即可。以下是我迄今为止尝试过的内容:
- 标准库中的difflib.SequenceMatcher。ratio()可以得到良好的结果,但对于10kb文本需要100ms以上。quick_ratio()只需一半的时间,但结果有时偏离真实值。 - python-Levenshtein:Levenshtein是我的用例中可以接受的指标,但Levenshtein.ratio('foo', 'bar')与SequenceMatcher相比并不更快。
我想比较大小为10kb的字符串,不能采取逐行比较等捷径,需要比较整个字符串。我并不关心使用哪种确切的度量标准,只要结果合理且计算速度快即可。以下是我迄今为止尝试过的内容:
- 标准库中的difflib.SequenceMatcher。ratio()可以得到良好的结果,但对于10kb文本需要100ms以上。quick_ratio()只需一半的时间,但结果有时偏离真实值。 - python-Levenshtein:Levenshtein是我的用例中可以接受的指标,但Levenshtein.ratio('foo', 'bar')与SequenceMatcher相比并不更快。
在我开始对pypi上提供字符串相似度测量函数的每个库进行基准测试之前,也许你可以给我指点方向?如果可能的话,我希望将单个比较的时间缩短到不到10毫秒(在常规硬件上)。
10kB = 10240 B -> 10240^2 = 104.857.600
, 对我来说100ms看起来非常快。 - sascha