Перекрестная ссылка на базы данных на нечетких данных

В настоящее время я работаю над проектом, в котором мне нужно сопоставить большое количество сгенерированных пользователями имен с отдельным списком таких же имен в каноническом формате. Проблема заключается в том, что сгенерированные пользователем имена содержат множество орфографических ошибок, сокращений, а также просто неверные данные, что затрудняет перекрестную ссылку с каноническими данными. Любые предложения о том, как это сделать?

Это не обязательно делать в реальном времени, и в этом случае точность важнее скорости.

Текущие идеи для этого:

  1. Выполните нечеткий поиск введенного пользователем имени в канонической базе данных, используя существующую реализацию поиска, такую ​​как Lucene или Sphinx, которая, я полагаю, использует для этого что-то вроде расстояния Левенштейна.
  2. Перекрестная ссылка на хеш SOUNDEX (который предположительно вычисляется по звуку имени, а не по буквам) вместо использования фактического имени.
  3. Некоторая комбинация вышеперечисленного

Кто-нибудь имеет какие-либо отзывы по любому из них или их собственные идеи?

Одна из моих проблем заключается в том, что ни один из вышеперечисленных методов не будет очень хорошо обрабатывать сокращения. Может ли кто-нибудь указать мне направление для некоторых методов машинного обучения на поиск расширенных сокращений (или сказать, что я сумасшедший)? Заранее спасибо.

1 ответ

Решение

Во-первых, я бы добавил к вашему списку методы, которые обсуждались на посту Питера Норвига по исправлению орфографии

Во-вторых, я бы спросил, о каких "пользовательских именах" вы говорите. Имея дело с обоими, я считаю, что эвристика, которую вы бы использовали для названий улиц, несколько отличается от эвристики для имен людей. (В качестве простого примера, "Dr" расширяется до "Drive" или "Doctor"?)

В-третьих, я бы посмотрел на комбинацию с использованием тестирования, чтобы установить набор коэффициентов для объединения результатов различных методов.

Другие вопросы по тегам