research / NLP / tfidf

NLP⊞ notebook

Clasificación de texto con TF-IDF y Naive Bayes

Vectorización TF-IDF y clasificación supervisada con Naive Bayes y un pipeline de scikit-learn sobre el dataset 20 Newsgroups.

15 de septiembre de 20251 min readdataset: 20 Newsgroups
NLPTF-IDFscikit-learnPythonNaive Bayes

Objetivo

Construir un pipeline de clasificación de texto usando TF-IDF como vectorizador y Multinomial Naive Bayes como clasificador.

Pipeline

python
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.metrics import classification_report

# Datos
data  = fetch_20newsgroups(subset='train')
X, y  = data.data, data.target

# Pipeline
pipe = Pipeline([
    ('tfidf', TfidfVectorizer(max_features=10_000, stop_words='english')),
    ('clf',   MultinomialNB()),
])

pipe.fit(X, y)

Evaluación

python
from sklearn.datasets import fetch_20newsgroups
test = fetch_20newsgroups(subset='test')
y_pred = pipe.predict(test.data)
print(classification_report(test.target, y_pred, target_names=test.target_names))

Resultado

Accuracy ~83% con configuración base. El pipeline es fácilmente extensible con

python
GridSearchCV
para optimizar
python
max_features
,
python
ngram_range
y el parámetro
python
alpha
del clasificador.