recherche
Maisondéveloppement back-endTutoriel PythonComprendre la tokenisation : une plongée approfondie dans les tokenizers avec un visage câlin

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)

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!"

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)

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)
  • 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!"

Sortie :

res = tokenizer(sentence)
print(res)

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]
}

Sortie :

tokens = tokenizer.tokenize(sentence)
print(tokens)

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', '!']

Sortie :

ids = tokenizer.convert_tokens_to_ids(tokens)
print(ids)

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!

Déclaration
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
Comment coupez-vous une liste de python?Comment coupez-vous une liste de python?May 02, 2025 am 12:14 AM

SlitingyPapyThonListIsDoneUsingTheSyntaxList [Démarrage: arrêt: étape] .He'showitworks: 1) startisheindexofthefirStelementoinclude.2) stopisTheIndexoftheFirstelementsoexclude.3) StepistheincrementBetweenselans.it'susefulfactingPortationSoListShsandCanusegeg

Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?May 02, 2025 am 12:09 AM

NumpyAllowsForvariousOperations ONARRAYS: 1) BasicarithmeticLikeaddition, Soustraction, Multiplication, anddivision; 2) AdvancedOperationSuchasmatrixMultiplication; 3) Element-Wiseoperations withoutExplicitloop

Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?May 02, 2025 am 12:09 AM

ArraySinpython, en particulier ThroughNumpyandPandas, aressentialfordataanalysis, offingspeeedAfficiency.1) numpyarrayablefficienthandlingoflargedatasetsandComplexOperationsLikEMoVingAverages.2)

Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?May 02, 2025 am 12:08 AM

ListsandNumpyArraysInpythonHaveDidifferentMemoryfootprints: listsaRemoreFlexibles Butlessmemory économe, tandis que la liste de résensés est-ce qui

Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?May 02, 2025 am 12:07 AM

ToenSurepythonscriptsBeHavecorrectlyAcrossDevelopment, mise en scène et production, catégories de type: 1) EnvironmentVariblesForsImplesettings, 2) ConfigurationFilesForComplexsetups et3) dynamicloadingforadaptability.eachMethodoffersNebeneFitsAndreCeresca

Comment trancher un tableau Python?Comment trancher un tableau Python?May 01, 2025 am 12:18 AM

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?May 01, 2025 am 12:06 AM

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Comment pouvez-vous convertir un tableau Python en une liste Python?Comment pouvez-vous convertir un tableau Python en une liste Python?May 01, 2025 am 12:05 AM

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.