Saltar al contenido principal
InicioTutorialesInteligencia Artificial (IA)

Clasificación de textos en Python

Descubra qué es la clasificación de textos, cómo funciona y casos de uso con éxito. Explore ejemplos de principio a fin sobre cómo crear un canal de preprocesamiento de texto seguido de un modelo de clasificación de texto en Python.
may 2024  · 12 min leer

Los datos de texto son uno de los tipos de datos más comunes que utilizan las empresas hoy en día, pero como no tienen una estructura clara, puede ser difícil y llevar mucho tiempo extraer información de los datos de texto. El tratamiento de datos de texto se enmarca en el Procesamiento del Lenguaje Natural, uno de los subcampos de la inteligencia artificial

El Procesamiento del Lenguaje Natural (PLN ) es un campo de la informática y la inteligencia artificial que estudia cómo interactúan los ordenadores con las lenguas humanas y cómo programar ordenadores para procesar y analizar grandes cantidades de datos del lenguaje natural.

La PNL se utiliza de muchas formas diferentes, como responder preguntas automáticamente, generar resúmenes de textos, traducir textos de un idioma a otro, etc. La investigación en PNL también se lleva a cabo en áreas como las ciencias cognitivas, la lingüística y la psicología. La clasificación de textos es uno de estos casos de uso de la PNL. 

Este blog explorará los casos de uso de la clasificación de textos. También contiene un ejemplo de principio a fin de cómo construir un canal de preprocesamiento de texto seguido de un modelo de clasificación de texto en Python.

Si desea obtener más información sobre el procesamiento del lenguaje natural, le resultarán útiles nuestros temas Procesamiento del lenguaje natural en Python y Procesamiento del lenguaje natural en R. Adquirirá los conocimientos básicos de PNL necesarios para convertir esos datos de texto en información valiosa. También se le presentarán las bibliotecas de Python NLP más conocidas, como NLTK, scikit-learn, spaCy y SpeechRecognition.

¿Qué es la clasificación de textos?

La clasificación de textos es una tarea habitual de la PNL que se utiliza para resolver problemas empresariales en diversos campos. El objetivo de la clasificación de textos es categorizar o predecir una clase de documentos de texto no vistos, a menudo con la ayuda del aprendizaje automático supervisado.

Al igual que un algoritmo de clasificación que se ha entrenado en un conjunto de datos tabulares para predecir una clase, la clasificación de texto también utiliza el aprendizaje automático supervisado. El hecho de que en la clasificación de textos intervenga el texto es la principal distinción entre ambas.

También puede realizar la clasificación de textos sin utilizar el aprendizaje automático supervisado. En lugar de algoritmos, se puede diseñar un sistema manual basado en reglas para realizar la tarea de clasificación de textos. En la siguiente sección compararemos y analizaremos los pros y los contras de los sistemas de clasificación de texto basados en reglas y en aprendizaje automático.

Proceso de clasificación de textos

Fuente de la imagen

Si desea obtener más información sobre el aprendizaje automático supervisado, consulte nuestro artículo independiente.

Casos prácticos y aplicaciones de la clasificación de textos

Clasificación del spam

La clasificación de textos tiene muchos usos prácticos en numerosos sectores. Por ejemplo, un filtro de spam es una aplicación común que utiliza la clasificación de texto para clasificar los correos electrónicos en categorías de spam y no spam. 

Clasificación del spam

Fuente de la imagen

Clasificación de artículos de noticias y blogs

Otro caso de uso es la asignación automática de documentos de texto a categorías predeterminadas. Un modelo de aprendizaje automático supervisado se entrena con datos etiquetados, que incluyen tanto el texto en bruto como el objetivo. Una vez entrenado el modelo, se utiliza en producción para obtener una categoría (etiqueta) sobre los datos nuevos y no vistos (artículos/blogs escritos en el futuro).

Filtro de noticias

Fuente de la imagen

Categorizar las solicitudes de atención al cliente

Una empresa puede utilizar la clasificación de texto para categorizar automáticamente las solicitudes de atención al cliente por temas o para priorizar y dirigir las solicitudes al departamento adecuado. 

