Инструменты для сопоставления данных имени/адреса
Здесь интересная проблема.
У меня есть база данных оракула с информацией о имени и адресе, которая должна сохраняться в актуальном состоянии.
Мы получаем фиды данных из ряда различных источников gov't и должны находить совпадения, а также обновлять ли db данными или создавать новую запись.
Нет никакого уникального идентификатора, который может использоваться для связывания записей вместе, а качество данных не всегда так хорошо - всегда будут опечатки, люди, использующие разные имена (например, Джо против Джозефа), и т.д.
Мне было бы интересно услышать от всех, кто работал над этим типом проблемы, прежде чем они решат это или, по крайней мере, автоматизированные части.
Ответы
Ответ 1
Каждая из основных компаний-разработчиков программного обеспечения, которые активны в этом пространстве, предлагает комплекты решений, которые обрабатывают парсинг имен и адресов, стандартизацию данных, дедупликацию или сопоставление записей, запись связывания/слияния, выживаемость и т.д. Тем не менее, все они немного дорогие.
Например, собственное решение Oracle для этой проблемы - это продукт Oracle Data Quality (ODQ) для Oracle Data Integrator (ODI), который является частью их стека Fusion Middleware. Как следует из названия, ODQ требует ODI (т.е. Это дополнительный модуль, который лицензируется отдельно и зависит от ODI).
Набор решений IBM Websphere (полученный через их приобретение Ascential) включает QualityStage.
Business Objects, теперь компания SAP, имеет продукт качества данных в своем пакете Enterprise Information Management (EIM).
Другие основные бренды качества данных включают Dataflux (компания SAS) и Trillium Software (компания Harte-Hanks)
Группа Gartner выпускает ежегодный магический квадрант для наборов решений для обеспечения качества данных. Поставщики, которые хорошо оценивают эти Magic Quadrant, обычно делают весь отчет доступным онлайн для зарегистрированных пользователей на своем веб-сайте (пример 1, пример 2).
Ответ 2
На фронте с открытым исходным кодом теперь есть библиотека python для такого разрешения дедупликации/сущности записи: Dedupe.
Требуется навыки программирования, но он бесплатный и может работать на ноутбуке, в отличие от огромного сервера.
Вот обзор как это работает.
Ответ 3
Уроки, извлеченные из использования FirstLogic. (Другие продукты должны быть похожими.) Для контекста мы получали файлы из десятков источников, и каждый из них был бы в другом формате. Нам нужно было знать, кто должен быть добавлен в нашу базу данных, кто нуждается в обновлении, и кто просто должен быть помечен как "в списке".
-
Я ожидал, что программное обеспечение посмотрит на весь файл и определит, что - скажем - если столбец А имел имена в 98 из 100 строк, то столбец А должен быть столбцом имени. Это неправда; каждая запись обрабатывается индивидуально.
-
Если вы точно знаете, какие данные находятся в каком поле, вы можете указать программное обеспечение, с которым оно будет работать. Но если вы не всегда уверены, что вам лучше просто дать ему целую цепочку и позволить программному обеспечению понять это. Примером этого является поле последнего имени, которое содержит нечто вроде "Smith Jr MD". Если вы объявите его столбцом с фамилией, он будет считать, что фамилия "Smith Jr MD". Но если вы передадите "John Smith Jr MD" и позвольте программному обеспечению понять, что он правильно идентифицирует все биты.
-
Некоторые вещи, которые казались очевидными, не были. Например, из коробки FirstLogic не предполагает, что запятая означает "фамилия, имя". На самом деле у него большой список имен и большой список первых имен, поэтому он показывает, что он может просто игнорировать запятую. У нас постоянно возникали проблемы с такими людьми, как "Джон, Томас". И иногда это путается, потому что то, что выглядело как очевидная фамилия для нас, на самом деле было первым именем на испанском языке или чем-то.
-
Трудно использовать систему для добавления фиктивных данных. Если у вас есть люди, называемые такими вещами, как "Test Account" или "TBD", они не будут обрабатываться вообще - FirstLogic выкинет запись, потому что она не обнаружила никаких битов данных, которые она распознала.
-
Индивидуальная настройка системы возможна, но не так просто, как люди, занимающиеся продажами, заставляют ее звучать. Существует миллион опций и пользовательских файлов и словарей. Вам нужно будет потратить время, чтобы понять, как это работает, если вы планируете настроить его. Это похоже на RDBMS или инструмент ETL. Это не волшебный черный ящик.
-
В нем также есть тонна функций качества данных, которые помогают оправдать покупку программного обеспечения, но для этого требуются специальные усилия для изучения и применения.
-
Инструменты на самом деле не предназначены для обработки списка по главному файлу; они были созданы для операций слияния. Это возможно (мы это делаем), но это требует, чтобы вы обрабатывали вашу базу данных списком (который требует, чтобы вы извлекали все живые записи в плоский файл). Кроме того, чем больше вы хотите контролировать, по каким записям идут куда (т.е. Если имя соответствует 80%, а первые две цифры почтового индекса идентичны, то это, вероятно, один и тот же человек и т.д.), Сложный ваш пакетный процесс будет.
-
Наконец, мы поняли, что обработка "John Smith" и обработка "Annabelle DiGiovanni" - это совсем другие звери, когда вы пытаетесь определить, действительно ли два человека на разных адресах одинаковы. Вы можете точно настроить программное обеспечение так, чтобы необычным именам присваивался больше веса по сравнению с обычными именами, но у кого есть время? Наш процесс согласования примерно на 80% точнее, и мы были удовлетворены обработкой оставшихся 20% вручную.
Не думайте об этом как о инструменте для автоматического согласования. Подумайте об этом как о инструменте, позволяющем вашим человеческим процессорам данных быть более продуктивными. Таким образом, вы настроили его так, чтобы, если вы набрали 80% точности, это громкий успех, а не короткий знак.
Ответ 4
На моей текущей работе у нас много проблем с целостностью данных. Мы пытаемся "счистить" данные перед загрузкой, чтобы обеспечить качество. В настоящее время мы используем Melissa Data для очистки имен, адресов и электронной почты. Это очень хорошая работа, стандартизирующая вещи, прежде чем загружать ее. Таким образом, мы можем избежать дублирования данных.
Кроме того, службы интеграции SQL Server (я знаю, что вы используете Oracle) имеет компонент, который выполняет "нечеткое" сопоставление по строкам, что позволяет вам найти совпадение, а не прямое совпадение. Он называется Fuzzy Lookup. В основном это дает вам оценку, рассказывающую вам, насколько близко к совпадению два входа... Затем вы можете установить пороговые значения, чтобы сказать, насколько близко нужно считать это совпадением (т.е. Не более 80% или что-то еще).
В прошлом я также использовал SOUNDEX, чтобы определить, были ли имена одинаковыми при определении дубликатов. Существует множество реализаций SOUNDEX.
Удачи.
Ответ 5
Термин проблемы, которую вы хотите решить, - это "Связывание записей".
Я не могу рекомендовать конкретный инструмент. Сделайте поиск по "программному обеспечению для записи ссылок" или "слить программное обеспечение для очистки", и при небольшом исследовании вы должны найти что-то, что соответствует вашим потребностям.
Мне удалось найти одно решение с открытым исходным кодом под названием Febrl. Этот инструмент был первоначально разработан для сферы биомедицинских исследований, в котором объясняется название "Свободно расширяемая биомедицинская связь". Подробнее об этом вы можете прочитать здесь: Параллельные методы большого масштаба для высокопроизводительной привязки записей
Для хорошего обзора проблем/решений, связанных с записью ссылок, читайте "Объединить/Очистить и Дублировать обнаружение" .
Ответ 6
У каждого крупного провайдера есть свое собственное решение. Oracle, IBM, SAS Dataflux и т.д., И каждый из них претендует на лучшее.
Независимая проверенная оценка:
Было проведено исследование, проведенное в Центре Университета Кертина по связям с данными в Австралии, которое смоделировало соответствие 4,4 миллиона записей. Определено, какие провайдеры имеют с точки зрения точности (Количество найденных совпадений против доступных. Количество ложных совпадений)
- DataMatch Enterprise, максимальная точность ( > 95%), очень быстрая, низкая стоимость
- Уровень качества IBM, высокая точность ( > 90%), очень быстрая, высокая стоимость ( > $100K)
- поток данных SAS, средняя точность ( > 85%), быстрая, высокая стоимость ( > 100K)
Это была лучшая независимая оценка, которую мы могли найти, была очень тщательной.
Ответ 7
Я сделал что-то подобное в списках регистрации членства в страховой компании. К счастью, у нас был SSN, чтобы определить основного участника, но мне пришлось решать, были ли иждивенцы новыми или существующими (по одному имени). Я попробовал алгоритм soundex как часть решения, но он, похоже, не соответствовал законопроекту, потому что он, похоже, отображал слишком много разных имен для одного и того же (и многие семьи обычно называют своих детей похожими именами). В итоге я просто использовал (я думаю) первые четыре буквы имени иждивенцев как уникальный идентификатор и назвал его "достаточно хорошим". Я не знаю, как я буду обращаться с семьей Джорджа Формана: -)
Ответ 8
Я видел Dataflux в действии, и, по мнению нашего "звездного" аналитика данных, это самый точный инструмент для "кластеризации" (как называет его Dataflux), который он нашел для связывания имен людей и компаний. Это довольно дорого, однако.
Ответ 9
Это классическая проблема записи связей. Опечатки, пропущенные буквы и т.д. Могут обрабатываться с вероятностным подходом, определяя набор правил блокировки.
Одно программное обеспечение, которое может сделать это хорошо для вас, - FRIL. В Java, свободный и очень дружелюбный. На веб-сайте есть ссылки на учебник и видео. Он поддерживает связь с БД, хотя я не уверен в оракуле.
RecLink может быть другим способом, хотя вам, вероятно, придется усердно работать, чтобы запустить его, поскольку есть никаких руководств/учебных пособий (насколько мне известно).
Из бесплатных опций также есть RELAIS.
Ответ 10
Я использовал dataladder.com для большого набора данных. Они сделали фантастическую работу, соответствующую различным базам данных с очень разными написаниями и пробив много дубликатов.