Créer un classifieur Naive Bayes avec BoW

Feature Engineering pour le NLP en Python

Rounak Banik

Data Scientist

Filtrage de spam

message label
WINNER!! As a valued network customer you have been selected to receive a $900 prize reward! To claim call 09061701461 spam
Ah, work. I vaguely remember that. What does it feel like? ham
Feature Engineering pour le NLP en Python

Étapes

  1. Prétraitement du texte
  2. Construire un modèle « sac de mots » (BoW)
  3. Machine Learning
Feature Engineering pour le NLP en Python

Prétraiter le texte avec CountVectorizer

Arguments de CountVectorizer

  • lowercase : False, True
  • strip_accents : 'unciode', 'ascii', None
  • stop_words : 'english', list, None
  • token_pattern : regex
  • tokenizer : function
Feature Engineering pour le NLP en Python

Construire le modèle BoW

# Import CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer

# Créer l'objet CountVectorizer vectorizer = CountVectorizer(strip_accents='ascii', stop_words='english', lowercase=False)
# Import train_test_split from sklearn.model_selection import train_test_split # Séparer en ensembles d'entraînement et de test X_train, X_test, y_train, y_test = train_test_split(df['message'], df['label'], test_size=0.25)
Feature Engineering pour le NLP en Python

Construire le modèle BoW

...
...
# Générer les vecteurs BoW d'entraînement
X_train_bow = vectorizer.fit_transform(X_train)

# Générer les vecteurs BoW de test X_test_bow = vectorizer.transform(X_test)
Feature Engineering pour le NLP en Python

Entraîner le classifieur Naive Bayes

# Import MultinomialNB
from sklearn.naive_bayes import MultinomialNB

# Créer l'objet MultinomialNB clf = MultinomialNB()
# Entraîner clf clf.fit(X_train_bow, y_train)
# Calculer la précision sur l'ensemble de test accuracy = clf.score(X_test_bow, y_test) print(accuracy)
0.760051
Feature Engineering pour le NLP en Python

Passons à la pratique !

Feature Engineering pour le NLP en Python

Preparing Video For Download...