Pregunta

He aquí un problema interesante.

Tengo una base de datos Oracle con información de nombre y dirección que debo mantener actualizada.

Recibimos fuentes de datos de varias fuentes gubernamentales diferentes y necesitamos determinar las coincidencias y si actualizar o no la base de datos con los datos, o si es necesario crear un nuevo registro.

No existe ningún tipo de identificador único que pueda usarse para unir registros, y la calidad de los datos no siempre es tan buena: siempre habrá errores tipográficos, personas que usan nombres diferentes (es decir,joe vs.José), etc.

Me interesaría saber de cualquiera que haya trabajado en este tipo de problema antes sobre cómo lo resolvieron, o al menos automatizaron partes del mismo.

¿Fue útil?

Solución

Cada una de las principales empresas de software que están activas en este espacio ofrece conjuntos de soluciones que manejan el análisis de nombres y direcciones, la estandarización de datos, la deduplicación o comparación de registros, la vinculación/fusión de registros, la supervivencia, etc.Aunque todos son un poco caros.

Por ejemplo, la solución propia de Oracle para este problema es el producto "Calidad de datos de Oracle (ODQ) para Oracle Data Integrator (ODI)," que es parte de su pila Fusion Middleware.Como su nombre lo indica, ODQ requiere ODI (es decir, es un módulo complementario que tiene una licencia por separado y depende de ODI).

El conjunto de soluciones Websphere de IBM (obtenido a través de su adquisición de Ascential) incluye Etapa de calidad.

Business Objects, ahora una empresa de SAP, tiene una Calidad de datos producto bajo su suite Enterprise Information Management (EIM).

Otras marcas importantes de calidad de datos incluyen flujo de datos (una empresa SAS) y Software Trillium (una empresa Harte-Hanks)

El Grupo Gartner publica un Cuadrante Mágico anual para conjuntos de soluciones de calidad de datos.Los proveedores que obtienen buenas calificaciones en estos Cuadrantes Mágicos generalmente ponen el informe completo a disposición de los usuarios registrados en línea en su sitio web (Ejemplo 1, ejemplo 2).

Otros consejos

En el frente del código abierto, ahora existe una biblioteca de Python para realizar este tipo de deduplicación de registros/resolución de entidades: Deduplicar.

Requiere conocimientos de programación, pero es gratuito y se puede ejecutar en una computadora portátil, a diferencia de un servidor enorme.

Aquí hay una descripción general de cómo funciona.

Lecciones aprendidas del uso de FirstLogic.(Otros productos deberían ser similares). Para el contexto, obtuvimos archivos de docenas de fuentes y cada una estaría en un formato diferente.Necesitábamos saber quién debía agregarse a nuestra base de datos, quién debía actualizarse y quién simplemente debía marcarse como "en la lista".

  1. Esperaba que el software examinara un archivo completo y determinara que, digamos, si la columna A tenía apellidos en 98 de 100 filas, entonces la columna A debe ser la columna de apellido.Eso no es cierto;cada registro se procesa individualmente.

  2. Si sabe exactamente qué datos hay en qué campo, entonces puede decírselo al software y éste los manejará.Pero si no siempre estás seguro, es mejor que le des toda la cadena y dejes que el software lo resuelva.Un ejemplo de esto es un campo de apellido que contiene algo como "Smith Jr MD".Si declara que es la columna de apellido, asumirá que el apellido es "Smith Jr MD".Pero si pasa "John Smith Jr MD" y deja que el software lo resuelva, identificará correctamente todos los bits.

  3. Algunas cosas que parecían obvias no lo eran.Por ejemplo, FirstLogic no asume que una coma significa "apellido, nombre".En realidad, tiene una gran lista de apellidos y una gran lista de nombres, por lo que supone que puede ignorar la coma.Constantemente teníamos problemas con gente como "John, Thomas".Y a veces se confundía porque lo que nos parecía un apellido obvio era en realidad un nombre en español o algo así.

  4. Es difícil utilizar el sistema para agregar datos ficticios.Si tiene personas con nombres como "Cuenta de prueba" o "TBD", no se procesarán en absoluto; FirstLogic descartará el registro porque no encontró ningún fragmento de datos que reconociera.

  5. Personalizar el sistema es posible, pero no tan fácil como dice el personal de ventas.Hay un millón de opciones y archivos y diccionarios personalizados.Deberá invertir tiempo para comprender cómo funciona si espera poder personalizarlo.Es como un RDBMS o una herramienta ETL.No es una caja negra mágica.

  6. También tiene un montón de características de calidad de datos que ayudan a justificar la compra del software, pero que requieren un esfuerzo dedicado para aprender y aplicar.

  7. Las herramientas no están realmente diseñadas para procesar una lista con respecto a un archivo maestro;fueron creados para operaciones de fusión-purga.Es posible (lo estamos haciendo), pero requiere que trate su base de datos como una lista (lo que requiere que extraiga todos los registros activos en un archivo plano).Además, cuanto más control desee sobre qué registros van a dónde (es decir,si el nombre coincide en un 80% y los primeros dos dígitos del código postal son idénticos, entonces probablemente sea la misma persona, etc.), más complicado será el proceso por lotes.

  8. Finalmente, nos dimos cuenta de que procesar a "John Smith" y procesar a "Annabelle DiGiovanni" son bestias muy diferentes cuando se trata de determinar si dos personas en diferentes direcciones son en realidad la misma.Puedes ajustar el software para que los nombres poco comunes tengan más peso en una coincidencia que los nombres comunes, pero ¿quién tiene tiempo?Nuestro proceso de comparación tiene aproximadamente un 80 % de precisión y quedamos satisfechos con procesar manualmente el 20 % restante.