Solicitudes de asistencia al cliente

Fuente de la imagen

Detección de discursos de odio

Con más de 1.700 millones de usuarios activos diarios, es inevitable que en Facebook se creen contenidos contrarios a las normas. La incitación al odio está incluida en estos contenidos indeseables. 

Facebook aborda este problema solicitando una revisión manual de las publicaciones que un clasificador de texto de IA ha identificado como incitación al odio. Las publicaciones marcadas por AI se examinan de la misma manera que las publicaciones denunciadas por los usuarios. De hecho, solo en los tres primeros meses de 2020, la plataforma eliminó 9,6 millones de contenidos clasificados como incitación al odio.

Clasificador de texto de Facebook

Fuente de la imagen

Tipos de sistemas de clasificación de textos

Existen principalmente dos tipos de sistemas de clasificación de textos: los basados en reglas y los basados en aprendizaje automático.

Clasificación de textos basada en reglas

Las técnicas basadas en reglas utilizan un conjunto de reglas lingüísticas construidas manualmente para clasificar el texto en categorías o grupos. Estas reglas indican al sistema que clasifique el texto en una categoría determinada basándose en el contenido de un texto mediante elementos textuales semánticamente relevantes. Cada regla se compone de un antecedente o patrón y una categoría proyectada.

Por ejemplo, imagine que tiene montones de artículos nuevos y su objetivo es asignarlos a categorías relevantes como Deportes, Política, Economía, etc. 

Con un sistema de clasificación basado en reglas, realizará una revisión humana de un par de documentos para llegar a reglas lingüísticas como ésta:

  • Si el documento contiene palabras como dinero, dólar, PIB o inflación, pertenece al grupo (clase) Política. 

Los sistemas basados en reglas pueden perfeccionarse con el tiempo y son comprensibles para el ser humano. Sin embargo, esta estrategia presenta ciertos inconvenientes. 

Estos sistemas, para empezar, exigen profundos conocimientos en la materia. Llevan mucho tiempo, ya que crear normas para un sistema complicado puede ser difícil y a menudo requiere un estudio y unas pruebas exhaustivas. 

Dado que añadir nuevas reglas puede alterar los resultados de las reglas preexistentes, los sistemas basados en reglas también son difíciles de mantener y no se amplían eficazmente.

Clasificación de textos basada en el aprendizaje automático

La clasificación de textos basada en el aprendizaje automático es un problema de aprendizaje automático supervisado. Aprende el mapeo de los datos de entrada (texto en bruto) con las etiquetas (también conocidas como variables objetivo). Esto es similar a los problemas de clasificación no textual en los que entrenamos un algoritmo de clasificación supervisado en un conjunto de datos tabulares para predecir una clase, con la excepción de que en la clasificación textual, los datos de entrada son texto en bruto en lugar de características numéricas. 

Como cualquier otro aprendizaje automático supervisado, el aprendizaje automático de clasificación de textos consta de dos fases: entrenamiento y predicción.

Aprendizaje automático Clasificación de textos

Fuente de la imagen

Fase de formación

Durante la fase de formación, se entrena un algoritmo de aprendizaje automático supervisado en el conjunto de datos de entrada etiquetados. Al final de este proceso, obtenemos un modelo entrenado que podemos utilizar para obtener predicciones (etiquetas) sobre datos nuevos y no vistos.

Fase de predicción

Una vez entrenado un modelo de aprendizaje automático, puede utilizarse para predecir etiquetas en datos nuevos y no vistos. Esto suele hacerse desplegando el mejor modelo de una fase anterior como API en el servidor. 

Proceso de preprocesamiento de textos

El preprocesamiento de datos de texto es un paso importante en cualquier tarea de procesamiento del lenguaje natural. Ayuda a limpiar y preparar los datos de texto para su posterior tratamiento o análisis. 

Un proceso de preprocesamiento de texto es una serie de pasos que se aplican a los datos de texto sin procesar para prepararlos para su uso en tareas de procesamiento del lenguaje natural. 

