Créer un modèle sac de mots

Feature Engineering pour le NLP en Python

Rounak Banik

Data Scientist

Rappel : format des données pour les algorithmes de ML

Pour tout algorithme de Machine Learning,

  • Les données doivent être tabulaires
  • Les variables d'entraînement doivent être numériques
Feature Engineering pour le NLP en Python

Modèle sac de mots

  • Extraire les tokens de mots
  • Calculer la fréquence des tokens
  • Construire un vecteur de mots à partir de ces fréquences et du vocabulaire du corpus
Feature Engineering pour le NLP en Python

Exemple de modèle sac de mots

Corpus

"The lion is the king of the jungle"
"Lions have lifespans of a decade"
"The lion is an endangered species"
Feature Engineering pour le NLP en Python

Exemple de modèle sac de mots

Vocabulaire → a, an, decade, endangered, have, is, jungle, king, lifespans, lion, Lions, of, species, the, The

"The lion is the king of the jungle"
[0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 2, 1]
"Lions have lifespans of a decade"
[1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0]
"The lion is an endangered species"
[0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1]
Feature Engineering pour le NLP en Python

Prétraitement du texte

  • Lions, lion → lion
  • The, the → the
  • Pas de ponctuation
  • Pas de stopwords
  • Vocabulaire plus réduit
  • Moins de dimensions améliore les performances
Feature Engineering pour le NLP en Python

Modèle sac de mots avec sklearn

corpus = pd.Series([
    'The lion is the king of the jungle',
    'Lions have lifespans of a decade',
    'The lion is an endangered species'
])
Feature Engineering pour le NLP en Python

Modèle sac de mots avec sklearn

# Import CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer

# Créer l'objet CountVectorizer vectorizer = CountVectorizer()
# Générer la matrice de vecteurs de mots bow_matrix = vectorizer.fit_transform(corpus) print(bow_matrix.toarray())
array([[0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 3],
       [0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0],
       [1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1]], dtype=int64)
Feature Engineering pour le NLP en Python

Passons à la pratique !

Feature Engineering pour le NLP en Python

Preparing Video For Download...