Extracción de datos con Screaming ¿y después qué?

Últimamente estoy viendo que el mundo del SEO se ha tirado de cabeza a hacer scrap de catálogos, con las opciones de extraer elementos del DOM que ya incorporan herramientas como Screaming Frog.

Lo cual está muy bien, pero lo más probable es que si tratas con catálogos amplios poder hacer una comparativa de precios, realizar un histórico de disponibilidad, o de contenido, será una lucha de obstáculos si no dispones de un ejército de mano de obra.

 

¿Y ahora qué con esa ingente cantidad de datos cómo puedes hacer match?

Esa es la pregunta… cómo hacer match del catálogo de tu competencia o tu proveedor y no morir en el intento.

Hay muchas formas de poder realizar el match, desde el proyecto en desuso de Google Open Refine (que parece que va a salir de la nevera) o haciendo algo de desarrollo a medida.

Lo de los ean (códigos de barras), es bonito, pero en muchos sectores no se muestran en el frontal, ni en la url, ni en la url de las imágenes, lo cual es una buena forma de proteger tu catálogo para tener a la competencia entretenida gastando tiempo o dinero.

 

Método normalizando nombres y comparando textos

El método que en algún proyecto he usado donde alguno de los competidores no mostraba el código de barras del artículo, consiste en generar una semilla (conjunto de palabras clave por artículo) y vincularlas cuando sean iguales. En particular, constaría de los siguientes pasos aproximadamente:

  1. Insertar los catálogos que queramos analizar en una base de datos.
  2. Crear un campo para la semilla y a ser fulltext (para luego buscar y comprar).
  3. Unifica y normaliza el nombre de las marcas. Si divides, vencerás.
  4. Transforma a minúsculas o mayúsculas
  5. Elimina todos los caracteres raros, todos. Incluidos los acentos, quédate solo con números (0-9) y letras (a-z)
  6. Usa expresiones regulares o haz los reemplazos que necesites para transformar unidades (1000ml = 1l) o atributos del artículo.

Probablemente cada editor escribirá el nombre del producto diferente, algunos incluso incluyendo el nombre de la marca en el título del producto. Así que nuestra semilla se debrá componer de nombre + marca + atributos (según sector). Con esto tendrás una semilla más o menos unificada para los diversos catálogos, aunque según el sector puede ser aplicable otro patrón de los datos extraídos, pero generalmente esto suele funcionar para casar productos.

  • nombre + modelo (tamaño, color) + marca
    semilla: nombre modelo tamaño color marca
  • nombre – tamaño, color + modelo (marca) + marca
    semilla: nombre tamaño color modelo marca marca
  • marca nombre [tamaño, color]  + marca
    semilla: marca nombre tamaño color marca

Llegados a este punto lo mejor sería ordenar las palabras que obtengas y eliminar los duplicados, por ejemplo, con algo del tipo.

De esta forma, obtendrías en el ejemplo ideal y perfecto, para todos los tres casos la misma key: color marca modelo tamaño. Una buena parte de las referencias podrían casar entre ellas.

 

… La realidad será distinta

Seguramente encontrarás que nadie tiene los catálogos idénticos, fallos ortográficos o el nombre de las características es diferente, fallarán en lo más básico. Para tratar de ir averiguando qué correspondé a qué, podrías hacer una búsqueda fulltext y aproximar según semejanza o usar otro tipo de funciones para comparar palabras.

Por último, y para afinar más podrías comparar imágenes, al final, casi todas las tiendas online beben de las mismas fuentes en cuanto a imágenes de producto se refiere.

Con esta forma de machear catálogos, os aseguro que he tenido muy buenos resultados, incluso mejor que usando algunas herramientas de pago por servicio de scrap de precios. Es cierto, que los sinónimos que se han ido generando, han sido clave para afinar, porque algunos artículos o características estaban en inglés directamente.

Y todo esto, porque en otros post, quiero mostrar un “prototipo” de una interfaz de validación de match de diferentes catálogos.