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