Clasificador de textos - Roar-Network/roar-recommender GitHub Wiki
La clasificación de texto es un problema central para muchas aplicaciones, del mismo modo la detección de spam, el análisis de sentimientos o las respuestas inteligentes son de gran importancia y vienen enlazados a este tema. El objetivo de la clasificación de texto es asignar documentos a una o varias categorías.
En nuestro proyecto se quieren clasificar mensajes cortos (de no más de 512 caracteres) de una red social, de forma que al usuario de dicha red se le puedan ofrecer publicaciones que se acerquen más a sus preferencias. Para esto se construyó un clasificador usando la biblioteca de FastText
, que dado un texto, si tiene suficiente información para clasificar el mensaje, este será ubicado para alguna de estas y en caso contrario se le dará valor -1. Las categorías son las siguientes.
Clasificaciones:
- Society & Culture
- Science & Math
- Health
- Education
- Computer & Internet
- Sports
- Business & Finance
- Entretainment
- Family
- Goverment & Politic
FastText
:
Biblioteca Una idea popular en el aprendizaje automático moderno es representar palabras por vectores. Estos vectores capturan información oculta sobre un idioma, como analogías de palabras o semántica. También se utiliza para mejorar el rendimiento de los clasificadores de texto.
fastText
para el entrenamiento supervisado utiliza n-grams
como preprocesamiento de textos. Esta representación como bag-of-words
, o bolsa de palabras, modela un documento como un vector de tamaño N
, siendo este el tamaño total del vocabulario, es decir, como un conjunto
sin repeticiones. Dicho vector puede representar la aparición o no de la palabra en el documento, con ceros y unos, o como la frecuencia en cada documento, con cero si no aparece y con un número mayor de cero indicando cuantas ocurrencias tiene.
Un n-grama
es una secuencia de n unidades, pudiendo ser estas palabras, sílabas, letras, etc., las cuales son interpretadas como una única unidad. Si la unidad es la palabra, los tres casos más comunes son los uni-gramas, que hace referencia a una única palabra, y los bi-gramas y tri-gramas, que contienen dos y tres palabras respectivamente. También es común la utilización de esta técnica con n caracteres, lo que permite extraer información semántica de las palabras relacionadas con los prefijos y sufijos.
A continuación se muestra cómo funciona la clasificación de textos con fastText
:
Nuestro Clasificador
Se utilizó un conjunto de datos para entrenar nuestro clasificador. Como se muestra a continuación en el gráfico, los datos estaban desbalanceados. Para solucionar esto en el procesamiento de los datos se utilizó stratifield k-fold
que además de mantener el k-fold
entre el train
y el validation
, secciona el conjunto en subconjuntos donde las categorías estén representadas lo más uniforme posible.
Como baseline
se creó a partir del conjunto de datos la probabilidad de que el mensaje fuera de una determinada categoría y a partir de la generación de una variable aleatoria uniforme se seleccionaba dicha categoría.
Con este mátodo y el clasificador usado, se consiguió un resultado de 0.61 de precisión. Además se probó con otros baselines
como Gaussian
, Naive-Bayes
, SVM
y Multinomial
y los resultados fueron parecidos