Инструменты для сопоставления данных имени/адреса [закрыто]

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

Вопрос

Вот интересная проблема.

У меня есть база данных Oracle с информацией об имени и адресе, которую необходимо поддерживать в актуальном состоянии.

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

Не существует какого-либо уникального идентификатора, который можно было бы использовать для связывания записей, и качество данных не всегда хорошее — всегда будут опечатки, люди будут использовать разные имена (т.Джо против.Джозеф) и др.

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

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

Решение

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

Например, собственное решение Oracle для этой проблемы — продукт «Oracle Data Quality (ODQ) для Oracle Data Integrator (ODI)», который является частью их стека промежуточного программного обеспечения Fusion.Как следует из названия, ODQ требует ODI (т. е. это дополнительный модуль, который лицензируется отдельно и зависит от ODI).

Пакет решений IBM Websphere (полученный в результате приобретения Ascential) включает в себя Стадия качества.

Business Objects, теперь компания SAP, имеет Качество данных продукт в рамках пакета управления корпоративной информацией (EIM).

Другие основные бренды качества данных включают в себя поток данных (компания SAS) и Программное обеспечение Триллиум (компания Харт-Хэнкс)

Группа Gartner ежегодно публикует «Магический квадрант» по пакетам решений для обеспечения качества данных.Поставщики, получившие хорошие оценки в этих магических квадрантах, обычно предоставляют полный отчет всем зарегистрированным пользователям на своем веб-сайте (пример 1, пример 2).

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

Что касается открытого исходного кода, теперь существует библиотека Python для выполнения такого рода дедупликации записей/разрешения сущностей: Дедуп.

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

Вот обзор как это работает.

Уроки, извлеченные из использования FirstLogic.(Другие продукты должны быть похожими.) Для контекста мы получали файлы из десятков источников, и каждый из них был в разном формате.Нам нужно было знать, кого нужно добавить в нашу базу данных, кого нужно обновить, а кого просто нужно пометить как «в списке».

  1. Я ожидал, что программа просмотрит весь файл и определит, что, скажем, если в столбце A есть фамилии в 98 из 100 строк, то столбец A должен быть столбцом с фамилией.Это не правда;каждая запись обрабатывается индивидуально.

  2. Если вы точно знаете, какие данные находятся в каком поле, вы можете сообщить об этом программе, и она обработает ее.Но если вы не всегда уверены, лучше просто указать всю строку и позволить программе разобраться.Примером этого является поле фамилии, которое содержит что-то вроде «Смит-младший, доктор медицины».Если вы объявите его столбцом фамилии, будет считаться, что фамилия — «Смит-младший, доктор медицинских наук».Но если вы передадите «Джон Смит-младший, доктор медицинских наук» и позволите программе разобраться, она правильно определит все биты.

  3. Некоторые вещи, которые казались очевидными, таковыми не были.Например, FirstLogic изначально не предполагает, что запятая означает «фамилия, имя».На самом деле у него очень большой список фамилий и очень большой список имен, поэтому он полагает, что может просто игнорировать запятую.У нас постоянно возникали проблемы с такими людьми, как «Джон, Томас».А иногда это путалось, потому что то, что нам казалось очевидной фамилией, на самом деле было именем на испанском языке или чем-то в этом роде.

  4. Использовать систему для добавления фиктивных данных сложно.Если у вас есть люди с именами вроде «Тестовая учетная запись» или «TBD», они вообще не будут обработаны — FirstLogic выбросит запись, поскольку не обнаружил ни одного распознаваемого фрагмента данных.

  5. Настроить систему возможно, но не так просто, как говорят продавцы.Есть миллион опций, пользовательских файлов и словарей.Вам придется потратить время, чтобы понять, как это работает, если вы ожидаете, что сможете его настроить.Это похоже на СУБД или инструмент ETL.Это не волшебный черный ящик.

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

  7. Эти инструменты на самом деле не предназначены для обработки списка по основному файлу;они были созданы для операций слияния и очистки.Это возможно (мы делаем это), но для этого необходимо, чтобы вы рассматривали свою базу данных как список (что требует от вас извлечения всех текущих записей в плоский файл).Кроме того, чем больше вы хотите контролировать, какие записи куда помещаются (т.если имя совпадает на 80% и первые две цифры почтового индекса идентичны, то, вероятно, это один и тот же человек и т. д.), тем сложнее будет ваш пакетный процесс.

  8. Наконец, мы поняли, что обработка «Джон Смит» и обработка «Аннабель ДиДжованни» — это очень разные вещи, когда вы пытаетесь определить, действительно ли два человека по разным адресам одинаковы.Вы можете настроить программное обеспечение так, чтобы необычным именам при сопоставлении придавалось больше значения, чем обычным, но у кого есть на это время?Наш процесс сопоставления имеет точность около 80 %, и мы были удовлетворены тем, что вручную обработали оставшиеся 20 %.

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