Los pasos de un proceso de preprocesamiento de texto pueden variar, pero suelen incluir tareas como la tokenización, la eliminación de palabras vacías, la separación de palabras y la lematización. Estos pasos ayudan a reducir el tamaño de los datos de texto y también a mejorar la precisión de tareas de PLN como la clasificación de textos y la extracción de información.

Los datos de texto son difíciles de procesar porque no están estructurados y suelen contener mucho ruido. Este ruido puede consistir en faltas de ortografía, errores gramaticales y formatos no estándar. El objetivo de un proceso de preprocesamiento de texto es eliminar este ruido para que los datos puedan analizarse más fácilmente.


Minería de textos

Fuente de texto

¿Quiere saber más? Consulte nuestro tema Minería de textos con R

Extracción de características

Los dos métodos más comunes para extraer características del texto o, en otras palabras, convertir datos de texto (cadenas) en características numéricas para poder entrenar el modelo de aprendizaje automático son: Bag of Words (también conocido como CountVectorizer) y Tf-IDF. 

Bolsa de palabras

Un modelo de bolsa de palabras (BoW) es una forma sencilla de representar datos de texto como características numéricas. Consiste en crear un vocabulario de palabras conocidas en el corpus y, a continuación, crear un vector para cada documento que contenga recuentos de la frecuencia con la que aparece cada palabra.

Bolsa de palabras

Fuente de la imagen

TF-IDF

TF-IDF significa frecuencia de términos-frecuencia inversa de documentos, y es otra forma de representar texto como características numéricas. El modelo Bag of Words (BoW) presenta algunas deficiencias que Tf-IDF supera. No entraremos en detalles al respecto en este artículo, pero si quieres profundizar en este concepto, consulta nuestro curso Introducción al Procesamiento del Lenguaje Natural en Python.

El modelo TF-IDF se diferencia del modelo de bolsa de palabras en que tiene en cuenta la frecuencia de las palabras del documento, así como la frecuencia inversa del documento. Esto significa que el modelo TF-IDF tiene más probabilidades de identificar las palabras importantes de un documento que el modelo de bolsa de palabras.

Ejemplo de clasificación de textos de extremo a extremo en Python

Importar conjunto de datos

En primer lugar, empieza importando el conjunto de datos directamente desde este enlace de GitHub. La colección SMS Spam es un conjunto de datos que contiene 5.574 mensajes SMS en inglés con la etiqueta Spam o Ham (no spam). Nuestro objetivo es entrenar un modelo de aprendizaje automático que aprenda del texto del SMS y de la etiqueta y sea capaz de predecir la clase de los mensajes SMS.

# reading data

import pandas as pd

data = pd.read_csv('https://raw.githubusercontent.com/mohitgupta-omg/Kaggle-SMS-Spam-Collection-Dataset-/master/spam.csv', encoding='latin-1')

data.head()

SpamHam Unprocessed

Después de leer el conjunto de datos, observe que hay algunas columnas adicionales que no necesitamos. Sólo necesitamos las dos primeras columnas. Sigamos adelante y eliminemos las columnas restantes y también cambiemos el nombre de las dos primeras columnas.

# drop unnecessary columns and rename cols

data.drop(['Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4'], axis=1, inplace=True)

data.columns = ['label', 'text']

data.head()

SpamHam Preprocessing

Análisis exploratorio de datos (AED)

Hagamos un EDA básico para ver si faltan valores en el conjunto de datos y cuál es el equilibrio objetivo.

# check missing values

data.isna().sum()

EDA

# check data shape

data.shape
>>> (5572, 2)
# check target balance

data['label'].value_counts(normalize = True).plot.bar()

SpamHam EDA

Preprocesamiento de textos

Aquí es donde tiene lugar toda la limpieza del texto. Es un bucle que itera a través de los 5.572 documentos y hace lo siguiente:

  • Eliminar todos los caracteres especiales
  • Todas las palabras en minúsculas
  • Tokenize
  • Eliminar palabras clave
  • Lemmatizar
# text preprocessing




# download nltk

import nltk

nltk.download('all')




# create a list text

text = list(data['text'])




# preprocessing loop

import re

