Encodage des données textuelles

Apprentissage profond pour le texte avec PyTorch

Shubham Jain

Data Scientist

Encodage de texte

Pipeline de traitement Pytorch

  • Convertir le texte en nombres lisibles par machine
  • Permettre l'analyse et la modélisation

Données séquentielles pour trouver des insights

Apprentissage profond pour le texte avec PyTorch

Techniques d'encodage

  • One-hot encoding : transforme les mots en représentations numériques uniques
  • Sac de mots (BoW) : capte la fréquence des mots, sans tenir compte de l'ordre
  • TF‑IDF : équilibre rareté et importance
  • Embedding : convertit les mots en vecteurs, saisissant le sens sémantique (chapitre 2)
Apprentissage profond pour le texte avec PyTorch

One-hot encoding

  • Faire correspondre chaque mot à un vecteur distinct
  • Vecteur binaire :
    • 1 si le mot est présent
    • 0 s'il est absent
  • ['cat', 'dog', 'rabbit']
    • 'cat' [1, 0, 0]
    • 'dog' [0, 1, 0]
    • 'rabbit' [0, 0, 1]
Apprentissage profond pour le texte avec PyTorch

One-hot encoding avec PyTorch

import torch
vocab = ['cat', 'dog', 'rabbit']

vocab_size = len(vocab)
one_hot_vectors = torch.eye(vocab_size)
one_hot_dict = {word: one_hot_vectors[i] for i, word in enumerate(vocab)}
print(one_hot_dict)
{'cat': tensor([1., 0., 0.]),
  'dog': tensor([0., 1., 0.]),
  'rabbit': tensor([0., 0., 1.])}
Apprentissage profond pour le texte avec PyTorch

Sac de mots

  • Exemple : « The cat sat on the mat »
  • Sac de mots :
    • {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}
  • Chaque document est un ensemble non ordonné de mots
  • Met l'accent sur la fréquence, pas l'ordre
Apprentissage profond pour le texte avec PyTorch

CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()
corpus = ['This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?']
X = vectorizer.fit_transform(corpus)
print(X.toarray())
print(vectorizer.get_feature_names_out())
[[0 1 1 1 0 0 1 0 1]
 [0 2 0 1 0 1 1 0 1]
 [1 0 0 1 1 0 1 1 1]
 [0 1 1 1 0 0 1 0 1]]

['and' 'document' 'first' 'is' 'one' 'second' 'the' 'third' 'this']
Apprentissage profond pour le texte avec PyTorch

TF‑IDF

  • Term Frequency–Inverse Document Frequency
    • Évalue l'importance des mots dans un document
    • Les mots rares ont un score plus élevé
    • Les mots courants, un score plus faible
    • Met en valeur les mots informatifs
Apprentissage profond pour le texte avec PyTorch

TfidfVectorizer

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()

corpus = ['This is the first document.','This document is the second document.', 'And this is the third one.','Is this the first document?']
X = vectorizer.fit_transform(corpus)
print(X.toarray())
print(vectorizer.get_feature_names_out())
[[0.         0.         0.68091856 0.51785612 0.51785612 0.        ]
 [0.         0.         0.          0.51785612 0.51785612 0.68091856]
 [0.85151335 0.42575668 0.         0.32274454 0.32274454 0.        ]
 [0.         0.         0.68091856 0.51785612 0.51785612 0.        ]]

['and' 'document' 'first' 'is' 'one' 'second']
Apprentissage profond pour le texte avec PyTorch

TfidfVectorizer

Code TFIDF

Apprentissage profond pour le texte avec PyTorch

Techniques d'encodage

Techniques : one-hot encoding, sac de mots et TF‑IDF

  • Aident les modèles à comprendre et traiter le texte
  • Choisir une technique pour éviter la redondance
  • D'autres techniques existent
Apprentissage profond pour le texte avec PyTorch

Passons à la pratique !

Apprentissage profond pour le texte avec PyTorch

Preparing Video For Download...