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


3

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

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 ... 

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

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

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

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

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

Спасибо.

3

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

Одно измерение расстояния может быть фонетическим. Другой, который вы можете рассмотреть, это Levenshtein or edit distance между entires, который попытается измерить опечатки.

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

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

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

Я надеюсь, что это поможет.


2

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


3

Это звучит как Customer Data Integration проблем. Поиск по этому термину, и вы можете найти дополнительную информацию. Кроме того, просуньте внутри The Data Warehousing Institude, и вы также можете найти ответы на них.

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


3

Я должен был сделать что-то подобное раньше, и что я сделал, использовал фонетический поиск double metaphone.

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

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


1

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


0

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


0

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