2008-09-05 61 views
13

Aquí hay un problema interesante.Herramientas para hacer coincidir los datos de nombre/dirección

Tengo una base de datos de Oracle con el nombre & información de la dirección que debe mantenerse actualizada.

Recibimos datos de varias fuentes gubernamentales diferentes, y necesitamos encontrar coincidencias, y si actualizar o no la base de datos con los datos, o si se necesita crear un nuevo registro.

No hay ningún tipo de identificador único que se pueda utilizar para unir registros, y la calidad de los datos no siempre es buena; siempre habrá errores tipográficos, personas con nombres diferentes (es decir, Joe vs. Joseph) , etc.

Me interesaría saber de alguien que haya trabajado anteriormente sobre este tipo de problema cómo lo resolvieron, o al menos partes automatizadas de él.

Respuesta

7

Cada una de las principales compañías de software que están activas en este espacio ofrece paquetes de soluciones que manejan el análisis de nombre y dirección, estandarización de datos, deduplicación o coincidencia de registros, vinculación/vinculación de registros, supervivencia, etc. Aunque son un poco caros.

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

El paquete de soluciones Websphere de IBM (obtenido a través de su adquisición Ascential) incluye QualityStage.

Business Objects, ahora una empresa de SAP, tiene un producto Data Quality en su suite Enterprise Information Management (EIM).

Otras grandes marcas de calidad de datos incluyen Dataflux (una empresa SAS) y Trillium Software (una compañía de Harte-Hanks)

El Grupo Gartner libera un cuadrante anual Mágico para suites de soluciones de calidad de datos. Los proveedores que califican bien en estos Cuadrantes Mágicos generalmente hacen que todo el informe esté disponible en línea para usuarios registrados en su sitio web (example 1, example 2).

+0

Lamentablemente, ambos enlaces están rotos. En 2008, Dataflux estaba en la parte superior derecha del Cuadrante Mágico, pero en 2010 (http://www.syncsort.com/Portals/0/documents/magic_quadrant_for_data_inte_207435.pdf) se están quedando atrás. – luiscolorado

2

En mi trabajo actual, tenemos muchos problemas de integridad de datos. Intentamos "restregar" los datos antes de que se carguen para garantizar la calidad. Actualmente usamos Melissa Data para eliminar nombres, direcciones y correos electrónicos. Hace un buen trabajo al estandarizar las cosas antes de cargarlas. De esa forma, podemos evitar la duplicación de datos.

Además, SQL Server Integration Services (sé que está utilizando Oracle) tiene un componente que hace coincidencia "borrosa" en cadenas, lo que le permite encontrar una coincidencia cercana en lugar de una coincidencia directa directa. Se llama búsqueda difusa. Básicamente le da una puntuación, diciéndole qué tan cerca de un partido son las dos entradas ... Puede establecer umbrales para decirle qué tan cerca tiene que ser para considerarlo como una coincidencia (es decir, dentro del 80% o lo que sea).

En el pasado, también he usado SOUNDEX para determinar si los nombres eran similares en la determinación de duplicados. Hay muchas implementaciones de SOUNDEX.

Buena suerte.

+1

soundex es muy malo; si quieres ir a la ruta fonética deberías hacer algo en la línea del metafonía doble ... – Unreason

2

El término para el problema que está buscando resolver es "Grabar enlace".

No puedo recomendar una herramienta específica. Realice una búsqueda de "software de enlace de registros" o "software de purga de combinació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 Febrl. Esta herramienta fue desarrollada originalmente para el ámbito de la investigación biomédica, que explica el nombre "Enlace de registro biomédico libremente extensible". Puede leer más al respecto aquí: "Parallel Large Scale Techniques for High-Performance Record Linkage"

Para obtener una buena visión general de los problemas/soluciones implicados en la vinculación de registros lea sobre "Merge/Purge and Duplicate Detection".

0

Hice algo así en las listas de membresía para una compañía de seguros. Afortunadamente, teníamos el SSN para determinar el miembro primario, pero tenía que decidir si los dependientes eran nuevos o existentes (solo por nombre). Probé con un algoritmo soundex como parte de una solución, pero no parecía ajustarse a la factura, 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 las (primeras) cuatro letras del primer nombre de las personas dependientes como un identificador único y llamé "lo suficientemente bueno". No sé cómo manejaría la familia de George Foreman :-)

4

