Maison > développement back-end > Tutoriel Python > Comprendre la tokenisation : une plongée approfondie dans les tokenizers avec un visage câlin

Comprendre la tokenisation : une plongée approfondie dans les tokenizers avec un visage câlin

Patricia Arquette
Libérer: 2025-01-05 19:25:41
original
904 Les gens l'ont consulté

Understanding Tokenization: A Deep Dive into Tokenizers with Hugging Face

La tokenisation est un concept fondamental du traitement du langage naturel (NLP), en particulier lorsqu'il s'agit de modèles de langage. Dans cet article, nous explorerons ce que fait un tokenizer, comment il fonctionne et comment nous pouvons l'exploiter à l'aide de la bibliothèque de transformateurs de Hugging Face [https://huggingface.co/docs/transformers/index] pour une variété d'applications.

Qu'est-ce qu'un Tokenizer ?

À la base, un tokenizer décompose le texte brut en unités plus petites appelées jetons. Ces jetons peuvent représenter des mots, des sous-mots ou des caractères, selon le type de tokeniseur utilisé. L'objectif de la tokenisation est de convertir un texte lisible par l'homme en une forme plus interprétable par les modèles d'apprentissage automatique.

La tokenisation est essentielle car la plupart des modèles ne comprennent pas directement le texte. Au lieu de cela, ils ont besoin de chiffres pour faire des prédictions, et c'est là qu'intervient le tokenizer. Il récupère le texte, le traite et génère une représentation mathématique avec laquelle le modèle peut fonctionner.

Dans cet article, nous expliquerons le fonctionnement de la tokenisation à l'aide d'un modèle pré-entraîné de Hugging Face, explorerons les différentes méthodes disponibles dans la bibliothèque Transformers et verrons comment la tokenisation influence les tâches en aval telles que l'analyse des sentiments.

Configuration du modèle et du tokenizer

Tout d'abord, importons les bibliothèques nécessaires à partir du package Transformers et chargeons un modèle pré-entraîné. Nous utiliserons le modèle « DistilBERT » affiné pour l'analyse des sentiments.

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
Copier après la connexion
Copier après la connexion

Texte de tokenisation

Une fois le modèle et le tokenizer configurés, nous pouvons commencer à tokeniser une phrase simple. Voici un exemple de phrase :

sentence = "I love you! I love you! I love you!"
Copier après la connexion
Copier après la connexion

Décomposons le processus de tokenisation étape par étape :

1. Sortie du tokenizer : identifiants d'entrée et masque d'attention

Lorsque vous appelez directement le tokenizer, il traite le texte et génère plusieurs composants clés :

  • input_ids : une liste d'identifiants entiers représentant les jetons. Chaque jeton correspond à une entrée dans le vocabulaire du modèle.
  • attention_mask : une liste de uns et de zéros indiquant quels jetons doivent être pris en compte par le modèle. Ceci est particulièrement utile lorsqu’il s’agit de rembourrage.
res = tokenizer(sentence)
print(res)
Copier après la connexion
Copier après la connexion

Sortie :

from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# Create the classifier pipeline
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
Copier après la connexion
Copier après la connexion
  • input_ids : Les entiers représentent les jetons. Par exemple, 1045 correspond à "Je", 2293 à "aimer" et 999 à "!".
  • attention_mask : ceux-ci indiquent que tous les jetons doivent être pris en compte. S'il y avait des jetons de remplissage, vous verriez des zéros dans cette liste, indiquant qu'ils doivent être ignorés.

2. Tokenisation

Si vous êtes curieux de savoir comment le tokenizer divise la phrase en jetons individuels, vous pouvez utiliser la méthode tokenize(). Cela vous donnera une liste de jetons sans les identifiants sous-jacents :

sentence = "I love you! I love you! I love you!"
Copier après la connexion
Copier après la connexion

Sortie :

res = tokenizer(sentence)
print(res)
Copier après la connexion
Copier après la connexion

Remarquez que la tokenisation implique de décomposer la phrase en unités significatives plus petites. Le tokenizer convertit également tous les caractères en minuscules, car nous utilisons le modèle distilbert-base-uncased, qui n'est pas sensible à la casse.

3. Conversion des jetons en identifiants

Une fois que nous avons les jetons, l'étape suivante consiste à les convertir en leurs identifiants entiers correspondants à l'aide de la méthode convert_tokens_to_ids() :

{
    'input_ids': [101, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 1045, 2293, 2017, 999, 102],
    'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
}
Copier après la connexion

Sortie :

tokens = tokenizer.tokenize(sentence)
print(tokens)
Copier après la connexion

Chaque jeton possède un identifiant entier unique qui le représente dans le vocabulaire du modèle. Ces identifiants constituent l'entrée réelle que le modèle utilise pour le traitement.

4. Décoder les identifiants en texte

Enfin, vous pouvez décoder les identifiants des jetons en une chaîne lisible par l'homme à l'aide de la méthode decode() :

['i', 'love', 'you', '!', 'i', 'love', 'you', '!', 'i', 'love', 'you', '!']
Copier après la connexion

Sortie :

ids = tokenizer.convert_tokens_to_ids(tokens)
print(ids)
Copier après la connexion

Remarquez que la chaîne décodée est très proche de l'entrée d'origine, à l'exception de la suppression des majuscules, qui était un comportement standard pour le modèle « sans casse ».

Comprendre les jetons spéciaux

Dans la sortie de input_ids, vous avez peut-être remarqué deux jetons spéciaux : 101 et 102. Ces jetons sont des marqueurs spéciaux utilisés par de nombreux modèles pour désigner le début et la fin d'une phrase. Plus précisément :

  • 101 : marque le début de la phrase.
  • 102 : marque la fin de la phrase.

Ces jetons spéciaux aident le modèle à comprendre les limites du texte saisi.

Le masque d'attention

Comme mentionné précédemment, le attention_mask aide le modèle à faire la distinction entre les jetons réels et les jetons de remplissage. Dans ce cas, attention_mask est une liste de uns, indiquant que tous les jetons doivent être pris en compte. S'il y avait des jetons de remplissage, vous verriez des zéros dans le masque pour demander au modèle de les ignorer.

Résumé du tokeniseur

Pour résumer, la tokenisation est une étape cruciale dans la conversion du texte en une forme que les modèles d'apprentissage automatique peuvent traiter. Le tokenizer de Hugging Face gère diverses tâches telles que :

  • Conversion du texte en jetons.
  • Mappage des jetons avec des identifiants entiers uniques.
  • Générer des masques d'attention pour les modèles afin de savoir quels jetons sont importants.

Conclusion

Comprendre le fonctionnement d'un tokenizer est essentiel pour exploiter efficacement les modèles pré-entraînés. En décomposant le texte en jetons plus petits, nous permettons au modèle de traiter les entrées de manière structurée et efficace. Que vous utilisiez un modèle pour l'analyse des sentiments, la génération de texte ou toute autre tâche PNL, le tokenizer est un outil essentiel dans le pipeline.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal