Trabajando con datos de texto

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo trabajar con datos de texto utilizando scikit-learn, una popular biblioteca de aprendizaje automático en Python. Aprenderemos cómo cargar datos de texto, preprocesarlos, extraer características, entrenar un modelo y evaluar su rendimiento.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/naive_bayes("Naive Bayes") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_extraction("Feature Extraction") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/naive_bayes -.-> lab-71103{{"Trabajando con datos de texto"}} sklearn/feature_extraction -.-> lab-71103{{"Trabajando con datos de texto"}} sklearn/datasets -.-> lab-71103{{"Trabajando con datos de texto"}} ml/sklearn -.-> lab-71103{{"Trabajando con datos de texto"}} end

Carga de los datos de texto

En primer lugar, necesitamos cargar los datos de texto con los que vamos a trabajar. Utilizaremos el conjunto de datos 20 Newsgroups, que contiene artículos de noticias de veinte temas diferentes. Para cargar el conjunto de datos, podemos utilizar la función fetch_20newsgroups de scikit-learn.

from sklearn.datasets import fetch_20newsgroups

## Carga el conjunto de datos
categories = ['alt.atheism','soc.religion.christian', 'comp.graphics','sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)

Ahora ya hemos cargado los datos y podemos explorar su estructura y contenido.

Preprocesamiento de los datos de texto

Antes de poder utilizar los datos de texto para el aprendizaje automático, es necesario preprocesarlos. Esto implica varios pasos, como eliminar la puntuación, convertir todo el texto a minúsculas y tokenizar el texto en palabras individuales. Podemos realizar estos pasos de preprocesamiento utilizando CountVectorizer y TfidfTransformer de scikit-learn.

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer

## Preprocesa los datos de texto
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)

tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

Ahora nuestros datos de texto están preprocesados y listos para la extracción de características.

Extracción de características

Para representar los datos de texto como vectores de características, podemos utilizar la representación de bolsas de palabras. Esta representación asigna un id entero fijo a cada palabra en el conjunto de entrenamiento y cuenta el número de ocurrencias de cada palabra en cada documento. Podemos extraer estos vectores de características utilizando CountVectorizer de scikit-learn.

from sklearn.feature_extraction.text import CountVectorizer

## Extrae vectores de características
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)

Ahora hemos extraído los vectores de características y podemos utilizarlos para entrenar nuestro modelo.

Entrenamiento del modelo

Ahora que tenemos nuestros vectores de características, podemos entrenar un modelo para clasificar los datos de texto. En este ejemplo, utilizaremos el algoritmo Multinomial Naive Bayes, que es un algoritmo popular para la clasificación de texto.

from sklearn.naive_bayes import MultinomialNB

## Entrena el modelo
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)

Ahora nuestro modelo está entrenado y listo para hacer predicciones.

Evaluación del modelo

Para evaluar el rendimiento de nuestro modelo, podemos utilizar un conjunto de prueba separado. Podemos cargar el conjunto de prueba utilizando el mismo proceso que el conjunto de entrenamiento.

twenty_test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=42)

Ahora podemos preprocesar el conjunto de prueba y extraer los vectores de características.

X_test_counts = count_vect.transform(twenty_test.data)
X_test_tfidf = tfidf_transformer.transform(X_test_counts)

Finalmente, podemos utilizar nuestro modelo entrenado para hacer predicciones en el conjunto de prueba y calcular la precisión.

predicted = clf.predict(X_test_tfidf)
accuracy = np.mean(predicted == twenty_test.target)

Resumen

En este laboratorio, aprendimos cómo trabajar con datos de texto utilizando scikit-learn. Cargamos los datos de texto, los preprocesamos, extrajimos vectores de características, entrenamos un modelo y evaluamos su rendimiento. Trabajar con datos de texto puede ser desafiante, pero scikit-learn ofrece herramientas y algoritmos potentes para facilitar el proceso.