Pregunta

Tengo varias fuentes de tablas con datos personales, como esta:

SOURCE 1
ID, FIRST_NAME, LAST_NAME, FIELD1, ...
1, jhon, gates ...

SOURCE 2
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
1, jon, gate ...

SOURCE 3
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
2, jhon, ballmer ...

Entonces, suponiendo que los registros con ID 1, de las fuentes 1 y 2, son la misma persona, mi problema es cómo determinar si un registro en cada fuente representa a la misma persona.Además, seguro que no todos los registros existen en todas las fuentes.Todos los nombres, están escritos en español, principalmente.

En este caso, es necesario relajar la coincidencia exacta porque asumimos las fuentes de datos no han sido verificadas rigurosamente contra la oficina oficial de identificación del país.También debemos asumir los errores tipográficos son comunes, debido a la naturaleza de los procesos para recopilar los datos.Es más, la cantidad de registros ronda los 2 o 3 millones en cada fuente...

Nuestro equipo había pensado en algo como esto:Primero, fuerce la coincidencia exacta en campos seleccionados como NÚMERO DE ID y NOMBRES para saber qué tan difícil puede ser el problema.En segundo lugar, relajar los criterios de coincidencia y contar cuántos registros más pueden coincidir, pero es aquí donde surge el problema: ¿Cómo hacer para relajar los criterios de coincidencia sin generar demasiado ruido ni restringir demasiado?

¿Qué herramienta puede ser más efectiva para manejar esto?, por ejemplo, ¿conoce alguna extensión específica en algún motor de base de datos que admita esta coincidencia?¿Conoces algoritmos inteligentes como sonidoex para manejar esta coincidencia aproximada, pero ¿para textos en español?

¡Cualquier ayuda sería apreciada!

Gracias.

¿Fue útil?

Solución

El quid del problema es calcular una o más medidas de distancia entre cada par de entradas y luego considerarlas iguales cuando una de las distancias es menor que un cierto umbral aceptable.La clave es configurar el análisis y luego variar la distancia aceptable hasta llegar a lo que considera el mejor equilibrio entre falsos positivos y falsos negativos.

Una medida de distancia podría ser fonética.Otro que podrías considerar es el Levenshtein o editar distancia entre los enteros, lo que intentaría medir los errores tipográficos.

Si tiene una idea razonable de cuántas personas debe tener, entonces su objetivo es encontrar el punto óptimo en el que obtenga aproximadamente la cantidad correcta de personas.Si tu combinación es demasiado confusa, tendrás muy pocas.Si lo haces demasiado restrictivo, tendrás demasiados.

Si sabe aproximadamente cuántas entradas debe tener una persona, puede usarlas como métrica para ver cuándo se está acercando.O puede dividir la cantidad de registros entre la cantidad promedio de registros para cada persona y obtener una cantidad aproximada de personas a las que está apuntando.

Si no tiene números para usar, entonces debe seleccionar grupos de registros de su análisis y verificar manualmente si parecen la misma persona o no.Entonces es adivinar y verificar.

Espero que eso ayude.

Otros consejos

Esto suena como un Integración de datos del cliente problema.Busque ese término y es posible que encuentre más información.Además, echa un vistazo al interior. La tendencia del almacenamiento de datos, y es posible que allí también encuentres algunas respuestas.

Editar: Además, aquí está un artículo que te puede interesar sobre la correspondencia fonética del español.

Tuve que hacer algo similar antes y lo que hice fue usar un doble metáfono búsqueda fonética de los nombres.

Sin embargo, antes de comparar los nombres, intenté normalizar cualquier diferencia entre nombres y apodos buscando el nombre en una tabla de apodos que creé.(Completé la tabla con datos del censo que encontré en línea). Entonces, las personas llamadas Bob se convirtieron en Robert, Alex se convirtió en Alexander, Bill se convirtió en William, etc.

Editar:Double Metaphone fue diseñado específicamente para ser mejor que Soundex y funcionar en otros idiomas además del inglés.

SSIS, intente utilizar la transformación de búsqueda difusa

Solo para agregar algunos detalles para resolver este problema, encontré estos módulos para Postgresql 8.3

Podrías intentar canonicalizar los nombres comparándolos con un diccionario.
Esto le permitiría detectar algunos errores tipográficos comunes y corregirlos.

Me parece que tienes un vinculación de registros problema.Puede utilizar las referencias en el enlace.

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