Мне нужно автоматически сопоставлять названия продуктов (камеры, ноутбуки, телевизоры и т.д.), которые поступают из разных источников в каноническое имя в базе данных.
Например, "Canon PowerShot a20IS" , "NEW powershot A20 IS от Canon и Цифровая камера Canon PS A20IS должны соответствовать "Canon PowerShot A20 IS" . Я работал с levenshtein расстоянием с некоторыми добавленными эвристиками (удаление очевидных общих слов, назначение более высоких издержек на количество изменений и т.д.), Что работает в некоторой степени, но недостаточно хорошо.
Основная проблема заключается в том, что даже однобуквенные изменения в релевантных ключевых словах могут иметь огромное значение, но нелегко определить, какие из них являются ключевыми словами. Рассмотрим, например, три названия продуктов:
Lenovo T400
Lenovo R400
Новый Lenovo T-400, Core 2 Duo
Первые два являются смехотворно подобными строками по любому стандарту (ok, soundex может помочь выделить T и R в этом случае, но имена могут также быть 400T и 400R), первая и третья довольно далеко друг от друга, поскольку строки, но являются одним и тем же продуктом.
Очевидно, что алгоритм сопоставления не может быть точным на 100%, моя цель - автоматически сопоставить примерно 80% имен с высокой степенью уверенности.
Любые идеи или ссылки очень ценятся