Tengo una lista de productos, que incluye variables como el nombre del producto (como aparece en el recibo) y el comerciante donde se compró el producto.
Tengo una buena cantidad de ellos clasificados manualmente en un grupo fijo de categorías (por ejemplo, bebidas alcohólicas, verduras, carne, etc.).
Los datos son, como siempre, ruidosos. En este caso, particularmente ruidoso porque proviene de recibos escaneados y el OCR en escaneos no tan buenos suele ser muy ruidoso.
Quiero jugar con algoritmos para clasificar nuevos datos, usando las dos variables anteriores.
Hay varias fuentes principales de variación aquí:
- El OCR, que significa que se puede encontrar un producto (por ejemplo, pollo) con una ortografía diferente pero relativamente similar (por ejemplo, pollo, pollo, pollo, ...).
- El mismo producto puede tener diferentes nombres, según el comerciante que vendió el producto. En este caso, los nombres pueden ser similares o completamente diferentes entre los comerciantes, pero bastante similares dentro de cada comerciante.
- El mismo producto puede tener nombres muy diferentes dentro del mismo comerciante (por ejemplo, productos de marca cuyo nombre en el recibo es el nombre de la marca, en comparación con los nombres genéricos; refrescos versus coca cola).
He intentado algún clasificador (ingenuo), utilizando, por ejemplo, la distancia entre cadenas (que aborda principalmente la primera fuente principal de variación mencionada anteriormente), pero no estoy muy contento con los resultados.
Así que quería contactar aquí para pedir ideas sobre cómo abordar este problema. Supongo que muchas personas han "resuelto" o al menos trabajado mucho más tiempo en este tipo de problema que yo (unas pocas horas), por lo que realmente agradecería cualquier orientación aquí.
Por cierto, uso principalmente R, por lo que las soluciones basadas en R serían muy apreciadas.