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