Нечеткое совпадение строк в Python

У меня есть 2 списка из более чем миллиона имен с немного различными соглашениями об именах. Цель здесь - сопоставить те записи, которые похожи, с логикой 95% достоверности.

Мне стало известно, что есть библиотеки, которые я могу использовать, такие как модуль FuzzyWuzzy в Python.

Однако, с точки зрения обработки, кажется, что потребуется слишком много ресурсов, чтобы каждая строка в 1 списке сравнивалась с другой, что в этом случае, по-видимому, требует 1 миллион, умноженный на еще один миллион итераций.

Есть ли другие более эффективные методы для этой проблемы?

ОБНОВИТЬ:

Поэтому я создал функцию группирования и применил простую нормализацию для удаления пробелов, символов и преобразования значений в нижний регистр и т. Д.

for n in list(dftest['YM'].unique()):
    n = str(n)
    frame = dftest['Name'][dftest['YM'] == n]
    print len(frame)
    print n
    for names in tqdm(frame):
            closest = process.extractOne(names,frame)

Используя питонов панда, данные загружаются в более мелкие группы, сгруппированные по годам, а затем с помощью модуля FuzzyWuzzy,process.extractOne используется, чтобы получить лучший матч.

Результаты все еще несколько разочаровывают. Во время теста приведенный выше код используется для тестового фрейма данных, содержащего только 5 тысяч имен, и занимает почти целый час.

Тестовые данные разделены на.

названиеГод месяц рождения

И я сравниваю их по ведрам, где их YM находятся в одном ведре.

Может ли проблема быть из-за модуля FuzzyWuzzy, который я использую? Ценю любую помощь.

Ответы на вопрос(3)

Ваш ответ на вопрос