как определить, представляет ли запись в каждом источнике одно и то же лицо

StackOverflow https://stackoverflow.com/questions/122990

Вопрос

У меня есть несколько источников таблиц с персональными данными, например:

SOURCE 1
ID, FIRST_NAME, LAST_NAME, FIELD1, ...
1, jhon, gates ...

SOURCE 2
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
1, jon, gate ...

SOURCE 3
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
2, jhon, ballmer ...

Итак, если предположить, что записи с идентификатором 1 из источников 1 и 2 принадлежат одному и тому же человеку, моя проблема как определить, представляет ли запись в каждом источнике одного и того же человека.Кроме того, убедитесь, что не все записи существуют во всех источниках.Все имена написаны в основном на испанском языке.

В этом случае точное соответствие необходимо ослабить, поскольку мы предполагаем источники данных не были тщательно проверены против официального бюро идентификации страны.Также нам нужно предположить опечатки являются обычным явлением, потому что характер процессов сбора данных.Причём количество записей в каждом источнике около 2-3 миллионов...

Наша команда думала примерно так:во-первых, принудительно установите точное соответствие в выбранных полях, таких как ID NUMBER и NAMES, чтобы понять, насколько сложной может быть проблема.Во-вторых, ослабьте критерии соответствия и подсчитайте, сколько еще записей можно сопоставить, но именно здесь возникает проблема: как сделать, чтобы ослабить критерии соответствия, не создавая слишком шума и не слишком ограничивая?

Какой инструмент может быть более эффективным для решения этой проблемы? Например, знаете ли вы о каком-то конкретном расширении в каком-то ядре базы данных, поддерживающем такое сопоставление?Знаете ли вы о таких умных алгоритмах, как Саундекс справиться с этим приблизительным соответствием, но для испанских текстов?

Любая помощь будет оценена по достоинству!

Спасибо.

Это было полезно?

Решение

Суть проблемы состоит в том, чтобы вычислить одну или несколько мер расстояния между каждой парой записей, а затем считать их одинаковыми, когда одно из расстояний меньше определенного приемлемого порога.Ключевым моментом является настройка анализа, а затем изменение приемлемого расстояния до тех пор, пока вы не достигнете того, что вы считаете лучшим компромиссом между ложноположительными и ложноотрицательными результатами.

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

Если у вас есть разумное представление о том, сколько человек у вас должно быть, то ваша цель — найти золотую середину, в которой вы получите нужное количество человек.Сделайте сопоставление слишком размытым, и его будет слишком мало.Сделайте это ограничительным, и у вас их будет слишком много.

Если вы примерно знаете, сколько записей должно быть у человека, вы можете использовать это в качестве показателя, чтобы увидеть, когда вы приблизитесь.Или вы можете разделить количество записей на среднее количество записей для каждого человека и получить приблизительное количество людей, на которых вы ориентируетесь.

Если у вас нет цифр, которые можно было бы использовать, вам остается выбирать группы записей из вашего анализа и вручную проверять, похожи ли они на одного и того же человека или нет.Так что это предположение и проверка.

Надеюсь, это поможет.

Другие советы

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

Редактировать: Кроме того, вот статья о фонетическом сопоставлении испанского языка, которая может вас заинтересовать.

Мне приходилось делать что-то подобное раньше, и я использовал двойной метафон фонетический поиск по именам.

Однако прежде чем сравнивать имена, я попытался нормализовать любые различия между именем и псевдонимом, найдя имя в созданной мной таблице псевдонимов.(Я заполнил таблицу данными переписи населения, которые нашел в Интернете.) Итак, люди по имени Боб стали Робертами, Алекс стал Александром, Билл стал Уильямом и т. д.

Редактировать:Double Metaphone был специально разработан, чтобы быть лучше Soundex и работать на языках, отличных от английского.

SSIS, попробуйте использовать преобразование «Нечеткий поиск»

Просто чтобы добавить некоторые подробности для решения этой проблемы, я нашел эти модули для Postgresql 8.3.

Вы можете попытаться канонизировать имена, сравнив их со словарем.
Это позволит вам обнаружить некоторые распространенные опечатки и исправить их.

Мне кажется, у тебя есть связь записи проблема.Вы можете использовать ссылки по ссылке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top