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.
À 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.
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)
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 :
Lorsque vous appelez directement le tokenizer, il traite le texte et génère plusieurs composants clés :
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)
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.
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.
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 ».
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 :
Ces jetons spéciaux aident le modèle à comprendre les limites du texte saisi.
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.
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 :
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!