Clasificación de textos utilizando Python y la librería Scikit-learn

En el mundo actual, la cantidad de información en línea es cada vez mayor y a menudo es difícil encontrar la información correcta y relevante en medio de todo el ruido. ¿Qué pasa si pudiéramos automatizar el proceso de clasificar textos para hacer más fácil la tarea de buscar información específica? En este tutorial, aprenderemos cómo hacer precisamente eso utilizando Python y la biblioteca Scikit-learn.

Requisitos previos

Antes de continuar, asegúrese de tener instalados los siguientes elementos:

  • Python 3.x
  • Scikit-learn
  • Jupyter Notebook

Comenzando

En la mayoría de los casos, cuando trabajamos con texto, queremos clasificarlo en categorías específicas. Por ejemplo, podemos tener una lista de correos electrónicos y queremos separarlos en correos electrónicos personales y correos electrónicos de trabajo. O podemos tener noticias y queremos clasificarlas en categorías de entretenimiento, deportes y política. En este ejemplo, usaremos unos datos preexistentes de noticias y vamos a clasificarlos. Los datos de noticias supondremos que están almacenados en un directorio llamado `data`.

Importando las librerías requeridas

Primero, debemos importar las bibliotecas que necesitamos. Lo primero que haremos es importar Numpy y Scikit-learn para cargar los datos y crear nuestro modelo. También usaremos el módulo train_test_split para dividir nuestros datos en conjuntos de entrenamiento y prueba. Además, importaremos otras bibliotecas como pandas y matplotlib para ayudarnos a visualizar los resultados.


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_files
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.metrics import confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
	

Carga de los datos

A continuación, cargamos los datos y los dividimos en conjunto de entrenamiento y prueba. Para esto, usamos el método `load_files` de Scikit-learn y especificamos la ruta de nuestro directorio con los datos. Luego, usamos `train_test_split` para dividir los datos.


dataset = load_files('data', decode_error='replace', random_state=45)
X_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.3, random_state=45)
	

Preprocesamiento de datos

A continuación, necesitamos realizar el preprocesamiento de datos para poder entrenar nuestro modelo. ‘CountVectorizer’ es una herramienta en scikit-learn que convierte colecciones de documentos en matrices de cuentas de tokens. Es una herramienta muy útil para la extracción de características de datos de texto. A continuación, creamos un objeto CountVectorizer y lo ajustamos a nuestro conjunto de entrenamiento.


count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X_train)
X_test_counts = count_vect.transform(X_test)
	

Entrenamiento del modelo

Ahora estamos listos para entrenar nuestro modelo. Multinomial Naive Bayes es una de las mejores técnicas para la clasificación de texto en múltiples categorías. Creamos una instancia de MultinomialNB y lo ajustamos al conjunto de entrenamiento que procesamos anteriormente.


nb = MultinomialNB()
nb.fit(X_train_counts, y_train)
	

Prueba del modelo

Ahora, evaluamos nuestro modelo con el conjunto de prueba. Para hacer esto, usamos el método ‘predict’ en nuestro objeto MultinomialNB y lo pasamos como argumento nuestra matriz sparse de datos de prueba (X_test_counts).


y_pred = nb.predict(X_test_counts)
	

Resultados

A continuación, presentamos los resultados obtenidos mediante la matriz de confusión y el informe de clasificación.


cm = confusion_matrix(y_test, y_pred)
cr = classification_report(y_test, y_pred, target_names=dataset.target_names)
print('Matriz de confusión:')
print(cm)
print('Informe de clasificación:')
print(cr)
	

Este tutorial cubrió los conceptos básicos de cómo utilizar Python y Scikit-learn para la clasificación de texto. Ahora debería ser capaz de aplicar estos conceptos a sus propios conjuntos de datos de texto y hacer predicciones en modelos de clasificación. Además, aquí hay algunos enlaces útiles para ayudarte a mejorar tus habilidades en el procesamiento de texto:

No te pierdas los últimos artículos:

Web Scraping con Python y BeautifulSoup para Principiantes

Bienvenido a esta guía sobre Web Scraping con Python y BeautifulSoup, diseñada especialmente para principiantes. Si estás buscando aprender a extraer datos de sitios web de manera eficiente, seguro que ...

Curso de Python Básico Gratis

Módulo 1: Introducción a Python Nuestra meta principal es que, al final de este curso, tengas una sólida comprensión de los fundamentos de Python y estés listo para crear tus ...

Sistemas Expertos: ¿Qué son y para qué sirven?

Los sistemas expertos representan una rama fascinante de la inteligencia artificial, diseñada para emular la toma de decisiones de un humano experto en un campo particular. Estas herramientas avanzadas combinan ...

La Historia de la Inteligencia Artificial contada en Años

¿Cómo comenzó todo? Echemos un ojo a la historia de la IA a lo largo del tiempo. Desde 1950 hasta 2024. El artículo es largo, usa la tabla de contenidos ...

¿Qué es el meta-aprendizaje?

El mundo de la Inteligencia Artificial (IA) está en constante evolución, y una de las áreas más intrigantes y prometedoras es el metaaprendizaje. Pero, ¿qué es exactamente el metaaprendizaje y ...
Cargando...