Нужно больше понимания частичного соотношения фазона - PullRequest
0 голосов
/ 13 декабря 2018

Я использую python fuzzywuzzy на уровне предприятия, чтобы соответствовать 2 строкам.В большинстве случаев он работает нормально, но дает неожиданные результаты в нижеприведенном сценарии:

fuzz.partial_ratio('ja rule:mesmerize','ja rule feat. ashanti:mesmerize') gives output 65

и

fuzz.partial_ratio('ja rule:mesmerize','jennifer lopez feat. ja rule:im real ') gives the output 67

Любое объяснение того, почему оценка во втором матче лучшечем первый матч?

Любая помощь / предложение очень ценится.

1 Ответ

0 голосов
/ 13 декабря 2018

fuzzywuzzy использует расстояние Левенштейна, что означает, что он сравнивает все символы, включая пробелы и символы, такие как «:».

partial_ratio сравнивает две строки, но разрешено обрезать более длинную строку до длины более короткой строки.

В вашем случае более короткая строка равна 'ja rule:mesmerize' с длиной 17.Когда строка сравнивается, более длинная строка обрезается до этого размера.

Учитывая эту информацию, давайте сравним ваши выводы.Мы можем видеть, что первая длинная строка не имеет : в конце 'ja rule', а вторая имеет.Есть много других возможных факторов, но это может быть основной причиной вашего результата.

Я уверен, что более тщательный анализ даст больше информации о счете.Реализация patial_ratio находится здесь https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/fuzz.py#L34.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...