Cruzar o unificar datos con texto no coincidente

Hola a tod@s, mi nombre es Joaquín. Soy un nuevo usuario.

En busca de información he encontrado esta web, que es una referencia a seguir.

Os escribo por si podeis orientarme con lo que estoy tratando de resolver, porque como decía un profesor que tuve, a veces matamos moscas a cañonazos...

Brevemente os explico: dentro de una base de datos estoy tratando de relacionar varias tablas de productos inconexas entre sí (donde ni el código id de producto ni la descripción-texto son datos coincidentes, si de forma parcial, entre ellas para poder igualar los elementos), que dependen de una general que tengo que crear, asignando un código de referencia, que sale de las categorias de los productos.

Hasta el día de hoy he venido haciendo ésto a mano, lo cual veo es inviable, pues podemos estar hablando de 100.000 entradas.

He investigado un poco, y me encuentro muy perdido, ya que veo referencias a Rapid-Miner, Google Refine, Protege, dwh, bi.... y mi conocimiento del tema está en nivel principiante.

Me habían recomendado que siguiese la pista del término "ontología", de cara a normalizar la ordenación de productos y un software llamado virtuoso.

Os agradecería inmensamente si pudierais darme alguna pista del camino a seguir para automatizar este proceso.

Un cordial saludo a tod@s

 

Hola Joaquín,

Por lo que cuentas, podría irte bien utilizar una herramienta de matching o de deduplicación de datos, puedes buscar información relativa a datacleansing o limpieza de datos. El software de deduplicación normalmente compara varios registros con diferentes campos (que pueden venir de una join entre varias tablas) entre sí para detectar porcentajes de coincidencia de todo lo comparado, y si el porcentaje es elevado seguramente se trata de un duplicado.

No se trata exactamente de tu caso, ya que si he entendido bien tu buscas coincidencias entre tablas para poder enlazar registros, pero la parte de comparativa te puede servir, siempre que haya algo que comparar que al menos se parezca en el caso de ser un candidato a enlazar.

Hace tiempo probé SQL PowerDQGuru, una herramienta de software libre que permite realizar procesos de limpieza y deduplicación de datos, y que creo que podría servirte para ayudarte en tu tarea. Cuando yo hice la prueba eché en falta funciones de comparación más completas a la hora de buscar semejanzas, pero creo que desde entonces han mejorado el software y algo más se podrá hacer. Como mínimo te servirá para automatizar parte del trabajo que estás haciendo manualmente. Te copio de la página de producto de DQguru las funciones que incorpora ahora, ya nos dirás si te sirven:

Extensive support for transformation and matching functions:

  • Concatenation
  • Double Metaphone, Metaphone, Refined Soundex, Soundex phonetic coding
  • Alphabet case conversion
  • String substitution
  • Substring and substring by word
  • Word substitution through the translation of words or groups of words
  • Merge rules for column, table and related table merges

Otra opción es utilizar Google Refine, en la parte de análisis y limpieza de datos, pero vas a tener que echarle imaginación a la comparativa, que tendrás que hacer utilizando expresiones regulares. Explícanos igualmente tu experiencia si lo pruebas. Supongo que ya lo habrás visto, pero te enlazo el video de Google Refine que muestra cómo comenzar con esta herramienta.

Con respecto a Virtuoso, no lo conocía, pero por lo que veo es una base de datos con soporte para comparación semántica, faceted search, etc. Te podría servir para llegar a comparar los campos directamente con algo más sofisticado que un like, pero no creo que te facilite la organización del proceso de elección de matchings, por ejemplo. Pienso que puede ser algo muy interesante para probar, pero en tu caso sí me parece matar moscas a cañonazos, si me permites repetir la expresión. De todas maneras me apunto la referencia, seguro que con esta herramienta hay material de sobras para escribir un buen artículo.

Gracias por tus indicaciones, Carlos.

Estoy peleandome un poco con el SQL Power DQguru 0.9.7, a ver si es la herramienta con la que resolver el relacionar las tablas inconexas. De momento estoy familiarizandome con el manejo, después tocará empezar a tratar los datos.

Según vaya consiguiendo cosas te ire comentando.

Un saludo

Joaquín

 

NOTA: Si a alguien que lea el post se le ocurren otras alternativas, no dude en comentarlas.

Hola Joaquin,

tal y como muy bien indica Carlos, lo que necesitas es una herramienta de matching y correlación de datos. En el mercado hay innumerables herramientas que permiten realizar el matching, en su mayoría derivan de herramientas de data quality, aunque las hay específicas de data matching.

Un saludo.