from nltk.corpus import stopwords

from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()




corpus = []




for i in range(len(text)):

    r = re.sub('[^a-zA-Z]', ' ', text[i])

    r = r.lower()

    r = r.split()

    r = [word for word in r if word not in stopwords.words('english')]

    r = [lemmatizer.lemmatize(word) for word in r]

    r = ' '.join(r)

    corpus.append(r)




#assign corpus to data['text']

data['text'] = corpus

data.head()

Spam Ham Processed 1.png

Entrenamiento-prueba-división

Dividamos el conjunto de datos en entrenamiento y prueba antes de la extracción de características.

# Create Feature and Label sets

X = data['text']

y = data['label']




# train test split (66% train - 33% test)

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=123)




print('Training Data :', X_train.shape)

print('Testing Data : ', X_test.shape)
>>> Training Data : (3733,)

>>> Testing Data :  (1839,)

Extracción de características

Aquí utilizamos el modelo de bolsa de palabras (CountVectorizer) para convertir el texto depurado en características numéricas. Esto es necesario para entrenar el modelo de aprendizaje automático.

# Train Bag of Words model

from sklearn.feature_extraction.text import CountVectorizer

cv = CountVectorizer()

X_train_cv = cv.fit_transform(X_train)

X_train_cv.shape
>>> (3733, 7020)

Formación y evaluación de modelos

En esta parte, entrenamos un modelo de Regresión Logística y evaluamos la matriz de confusión del modelo entrenado.

# Training Logistic Regression model

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()

lr.fit(X_train_cv, y_train)




# transform X_test using CV

X_test_cv = cv.transform(X_test)




# generate predictions

predictions = lr.predict(X_test_cv)

predictions
>>> array(['ham', 'spam', 'ham', ..., 'ham', 'ham', 'spam'], dtype=object)
# confusion matrix

import pandas as pd

from sklearn import metrics

df = pd.DataFrame(metrics.confusion_matrix(y_test,predictions), index=['ham','spam'], columns=['ham','spam'])

df

SpamHam Table

Consulta el cuaderno completo de DataLab para obtener más información.

Conclusión

La PNL sigue siendo un área activa de investigación y desarrollo, con muchas universidades y empresas trabajando en el desarrollo de nuevos algoritmos y aplicaciones. La PNL es un campo interdisciplinar en el que los investigadores proceden de diversos campos, como la informática, la lingüística, la psicología y las ciencias cognitivas.

La clasificación de textos es una tarea potente y ampliamente utilizada en PNL que puede emplearse para categorizar o predecir automáticamente una clase de documentos de texto no vistos, a menudo con ayuda del aprendizaje automático supervisado. 

No siempre es preciso, pero cuando se utiliza correctamente, puede añadir mucho valor a sus análisis. Hay muchas formas y algoritmos diferentes de configurar un clasificador de texto, y no hay un único enfoque que sea el mejor. Es importante experimentar y encontrar lo que funciona mejor para tus datos y tus objetivos.

Preguntas frecuentes sobre clasificación de textos

¿Puede utilizarse la Clasificación por Texto si hay más de dos etiquetas?

Sí, si sólo hay dos etiquetas, entonces se utilizarán algoritmos de clasificación binarios. Si hay más de dos etiquetas, tendrá que utilizar un algoritmo de clasificación multiclase.

¿Es la clasificación de textos una tarea de PNL?

Sí, la PNL es un campo muy amplio. La clasificación de textos es uno de los usos fundamentales de la PNL, con aplicaciones en una amplia gama de sectores.

¿Es la clasificación de textos un problema de aprendizaje automático supervisado?

Los sistemas de clasificación de textos también pueden basarse en reglas, pero lo cierto es que están pasando rápidamente de moda por ser difíciles de mantener y ampliar. Un sistema basado en el aprendizaje automático para tareas de clasificación de textos utiliza el aprendizaje automático supervisado.

¿Qué es el procesamiento del lenguaje natural?

El procesamiento del lenguaje natural (PLN) es un campo de la informática y la inteligencia artificial que se ocupa de las interacciones entre los ordenadores y los lenguajes humanos (naturales), en particular de cómo programar ordenadores para procesar y analizar grandes cantidades de datos de lenguaje natural.

