Analyse expérimentale d'un modèle de classification textuelle
En bref
La classification automatique de textes constitue une tâche importante du traitement automatique du langage naturel (TALN). Elle consiste à associer automatiquement un document à une ou plusieurs catégories prédéfinies à partir de ses caractéristiques linguistiques.
Dans cette étude, nous évaluons un modèle simple de classification sur un corpus composé de 5 000 documents répartis en cinq catégories : politique, économie, sport, santé et culture.
L'objectif principal est d'étudier l'influence de la représentation des textes sur les performances du modèle.
Méthodologie
Les documents sont d'abord normalisés puis transformés en représentations vectorielles à l'aide de TF-IDF. Le corpus est ensuite divisé en deux sous-ensembles :
- 80 % pour l'entraînement ;
- 20 % pour l'évaluation.
Les performances sont mesurées à l'aide de l'accuracy, de la précision et du rappel.
Hypothèse : une représentation prenant en compte la fréquence des termes devrait permettre au modèle de distinguer efficacement les catégories présentant un vocabulaire spécifique.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
texts = [
"Le gouvernement annonce une nouvelle réforme",
"L'équipe remporte la finale du championnat",
"Le marché connaît une forte croissance",
"Une nouvelle étude médicale vient de paraître",
]
labels = [
"politique",
"sport",
"economie",
"sante",
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)
X_train, X_test, y_train, y_test = train_test_split(
X, labels, test_size=0.25, random_state=42
)
model = LogisticRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy : {accuracy:.2f}")