как определить, представляет ли запись в каждом источнике одно и то же лицо - PullRequest
3 голосов
/ 23 сентября 2008

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

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, чтобы понять, насколько серьезной может быть проблема. Во-вторых, ослабьте критерии сопоставления и посчитайте, сколько записей можно сопоставить, но здесь возникает проблема: как сделать так, чтобы ослабить критерии сопоставления, не создавая слишком шума и не ограничивая слишком много?

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

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

Спасибо.

Ответы [ 7 ]

3 голосов
/ 24 сентября 2008

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

Одно измерение расстояния может быть фонетическим. Другой вариант, который вы могли бы рассмотреть - это Левенштейн или расстояние редактирования между входами, которое будет пытаться измерить опечатки.

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

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

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

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

3 голосов
/ 23 сентября 2008

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

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

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

3 голосов
/ 23 сентября 2008

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

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

2 голосов
/ 23 сентября 2008

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

1 голос
/ 25 сентября 2008

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

0 голосов
/ 11 ноября 2008

Похоже, у вас проблема с связью записей . Вы можете использовать ссылки в ссылке.

0 голосов
/ 26 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...