No lo considere una herramienta para hacer coincidencias automáticamente.Piense en ello como una herramienta que permitirá que sus procesadores de datos humanos sean más productivos.De esa manera, lo configurará de modo que si alcanza el 80% de precisión, sea un éxito rotundo en lugar de estar por debajo de la marca.

En mi trabajo actual, tenemos muchos problemas de integridad de datos.Intentamos "limpiar" los datos antes de cargarlos para garantizar la calidad.Actualmente utilizamos Melissa Data para borrar nombres, direcciones y correos electrónicos.Hace un buen trabajo estandarizando las cosas antes de cargarlo.De esa forma, podemos evitar datos duplicados.

Además, SQL Server Integration Services (sé que está utilizando Oracle) tiene un componente que realiza coincidencias "difusas" en cadenas, lo que le permite encontrar una coincidencia cercana en lugar de una coincidencia directa uno a uno.Se llama búsqueda difusa.Básicamente te da una puntuación, indicándote qué tan cerca de una coincidencia están las dos entradas...Luego puede establecer umbrales para indicarle qué tan cerca debe estar para considerarlo una coincidencia (es decir,dentro del 80% o lo que sea).

En el pasado también he usado SONIDO para determinar si los nombres eran similares al determinar duplicados.Hay muchas implementaciones de SOUNDEX.

Buena suerte.

El término para el problema que busca resolver es "Enlace de registros".

No puedo recomendar una herramienta específica.Haga una búsqueda de "software de vinculación de registros" o "software de purga de fusión" y con un poco de investigación podrá encontrar algo que satisfaga sus necesidades.

Pude encontrar una solución de código abierto, llamada febrero.Esta herramienta se desarrolló originalmente para el ámbito de la investigación biomédica, que explica el nombre "Linkage de registros biomédicos libremente extensibles". Puedes leer más sobre esto aquí: "Técnicas paralelas a gran escala para la vinculación de registros de alto rendimiento"

Para obtener una buena descripción general de los problemas/soluciones involucradas en la vinculación de registros, lea sobre "Fusionar/purgar y detectar duplicados".

Cada proveedor importante tiene su propia solución.Oracle, IBM, SAS Dataflux, etc. y cada uno afirma ser el mejor.

Evaluación verificada independiente:

Hubo un estudio realizado en el Centro de Enlace de Datos de la Universidad de Curtin en Australia que simuló la coincidencia de 4,4 millones de registros.Identificó lo que tenían los proveedores en términos de precisión (número de coincidencias encontradas versus disponibles).Número de coincidencias falsas)

  1. Empresa de coincidencia de datos, Máxima precisión (>95%), muy rápido, bajo coste
  2. Etapa de calidad de IBM , alta precisión (>90 %), muy rápido, alto costo (>$100 000)
  3. Flujo de datos SAS, precisión media (>85 %), rápido, alto costo (>100 000)

Esa fue la mejor evaluación independiente que pudimos encontrar, fue muy exhaustiva.

Hice algo como esto en las listas de inscripción de miembros de una compañía de seguros.Afortunadamente, teníamos SSN para determinar el miembro principal, pero tuve que decidir si los dependientes eran nuevos o existentes (solo por su nombre).Probé un algoritmo Soundex como parte de una solución, pero no pareció cumplir con los requisitos, porque parecía asignar demasiados nombres diferentes a la misma cosa (y muchas familias tienden a nombrar a sus hijos con nombres que suenan similares).Terminé usando (creo) las primeras cuatro letras del primer nombre de los dependientes como un identificador único y llamándolo "lo suficientemente bueno". No sé cómo manejaría a la familia de George Foreman :-)

He visto Dataflux en acción y, según nuestro analista de datos "estrella", es la herramienta de "agrupación" (como la llama Dataflux) más precisa que ha encontrado para vincular nombres de personas y empresas.Aunque es bastante caro.

Es un problema clásico de vinculación de registros.Errores tipográficos, letras faltantes, etc.se puede manejar con un enfoque probabilístico definiendo un conjunto de reglas para el bloqueo.

Un software que podría hacerlo muy bien por usted es FRIL.En Java, gratis y muy amigable.Hay enlaces a tutoriales y vídeos en el sitio web.Admite conectividad DB, aunque no estoy seguro acerca del Oracle.

RecEnlace podría ser otra forma de hacerlo, aunque probablemente tendrías que trabajar más duro para tenerlo en funcionamiento ya que no hay manuales/tutoriales (que yo sepa).

De las opciones gratuitas, también hay RELAIS.

solía escalera de datos.com para un gran conjunto de datos de nombres.Hicieron un trabajo fantástico al comparar diferentes bases de datos con ortografías muy diferentes y eliminaron muchos duplicados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top