Cómo se clasifican productos de supermercado con un algoritmo artesanal basado en NLP

Fuentes: Categorization with NLP

El desarrollador detrás de la herramienta Shoppy, pensada para su app de listas de la compra, detalla en un artículo extenso cómo construyó un sistema de categorización de productos sin recurrir a aprendizaje automático. Ante la falta de datos masivos y de presupuesto para externalizar el trabajo, optó por un algoritmo manual basado en Procesamiento de Lenguaje Natural (NLP) que se apoya en un archivo CSV de términos.

El proceso comienza con un análisis léxico del texto introducido por el usuario: se normaliza a minúsculas, se convierte a la forma Unicode NFD para eliminar acentos, se divide en palabras alfanuméricas y se aplica stemming con el algoritmo de Porter. Con esas raíces, ordenadas alfabéticamente, se generan unigramas y, a partir de sus combinaciones, bigramas. La base de datos se organiza en dos grupos de prioridad —«Derivations» (zumos, leches o aceites vegetales) y «Raw» (ingredientes básicos)— para resolver ambigüedades como «zumo de manzana», que se clasifica como bebida y no como fruta. Los bigramas actúan como desambiguadores específicos y siempre se consultan antes que los unigramas.

El artículo aborda también casos límite resueltos con reglas ad hoc (la excepción de «pepper» como especia frente a «bell pepper») y problemas derivados de la fusión léxica del inglés, como «redbull» o «lipbalm». Para estos, se recurre a una primera pasada con el tokenizador silábico SyllableTokenizer de NLTK. El texto cierra con las dificultades de migrar la base de datos a sílabas puras y deja entrever que el modelo seguirá evolucionando. El autor no se presenta como experto en NLP y busca atraer comentarios de especialistas.