На моей нынешней работе возникает множество проблем с целостностью данных.Мы стараемся «очистить» данные перед их загрузкой, чтобы обеспечить качество.В настоящее время мы используем данные Melissa Data для очистки имен, адресов и электронных писем.Он неплохо справляется со стандартизацией вещей перед загрузкой.Таким образом, мы можем избежать дублирования данных.

Кроме того, в службах интеграции SQL Server (я знаю, что вы используете Oracle) есть компонент, который выполняет «нечеткое» сопоставление строк, позволяя вам находить близкое совпадение, а не прямое совпадение «один к одному».Это называется нечетким поиском.По сути, он дает вам оценку, показывающую, насколько близки к совпадению два входа...Затем вы можете установить пороговые значения, чтобы указать, насколько близко оно должно быть, чтобы считать его совпадающим (т. е.в пределах 80% или около того).

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

Удачи.

Термин, обозначающий проблему, которую вы хотите решить, — «Связывание записей».

Я не могу порекомендовать конкретное средство.Выполните поиск по запросу «программное обеспечение для связывания записей» или «программное обеспечение для очистки слиянием», и, проведя небольшое исследование, вы сможете найти то, что соответствует вашим потребностям.

Мне удалось найти одно решение с открытым исходным кодом под названием февраль.Этот инструмент был первоначально разработан для сферы биомедицинских исследований, в котором объясняется название «свободно расширяемая биомедицинская связь». Вы можете прочитать больше об этом здесь: «Масштабные параллельные методы для высокопроизводительной связи записей»

Для получения хорошего обзора проблем/решений, связанных с связыванием записей, прочтите «Объединение/очистка и обнаружение дубликатов».

У каждого крупного провайдера есть свое собственное решение.Oracle, IBM, SAS Dataflux и т. д., и каждый претендует на звание лучшего.

Независимая проверенная оценка:

В Центре связи данных Университета Кертина в Австралии было проведено исследование, в котором моделировалось сопоставление 4,4 миллиона записей.Определили, что было у поставщиков с точки зрения точности (количество найденных совпадений и доступных.Количество ложных совпадений)

  1. ДатаМатч Предприятие, Высочайшая точность (>95%), Очень быстро, Низкая стоимость
  2. Этап качества IBM , высокая точность (>90%), очень быстрая, высокая стоимость (>100 тыс. долларов США)
  3. Поток данных SAS, средняя точность (>85%), высокая скорость, высокая стоимость (>100 тыс.)

Это была лучшая независимая оценка, которую мы смогли найти, она была очень тщательной.

Я сделал что-то подобное со списками участников страховой компании.К счастью, у нас был SSN, чтобы определить основного члена, но мне нужно было решить, были ли иждивенцы новыми или уже существующими (только по имени).Я попробовал алгоритм soundex как часть решения, но он, похоже, не отвечал всем требованиям, потому что он, казалось, сопоставлял слишком много разных имен одному и тому же (а многие семьи склонны называть своих детей похожими по звучанию именами).В итоге я просто использовал (я думаю) первые четыре буквы иждивенцев имени имени в качестве уникального идентификатора, и назвал его «достаточно хорошим». Я не знаю, как я справляюсь с семьей Джорджа Формана :-)

Я видел Dataflux в действии, и, по словам нашего «звездного» аналитика данных, это самый точный инструмент «кластеризации» (как его называет Dataflux), который он нашел для связывания имен людей и компаний.Однако это довольно дорого.

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

Одно программное обеспечение, которое могло бы сделать это для вас, - это ФРИЛ.На Яве бесплатно и очень дружелюбно.На сайте есть ссылки на мастер-классы и видеоролики.Он поддерживает подключение к БД, хотя насчет оракула я не уверен.

RecLink может быть другой путь, хотя вам, вероятно, придется приложить больше усилий, чтобы запустить его, поскольку руководств/руководств (насколько мне известно) нет.

Из бесплатных вариантов есть еще РЕЛЕ.

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

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