¿Cuál es la mejor manera de fusionar datos mal estructurados de grandes bases de datos?

Bueno, si tienes un equipo de ingeniería decente, les pregunto. ¡Eso es presumiblemente por lo que les pagas!

Si me estuviera pagando, primero me aseguraría de que entendiera las Normas de privacidad de la información de salud individualmente identificable y otras cosas relacionadas de HIPPA.

Para la tarea de emparejamiento en sí, mi primera opción probablemente sería un enfoque de Aprendizaje activo, como la herramienta de datos abiertos / deduplicación de código abierto. El diseño de la tubería debe tener en cuenta otra información conocida sobre las fuentes de datos y los costos relativos de las fusiones erróneas frente a las fusiones perdidas (que probablemente no sean simétricas).

Estoy de acuerdo con Mike Peters en que un enfoque combinado máquina / humano es más poderoso que cualquiera de los dos, pero yo:

  • Use una función de distancia más sofisticada que simplemente editar la distancia (ver arriba)
  • Configure el componente de revisión humana para: a) requerir múltiples votos / revisiones yb) ser algo que podría hacerse en un entorno de microtask como Crowdflower o Amazon’s Mechanical Turk.

Este tipo de problema requiere una fusión entre hombre y máquina.

No tiene nada de malo. Palantir, Google y otros construyeron imperios utilizando técnicas similares.

Esto es lo que haces:

Paso 1

Haga que su script haga lo obvio de fusionar todos los registros donde Nombre + Apellido + Dirección + Código postal coinciden exactamente

Paso 2

Use la distancia de Levenshtein o el método MySQL soundex () para calcular la distancia entre dos nombres, como “Microsoft” y “Mikrosoft”.

Asigne un umbral de porcentaje con el que se sienta cómodo (tomará un poco de prueba y error) y combine todos los registros donde la puntuación de distancia se encuentre dentro del umbral aceptable.

Debe calcular puntajes únicos para cada parte de su clave (Nombre, Apellido, Dirección, etc.) y comparar cada uno por separado.

Cuando combine todos los registros que se encuentren dentro del umbral aceptable, agregue otra columna a la tabla que indicará que no eran coincidencias exactas.
Paso 3

Agregue todos los registros restantes que no se encuentren dentro de la distancia aceptable a una nueva tabla “require_review”

Etapa 4

Cree una interfaz de usuario básica que permita a un operador humano revisar los datos de los pasos 2 y 3, haciendo las correcciones necesarias