¿Es la clasificación de textos lo mismo que el análisis de sentimientos?

El análisis de sentimientos es un ejemplo de sistema de clasificación de textos. Sin embargo, como su nombre indica, el análisis de sentimientos suele realizarse cuando la etiqueta es algún tipo de sentimiento (positivo o negativo, alegre o triste, etc.).

¿Se puede clasificar un texto sin recurrir al aprendizaje automático?

Sí, también podemos utilizar sistemas basados en reglas para la clasificación de textos.

¿Podemos utilizar el aprendizaje profundo para la clasificación de textos?

Sí, podemos utilizar cualquier algoritmo de aprendizaje profundo en lugar del aprendizaje automático. Echa un vistazo a este increíble curso sobre Redes neuronales recurrentes (RNN) para el modelado del lenguaje en Python para aprender más sobre PNL y aprendizaje profundo. Si desea construir un modelo de clasificación de texto utilizando TensorFlow, consulte este Caso de Estudio TensorFlow 2.0 en Datacamp.

¿Cuál es el mejor algoritmo para la clasificación de textos?

No existe el mejor algoritmo. Por lo general, se considera que el algoritmo de bayes ingenuo funciona bien con datos de alta dimensión (texto).

¿Se utiliza el BERT para la clasificación de textos?

Sí, BERT, siglas de Bidirectional Encoder Representations from Transformers, se basa en la arquitectura de Transformers, un modelo de aprendizaje profundo. Entre otros muchos casos de uso, BERT también puede utilizarse para sistemas de clasificación de textos. Consulte nuestro tutorial sobre PNL con BERT para obtener más información.

¿Es lo mismo clasificación de textos que minería de textos?

No, la minería de textos es el proceso de transformar texto no estructurado en un formato estructurado para identificar patrones significativos, mientras que el objetivo de la clasificación de textos es categorizar o predecir una clase de documentos de texto no vistos, a menudo con la ayuda del aprendizaje automático supervisado.

Temas

Cursos superiores

Certificación disponible

Course

Minería de textos con bolsas de palabras en R

4 hr
42.5K
Aprenda la técnica de la bolsa de palabras para la minería de textos con R.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

Todo lo que sabemos sobre GPT-5

Predecir cómo podría ser la próxima evolución de la tecnología de IA de OpenAI y qué avances podría tener el modelo GPT-5.
Josep Ferrer's photo

Josep Ferrer

10 min

blog

Los 16 mejores marcos y bibliotecas de IA: Guía para principiantes

Explore los mejores marcos y bibliotecas de IA y sus fundamentos en esta guía definitiva para profesionales de datos noveles que comienzan su carrera profesional.
Yuliya Melnik's photo

Yuliya Melnik

15 min

blog

¿Qué es la tokenización?

La tokenización divide el texto en partes más pequeñas para facilitar el análisis mecánico y ayudar a las máquinas a comprender el lenguaje humano.
Abid Ali Awan's photo

Abid Ali Awan

9 min

tutorial

Primeros pasos con Claude 3 y la API de Claude 3

Conozca los modelos Claude 3, las pruebas de rendimiento detalladas y cómo acceder a ellas. Además, descubra la nueva API Python de Claude 3 para generar texto, acceder a funciones de visión y streaming.
Abid Ali Awan's photo

Abid Ali Awan

tutorial

Guía introductoria para perfeccionar los LLM

La puesta a punto de grandes modelos lingüísticos (LLM) ha revolucionado el Procesamiento del Lenguaje Natural (PLN), ofreciendo capacidades sin precedentes en tareas como la traducción de idiomas, el análisis de sentimientos y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como GPT-2, mejorando su rendimiento en dominios específicos mediante el proceso de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

12 min

tutorial

Cómo recortar una cadena en Python: Tres métodos diferentes

Aprenda los fundamentos del recorte de caracteres iniciales y finales de una cadena en Python.
Adel Nehme's photo

Adel Nehme

5 min

See MoreSee More