оценка сходства между фразами - PullRequest
0 голосов
/ 11 апреля 2019

Расстояние Левенштейна - это подход для измерения разницы между словами, но не для фраз.

Есть ли хороший показатель расстояния для измерения различий между фразами?

Например, если фраза 1 состоит из n слов x1 x2 x_n, а фраза 2 состоит из m слов y1 y2 y_m. Я думаю, что они должны быть нечетко выровнены по словам, тогда выровненные слова должны иметь оценку того, насколько они похожи, и какое-то наказание за пробел должно быть применено для невыровненных слов. Эти положительные оценки и отрицательные оценки должны быть каким-либо образом агрегированы. Похоже, в этом есть какая-то эвристика.

Существует ли существующее решение для измерения сходства фраз? Python предпочтительнее, но другое решение тоже подойдет. Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Вы также можете измерить сходство между двумя фразами, используя расстояние Левенштейна, рассматривая каждое слово как отдельный элемент. Если у вас есть строки неравного размера, вы можете использовать алгоритм Смита-Уотермана или Иглмана-Вунша. Эти алгоритмы широко используются в биоинформатике, а их реализацию можно найти в пакете biopython. Вы также можете токенизировать слова во фразах и измерить частоту каждого токена в каждой фразе, что приведет к массиву частот для каждой фразы. Из этого массива вы можете измерить парное сходство, используя любое векторное расстояние, такое как евклидово расстояние или косинусное сходство. Маркировка фраз может быть выполнена с помощью пакета nltk, а расстояния могут быть измерены с помощью scipy. Надеюсь, поможет.

0 голосов
/ 11 апреля 2019

Взгляните на FuzzyWuzzy :

>>> from fuzzywuzzy import fuzz

>>> s1 = "this is a sentence used for testing"
>>> s2 = "while this is another sentence also used for testing"
>>> s3 = "I am a completely unrelated string"

>>> fuzz.partial_ratio(s1, s2)
80
>>> fuzz.partial_ratio(s1, s3)
52
>>> fuzz.partial_ratio(s2, s3)
43

Также включены другие способы сравнения, учитывающие неупорядоченные токены и т. Д.

...