Перекрестная ссылка на базы данных на нечетких данных
В настоящее время я работаю над проектом, в котором мне нужно сопоставить большое количество сгенерированных пользователями имен с отдельным списком таких же имен в каноническом формате. Проблема заключается в том, что сгенерированные пользователем имена содержат множество орфографических ошибок, сокращений, а также просто неверные данные, что затрудняет перекрестную ссылку с каноническими данными. Любые предложения о том, как это сделать?
Это не обязательно делать в реальном времени, и в этом случае точность важнее скорости.
Текущие идеи для этого:
- Выполните нечеткий поиск введенного пользователем имени в канонической базе данных, используя существующую реализацию поиска, такую как Lucene или Sphinx, которая, я полагаю, использует для этого что-то вроде расстояния Левенштейна.
- Перекрестная ссылка на хеш SOUNDEX (который предположительно вычисляется по звуку имени, а не по буквам) вместо использования фактического имени.
- Некоторая комбинация вышеперечисленного
Кто-нибудь имеет какие-либо отзывы по любому из них или их собственные идеи?
Одна из моих проблем заключается в том, что ни один из вышеперечисленных методов не будет очень хорошо обрабатывать сокращения. Может ли кто-нибудь указать мне направление для некоторых методов машинного обучения на поиск расширенных сокращений (или сказать, что я сумасшедший)? Заранее спасибо.
1 ответ
Во-первых, я бы добавил к вашему списку методы, которые обсуждались на посту Питера Норвига по исправлению орфографии
Во-вторых, я бы спросил, о каких "пользовательских именах" вы говорите. Имея дело с обоими, я считаю, что эвристика, которую вы бы использовали для названий улиц, несколько отличается от эвристики для имен людей. (В качестве простого примера, "Dr" расширяется до "Drive" или "Doctor"?)
В-третьих, я бы посмотрел на комбинацию с использованием тестирования, чтобы установить набор коэффициентов для объединения результатов различных методов.