5 votos

¿Sugerencias sobre cómo fusionar varios conjuntos de datos con un ID imperfecto en todas las bases de datos?

Tengo cuatro bases de datos de libros que he reunido de varias fuentes, sitios web, etc. Me gustaría fusionar las bases de datos, pero me encuentro con un importante problema de fusión, ya que no hay una identificación de coincidencia "perfecta" entre las bases de datos. Cada base de datos tiene el título y la fecha de publicación, pero no es perfecta. Por ejemplo, podría tener las siguientes entradas para el título y la fecha de publicación:

  • (1) El guardián y el centeno, 16/7/51
  • (2) El guardián y el centeno, 16/7/51
  • (3) El guardián y el centeno, 1951
  • (4) El guardián y el centeno (1951), [desaparecido]

Así que he probado cosas como deshacerme de las palabras comunes, los espacios y otros caracteres que no son letras, usar sólo los primeros 15 caracteres del título y sólo el año de la publicación (o el mes y el año), pero creo que no tengo una solución o enfoque completo para conseguir la mejor coincidencia.

¿Alguien tiene alguna sugerencia sobre enfoques, software, un algoritmo que pueda seguir o buscar, etc. para ayudarme a conseguir la mejor coincidencia posible? (Las bases de datos oscilan entre 9.000 y 15.000 observaciones, por lo que hacerlo manualmente no es realmente una opción)

Trabajo principalmente en Stata, pero tengo conocimientos básicos de R y Python si eso orienta alguna respuesta.

0 votos

Se puede decir mucho sobre esto, pero para empezar, tenga en cuenta que Stata tiene un soundex función.

1 votos

Google tiene el mejor motor de búsqueda del mundo. Seguro que han encontrado buenas soluciones a tu problema. Pero algunos de los mejores trucos pueden ser propios. Ahora no tienen exactamente el mismo problema que tú porque pueden hacer listas largas. Pero sí las ordenan en base a algoritmos como el que tú buscas. Con Google, Yahoo y tantos otros motores de búsqueda por ahí estoy seguro de que debe haber una vasta literatura en revistas abiertas que podrías explorar.

0 votos

Algunos artículos sobre esto usando SAS (pero tal vez los métodos son transferibles). Jones y Zdeb . Heath et al. Sambidi et al.

4voto

Neal Puntos 316

Yo probaría dos cosas. Hay un comando escrito por el usuario llamado strgroup, que puedes instalar con -ssc install strgroup-. Utiliza Distancias de Levenshtein para hacer coincidir las cadenas.

Si eso no funciona, yo buscaría un programa gratuito llamado Google Refine . Es bastante fácil de usar una vez que ves el vídeo de instrucciones.

2voto

cotroxell Puntos 126

Existe un comando de Stata escrito por el usuario llamado reclink . Puede realizar la vinculación de registros entre dos archivos utilizando un estándar coincidencia probabilística esquema.

He querido reescribir el programa en Mata (para agilizarlo) y añadir varias funciones, pero funciona bien para la fusión probabilística. Teniendo en cuenta tu ejemplo, debería funcionar bien después de que hagas alguna estandarización de tus campos (por ejemplo, convertir la variable de fecha en año/mes/día, limpiar "&", quizás añadir campos para algoritmos fonéticos del título del libro). Programas como Link King, LinkageWiz y otros pueden hacer gran parte de la limpieza automáticamente.

0voto

Anshul Puntos 51

A pesar de la fecha de este post, me gustaría compartir algo que me facilitó la vida.

Suelo empezar por seguir el Stata tip 64: Limpieza de variables de cadena introducidas por el usuario ( ver aquí ) para eliminar las pequeñas incoherencias, es decir, eliminar los espacios iniciales y finales ( trim y itrim ); evitar las variaciones de mayúsculas y minúsculas ( upper , lower , proper ) y eliminando otras diferencias comunes que surgen de guiones, caracteres acentuados y ampersands - como en "The Catcher y el Centeno" y "El guardián & el Centeno" ( subinstr ). Parece que aumenta la eficacia de strgroup que utiliza la mencionada distancia de edición de Levenshtein para hacer coincidir cadenas similares, ya que la función distingue entre mayúsculas y minúsculas.

¡Saludos!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X