Как сравнить два заголовка (строки), чтобы увидеть, относятся ли они к одной книге?
Я пытаюсь сравнить два названия (из разных источников) одной и той же книги, для каждой книги в огромном списке книг, чтобы увидеть, относятся ли они к одной и той же книге или нет.
Вот небольшой фон. Я работаю стажером в библиотеке. Персонал здесь отсканировал номер доступа и номер ISBN каждой книги и передал их мне в виде файла csv. Из-за человеческой ошибки некоторые книги получили неправильный ISBN. Я должен найти эти ошибки.
Для каждого регистрационного номера я знаю правильное название из нашего программного обеспечения для управления библиотекой. Для каждого ISBN я вытащил названия из интернета. Теперь я хочу сравнить два названия, чтобы узнать, был ли отсканирован ISBN другой книги вместо реального.
В настоящее время я использую SequenceMatcher
класс в difflib
сделай это:
def similar(seq1, seq2, strength):
return (difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio()
> strength)
Но я получаю много ложных срабатываний, как:
"Сети связи: фундаментальные концепции и ключевые архитектуры" => "Сети связи"
"Эксперименты в инженерной физике; лабораторное пособие и рабочая тетрадь> с Viva Voce" => "Эксперименты в инженерной физике"
"Вода: наука и проблемы" => "Вода V1 - V4"
"Схема теории Шаума и проблемы статистики" => "Теория и> проблемы вероятности и статистики"
Есть лучший способ сделать это?
Изменить: Вот вывод моей программы со всеми ложными срабатываниями. Я использовал "##" в качестве разделителя.