Aperçu de la classification de texte

Apprentissage profond pour le texte avec PyTorch

Shubham Jain

Instructor

Définition de la classification de texte

  • Attribuer des étiquettes au texte
  • Donner du sens aux mots et aux phrases

 

 

Types de classification en Machine Learning

  • Organise et structure des données non structurées
  • Applications :

    • Analyse du sentiment dans les avis
    • Détection de pourriel dans les courriels
    • Étiquetage d'articles de presse par sujets pertinents
  • Types : binaire, multi-classe, multi-étiquette

Apprentissage profond pour le texte avec PyTorch

Classification binaire

  • Trier en deux catégories
  • Exemple : détection de pourriel
  • Les courriels sont classés « pourriel » ou « non pourriel »

Classification binaire

1 https://storage.googleapis.com/gweb-cloudblog-publish/images/image4_v2LFcq0.max-1200x1200.png
Apprentissage profond pour le texte avec PyTorch

Classification multi-classe

Classification d'actualités

  • Trier en plusieurs catégories
  • Exemple : articles de presse classés dans :
    1. Politique
    2. Sports
    3. Technologie
Apprentissage profond pour le texte avec PyTorch

Classification multi-étiquette

  • Un texte peut recevoir plusieurs étiquettes
  • Exemple : livres à genres multiples
    • Action
    • Aventure
    • Fantastique
Apprentissage profond pour le texte avec PyTorch

Qu'est-ce qu'un word embedding ?

Pipeline d'intégration de mots

Exemple d'intégration de mots

  • Les encodages précédents sont un bon début
    • Souvent trop de caractéristiques et incapables de repérer des mots similaires
  • Les word embeddings associent les mots à des vecteurs numériques
  • Exemple de relation sémantique :
    • King et queen
    • Man et woman
Apprentissage profond pour le texte avec PyTorch

Correspondance mot–indice

  • Exemple :
    • "King" -> 1
    • "Queen" -> 2
  • Compact et efficace en calcul
  • Suit la tokenisation dans le pipeline
Apprentissage profond pour le texte avec PyTorch

Word embeddings dans PyTorch

  • torch.nn.Embedding :
    • Crée des vecteurs de mots à partir des indices

 

  • Entrée : indices pour ['The', 'cat', 'sat', 'on', 'the', 'mat']
Embedding for 'the': tensor([-0.4689,  0.3164, -0.2971, -0.1291,  0.4064])
Embedding for 'cat': tensor([-0.0978, -0.4764,  0.0476,  0.1044, -0.3976])
Embedding for 'sat': tensor([ 0.2731,  0.4431,  0.1275,  0.1434, -0.4721])
Apprentissage profond pour le texte avec PyTorch

Utiliser torch.nn.Embedding

import torch
from torch import nn

words = ["The", "cat", "sat", "on", "the", "mat"] word_to_idx = {word: i for i, word in enumerate(words)}
inputs = torch.LongTensor([word_to_idx[w] for w in words])
embedding = nn.Embedding(num_embeddings=len(words), embedding_dim=10)
output = embedding(inputs)
print(output)
tensor([[ 1.0624,  0.6792,  0.0459,  ... -1.0828, -0.4475,  0.4868],
         ...
         [1.5766,  0.0106,  0.1161,  ...,,  -0.0859, 1.3160,  1.3621])
Apprentissage profond pour le texte avec PyTorch

Utiliser des embeddings dans le pipeline

def preprocess_sentences(text):
  # Tokenization
  # Stemming
  ...

# Word to index mapping
class TextDataset(Dataset): def __init__(self, encoded_sentences): self.data = encoded_sentences def __len__(self): return len(self.data) def __getitem__(self, index): return self.data[index]
def text_processing_pipeline(text):
    tokens = preprocess_sentences(text)
    dataset = TextDataset(tokens)
    dataloader = DataLoader(dataset, batch_size=2, 
                            shuffle=True)
    return dataloader, vectorizer

text = "Your sample text here." dataloader, vectorizer = text_processing_pipeline(text)
embedding = nn.Embedding(num_embeddings=10, embedding_dim=50) for batch in dataloader: output = embedding(batch) print(output)
Apprentissage profond pour le texte avec PyTorch

Passons à la pratique !

Apprentissage profond pour le texte avec PyTorch

Preparing Video For Download...