Нечеткое сопоставление строк в Python с использованием весов

#python #pandas #nlp #salesforce #fuzzy-comparison

Вопрос:

У меня есть записи Salesforce, которые я хочу дедуплицировать, используя методы нечеткого сопоставления строк с взвешиванием по разным полям.

Я хочу настроить сценарии, такие как взвешивания по определенным столбцам в строке, которые увеличивают или уменьшают общую метрику сходства. Существенное изменение веса позволяет мне расставлять приоритеты в своих колонках на разных уровнях.

Я описываю сценарии как набор правил для того, как я хочу сравнивать записи.

Ниже приведен пример набора данных:

Первый фамилия Электронная почта
Мэтт Метро name@example.com
Алекс Два Три
Мэтью Meos name@example.com

В этом сценарии у нас есть 3 функции для каждой строки данных.

Каждая функция имеет вес 10, что дает мне общий балл 30

Особенность Счет
Имя Кулака 10
фамилия 10
Электронная почта 10
весь 30

Таким образом, точное соответствие по всем трем полям даст результат 30/30 (т. е. 100% — ная оценка сходства).

Теперь предположим, что я хочу, чтобы вес электронной почты был в 3 раза мощнее. Модель должна выглядеть так:

Особенность Счет
Имя Кулака 10
фамилия 10
Электронная почта 30
весь 50

Таким образом, точное совпадение с электронной почтой будет иметь значительно больший вес в оценке сходства.

Я пытаюсь выяснить пакеты Python, которые могут помочь мне достичь этого динамического взвешивания, и алгоритм, который я должен использовать для сходства.

For the Algorithm, I was thinking of using

  • Расстояние Левенштейна

Для взвешивания различных полей между записями:

  • Фрейм данных Python

Каков наиболее эффективный способ достижения такого типа нечеткого сопоставления строк в Python?