Arreglando inconsistencias de datos


8

Estoy tratando de analizar algunos datos que tengo pero hay muchas inconsistencias en mis datos.

Tengo una tabla SQL que estoy tratando de analizar.

La tabla es una tabla de universidades con la siguiente estructura: el name:string, city:string, state:string, country:string nombre siempre está presente, sin embargo, puede faltar la ciudad, el estado o el país. Mi principal problema es que hay un montón de errores tipográficos y una declinación diferente del nombre de una universidad. Por ejemplo, aquí está la declinación de la Universidad de Standford que encuentro cuando lo hago SELECT "universities".* FROM "perm_universities" WHERE (name like '%stanford%'):

stanford university - stanford - ca - united states of america
the leland stanford junior university - stanford - ca - united states of america
leland stanford jr. university - stanford - ca - united states of america
stanford university graduate school of business - stanford - ca - united states of america
the leland stanford junior university (stanford university) - stanford - ca - united states of america
leland stanford junior university - stanford - ca - united states of america
stanford university - stanford -  -
leland stanford jr. university, graduate school of business - stanford - ca - united states of america
stanford law school - stanford - ca - united states of america
stanford - stanford - ca - united states of america
stanford university, graduate school of business - stanford - ca - united states of america
stanford graduate school of business - stanford - ca - united states of america
stanford univerity - stanford - ca - united states of america
stanford university (the leland stanford junior university) - stanford - ca - united states of america
the leland stanford jr. university - palo alto - ca - united states of america
leland stanford junior university, school of law - stanford - ca / n/a - united states of america
stanford universit - stanford - ca - united states of america
the leland stanford university - stanford - ca - united states of america
leland standford stanford junior university - stanford - ca - united states of america
stanford university - cambridge - ma - united states of america
the leland stanford junior university 'stanford university' - stanford - ca - united states of america
stanford university school of law - stanford - ca - united states of america
stanford univresity - stanford - ca - united states of america
the leland stanford jr. university (stanford university) - stanford - ca - united states of america
leeland stanford junior university - stanford - ca - united states of america
leland stanford junion university -  - ca - united states of america
leland stanford junior university (stanford university) - stanford - ca - united states of america
the leland stanford junior university - stanford -  -
stanford university - graduate school of business - stanford - ca - united states of america
graduate school of business, stanford university - stanford - ca - united states of america
stanford universoty - stanford - ca - united states of america
leland stanford junior university - stanford -  -
stanford univeristy - palo alto - ca - united states of america
leland stanford university - palo alto - ca - united states of america
stanford university - stanford - ca / n/a - united states of america
the leland stanford junior university, stanford university - stanford - ca - united states of america
the leland stanford junior university graduate school of business - stanford - ca - united states of america
stanford universtiy - stanford - ca - united states of america
stanford univerisity - stanford - ca - united states of america
stanford university - stanford - ct - united states of america
stanford law scool - stanford - ca - united states of america
mba: stanford university - stanford - ca - united states of america

Todos son la misma universidad, pero algunos tienen errores tipográficos, algunos tienen nombres diferentes, algunos no tienen ciudades, algunos tienen las ciudades equivocadas, ... Los datos no son excelentes.

Entonces estoy tratando de arreglarlo. ¿Cómo puedo consolidar estos datos?


2
Busque enlaces de registros para obtener información sobre cómo puede lidiar con registros parcialmente superpuestos. Puede manejar los errores de ortografía buscando similitud en las cadenas de bits de n-gramas .
Emre

2
He votado para cerrar como "demasiado amplio" ya que hay literalmente cientos de enfoques posibles y ni siquiera nos ha dicho que ha intentado uno. Coincidencia difusa, concordancia de palabras clave, agrupamiento, aprendizaje automático ...
Spacedman

@Spacedman No he intentado nada para solucionarlo, ya que no sé cuáles son las mejores opciones.
bl0b

Creo que esta es una pregunta legítima; El problema es qué enfoque (de muchos existentes) sería mejor para manejar este problema. Dado el número de coincidencias potenciales, puede ser mejor intentar la agrupación que cualquier tipo de coincidencia aproximada / difusa. Sin embargo, me gustaría escuchar las opiniones de los demás.
Antonio

Respuestas:


3

Dado que este conjunto de datos ya está organizado en una tabla, puede aprovechar las funciones estándar de SQL para realizar una gran parte de la limpieza. Un registro parece estar compuesto de 4 campos, por ejemplo:

university name, city, state, country
stanford law school - stanford - ca - united states of america

Puede seguir estos pasos para obtener una representación más limpia de este conjunto de datos:

  1. Comenzando con el nivel más alto (país), encuentre valores únicos y úselo para identificar todas las palabras que suenan similares al enumerar soundex coincide con sí mismo (cree una consulta de unión de la tabla consigo mismo).
  2. Use estas coincidencias similares sugeridas para corregir todos los errores al actualizar los nombres.
  3. Continúe de esta manera hasta que haya arreglado los cuatro campos.
  4. Identifique los estados que faltan utilizando el nombre de la ciudad para consultar el estado correcto del resto de la tabla; si faltan el estado y el país para "leland stanford junior university", use el nombre de la ciudad "stanford" para unirse y obtener el nombre del estado / país de los otros registros en la tabla.
  5. Para el nombre de la universidad, identifique todas las abreviaturas usando grep para buscar palabras que terminen en un carácter de punto. Reemplácelos con expansiones completas.
  6. Luego, divida el nombre de la universidad en palabras individuales y vuélvalas a una tabla temporal en una sola columna. Desduplicar los valores en la columna para que solo contenga valores únicos.
  7. Ejecute la misma consulta de combinación de coincidencia de índice de sonido que en el paso 1 para identificar nombres similares, agregue estos nombres similares sugeridos en una segunda columna de la tabla temporal.
  8. Realice manualmente una comprobación rápida de lo que ha obtenido como sugerencias y elimine las coincidencias no válidas.
  9. Escriba un procedimiento para reemplazar las palabras en el nombre de cada universidad con reemplazos sugeridos, y tendrá un conjunto de datos mucho más limpio.

1

Esto es bastante difícil de hacer sin estructurar primero su conjunto de datos. Hay una razón por la que los conjuntos de datos limpios cuestan miles de dólares porque intentan solucionar estos problemas por usted.

Lo que puedes probar es crear primero un sistema de taxonomía. Primero le da a la "universidad de Stanford" una identificación de "1". Algo así como la "escuela de negocios de posgrado de Stanford" obtendría la identificación "1.2.5", donde el nuevo "2" se refiere a la división de escuela de posgrado, "5" se refiere a la categoría de escuela de negocios. Realmente depende de cuál es tu objetivo final. En resumen, configure una lista de ID para posibles subdivisiones, "Graduado, pregrado, etc." y luego más subdivisiones.

Para las ubicaciones, generalmente puede definir una ubicación "primaria" y "secundaria", es decir, "Palo Alto" y "Stanford", que puede determinar mediante histogramas para cada uno y seleccionando los dos primeros.

Para corregir errores ortográficos, puede usar la API de búsqueda de Google y explotar el "Mostrando resultados para ..." que le daría la ortografía correcta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.