Travailler avec des données textuelles

Beginner

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

Introduction

Dans ce laboratoire, nous allons explorer comment travailler avec des données textuelles à l'aide de scikit-learn, une bibliothèque populaire de machine learning en Python. Nous apprendrons comment charger des données textuelles, les prétraiter, extraire des caractéristiques, entraîner un modèle et évaluer ses performances.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.

Chargement des données textuelles

Tout d'abord, nous devons charger les données textuelles avec lesquelles nous allons travailler. Nous allons utiliser l'ensemble de données 20 Newsgroups, qui contient des articles de presse provenant de vingt sujets différents. Pour charger l'ensemble de données, nous pouvons utiliser la fonction fetch_20newsgroups de scikit-learn.

from sklearn.datasets import fetch_20newsgroups

## Charge l'ensemble de données
categories = ['alt.atheism','soc.religion.christian', 'comp.graphics','sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)

Maintenant que nous avons chargé les données, nous pouvons explorer sa structure et son contenu.

Prétraitement des données textuelles

Avant d'utiliser les données textuelles pour l'apprentissage automatique, nous devons les prétraiter. Cela implique plusieurs étapes, telles que la suppression de la ponctuation, la conversion de tout le texte en minuscules et la tokenisation du texte en mots individuels. Nous pouvons effectuer ces étapes de prétraitement à l'aide de CountVectorizer et TfidfTransformer de scikit-learn.

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer

## Prétraite les données textuelles
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)

Maintenant, nos données textuelles sont prétraitées et prêtes pour l'extraction de caractéristiques.

Extraction de caractéristiques

Pour représenter les données textuelles sous forme de vecteurs de caractéristiques, nous pouvons utiliser la représentation des sacs de mots. Cette représentation attribue un identifiant entier fixe à chaque mot de l'ensemble d'entraînement et compte le nombre d'occurrences de chaque mot dans chaque document. Nous pouvons extraire ces vecteurs de caractéristiques à l'aide de CountVectorizer de scikit-learn.

from sklearn.feature_extraction.text import CountVectorizer

## Extrait les vecteurs de caractéristiques
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)

Maintenant, nous avons extrait les vecteurs de caractéristiques, et nous pouvons les utiliser pour entraîner notre modèle.

Entraînement du modèle

Maintenant que nous avons nos vecteurs de caractéristiques, nous pouvons entraîner un modèle pour classifier les données textuelles. Dans cet exemple, nous utiliserons l'algorithme Multinomial Naive Bayes, qui est un algorithme populaire pour la classification de texte.

from sklearn.naive_bayes import MultinomialNB

## Entraîne le modèle
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)

Maintenant, notre modèle est entraîné et prêt pour la prédiction.

Évaluation du modèle

Pour évaluer les performances de notre modèle, nous pouvons utiliser un ensemble de test séparé. Nous pouvons charger l'ensemble de test en utilisant le même processus que pour l'ensemble d'entraînement.

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

Maintenant, nous pouvons prétraiter l'ensemble de test et extraire les vecteurs de caractéristiques.

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

Enfin, nous pouvons utiliser notre modèle entraîné pour effectuer des prédictions sur l'ensemble de test et calculer la précision.

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

Sommaire

Dans ce laboratoire, nous avons appris à travailler avec des données textuelles à l'aide de scikit-learn. Nous avons chargé les données textuelles, les avons prétraitées, extrait des vecteurs de caractéristiques, entraîné un modèle et évalué ses performances. Travailler avec des données textuelles peut être difficile, mais scikit-learn fournit des outils et des algorithmes puissants pour faciliter le processus.