Я ищу эффективную реализацию метрической функции сходства строк в Python (или библиотеки, которая обеспечивает привязки Python).
Я хочу сравнить строки со средним размером 10 КБ, и я могу 'Я не хочу сравнивать все по порядку, как сравнивать построчно.Меня не волнует, какая именно метрика будет использоваться, если результаты будут разумными и вычисления будут быстрыми.Вот что я пробовал до сих пор:
difflib.SequenceMatcher
из стандартной библиотеки lib.ratio()
дает хорошие результаты, но занимает> 100 мс для текста размером 10 КБ.quick_ratio()
занимает только половину времени, но результаты иногда далеки от реального значения. python-Levenshtein
: левенштейн является приемлемым показателем для моего случая использования, но Levenshtein.ratio('foo', 'bar')
не быстрее, чем SequenceMatcher
.
Прежде чем я начну бенчмаркинг каждой библиотеки на pypi, которая предоставляет функции для измерения сходства строк, может быть, вы можете указать мне правильное направление?Я бы хотел, если это возможно, сократить время на одно сравнение до менее 10 мс (на обычном оборудовании).