Lecciones aprendidas del uso de FirstLogic. (Otros productos deberían ser similares.) Por contexto, estábamos obteniendo archivos de docenas de fuentes, y cada uno estaría en un formato diferente. Necesitábamos saber quién necesitaba ser agregado a nuestra base de datos, quién necesitaba ser actualizado y quién solo necesitaba ser marcado como "en la lista".

  1. que espera el software se vería en un archivo completo y determinar que - por ejemplo - si la columna A tenía apellidos en 98 de cada 100 filas a continuación, la columna A debe ser la última columna de nombre. Eso no es cierto; cada registro se procesa individualmente

  2. Si sabe exactamente qué datos hay en qué campo, puede decirle al software y lo manejará. Pero si no siempre estás seguro de que estás mejor solo dándole toda la cadena y dejando que el software lo resuelva. Un ejemplo de esto es un campo de apellido que contiene algo así como "Smith Jr MD". Si declara que es la columna del 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, de fábrica, FirstLogic no supone que una coma significa "apellido, nombre". En realidad, tiene una gran lista de apellidos y una gran lista de nombres, por lo que puede ignorar la coma. Constantemente tuvimos problemas con personas como "John, Thomas". Y a veces se confundía porque lo que parecía ser un apellido obvio para nosotros en realidad era un nombre en español o algo así.

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

  5. Personalizar el sistema es posible, pero no tan fácil como lo hacen las personas de ventas. Hay un millón de opciones y archivos y diccionarios personalizados. Necesitará invertir el 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 en un archivo maestro; fueron creados para operaciones de fusión-purga. Es posible (lo estamos haciendo), pero requiere que trate su base de datos en una lista (que requiere que extraiga todos los registros activos en un archivo plano). Además, cuanto más control desee sobre qué registros irán (es decir, si el nombre es una coincidencia del 80% y los primeros dos dígitos del código postal son idénticos, entonces es probable que sea la misma persona, etc.), el complicado proceso de su lote es va a ser.

  8. Finalmente, nos dimos cuenta de que procesar "John Smith" y procesar "Annabelle DiGiovanni" son bestias muy diferentes cuando intenta determinar si dos personas en diferentes direcciones son realmente iguales. Puede ajustar el software para que los nombres poco comunes tengan más peso en una coincidencia que los nombres comunes, pero ¿quién tiene el tiempo? Nuestro proceso de coincidencia es aproximadamente el 80% de precisión y estamos satisfechos con el procesamiento manual del 20% restante.

No lo considere una herramienta para hacer automáticamente la correspondencia. Piense en ello como una herramienta para permitir que sus procesadores de datos humanos sean más productivos. De esa manera lo has configurado de modo que si alcanzas el 80% de precisión, es un éxito rotundo en vez de corto.

0

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

0

Es un problema clásico de vinculación de registros. Typos, letras faltantes, etc. pueden manejarse con un enfoque probabilístico definiendo un conjunto de reglas para el bloqueo.

Un software que podría hacerlo bien para usted es FRIL. En Java, gratis y muy amigable. Hay enlaces a tutoriales y videos en el sitio web. Admite conectividad DB, aunque no estoy seguro del oráculo.

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

Desde las opciones gratuitas, también existe RELAIS.

1

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

Evaluación Independiente verificado:

Hubo un estudio realizado en el Centro de la Universidad Curtin de vinculación de datos en Australia que simulaba la adecuación de 4,4 millones de registros. Identificado lo que los proveedores tenían en términos de precisión (número de coincidencias encontradas vs disponibles. Número de falsas coincidencias)

  1. DataMatch Enterprise, Mayor precisión (> 95%), muy rápido, de bajo coste
  2. IBM Quality Stage, de alta precisión (> 90%), muy rápido, alto costo (> $ 100K)
  3. SAS datos de flujo, de precisión media (> 85%), rápido, alto costo (> 100 K)

Esa fue la mejor evaluación independiente podríamos encontrar, fue muy completo.

5

En el frente de código abierto, ahora hay una biblioteca de Python para hacer este tipo de registro de deduplicación/resolución de entidad: Dedupe.

Requiere habilidades de programación, pero es gratis y se puede ejecutar en una computadora portátil, en contraposición a un gran servidor.

Aquí hay una descripción general de how it works.

0

He usado dataladder.com para obtener un gran conjunto de datos de nombres. Hicieron un trabajo fantástico al combinar diferentes bases de datos con grafías muy diferentes y cortar muchos duplicados.

Cuestiones relacionadas