Introduction
Dans ce projet, vous allez apprendre à implémenter un système de tokenization de texte à l'aide de Python. La tokenization de texte est une tâche fondamentale dans le traitement du langage naturel, où un texte donné est divisé en unités plus petites appelées tokens. Ces tokens peuvent représenter des mots, des nombres, des ponctuations ou d'autres éléments significatifs dans le texte. La capacité de tokenizer le texte est essentielle pour de nombreuses applications, telles que l'analyse lexicale dans les compilateurs, l'analyse de sentiment et la classification de texte.
👀 Aperçu
## text = 'total = 1 + 2 * 3'
tokens = [Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment définir une classe
Tokenpour représenter les tokens dans le texte - Comment implémenter une fonction
generate_tokensqui prend un texte d'entrée et génère un flux de tokens - Comment tester le processus de tokenization avec un texte d'échantillonnage
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Comprendre le concept de tokenization de texte et son importance dans le traitement du langage naturel
- Implémenter un système de tokenization de base de texte à l'aide de Python
- Personnaliser le processus de tokenization en définissant différents types de tokens et leurs expressions régulières correspondantes
- Tester et déboguer le système de tokenization avec divers textes d'entrée
Définition de la classe Token
Dans cette étape, vous allez apprendre à définir la classe Token, qui représentera les tokens dans le processus de tokenization de texte.
Ouvrez le fichier
/home/labex/project/texttokenizer.pydans un éditeur de texte.Au début du fichier, importez la fonction
namedtupledu modulecollections:from collections import namedtupleDéfinissez la classe
Tokencomme un named tuple avec deux attributs :typeetvalue.Token = namedtuple("Token", ["type", "value"])
Implémentation de la fonction generate_tokens
Dans cette étape, vous allez implémenter la fonction generate_tokens, qui prendra le texte d'entrée et générera un flux de tokens.
Dans le fichier
texttokenizer.py, définissez la fonctiongenerate_tokens:def generate_tokens(text): ## Définir les types de tokens et les expressions régulières correspondantes token_specification = { "NAME": r"[a-zA-Z_][a-zA-Z_0-9]*", "NUM": r"\d+", "ADD": r"\+", "SUB": r"-", "MUL": r"\*", "DIV": r"/", "EQ": r"=", "WS": r"\s+", } ## Combiner les expressions régulières en une seule grande expression régulière regex = "|".join("(?P<%s>%s)" % pair for pair in token_specification.items()) scanner = re.finditer(regex, text) for m in scanner: type = m.lastgroup value = m.group() yield Token(type, value)La fonction
generate_tokensdéfinit d'abord un dictionnairetoken_specificationqui associe les types de tokens à leurs expressions régulières correspondantes.Elle combine ensuite toutes les expressions régulières en une seule grande expression régulière en utilisant l'opérateur
|.La fonction utilise ensuite la fonction
re.finditerpour trouver toutes les correspondances dans le texte d'entrée et produit un objetTokenpour chaque correspondance, avec le type et la valeur du token.
Tester la tokenization
Dans cette étape, vous allez tester la fonction generate_tokens en analysant un texte d'échantillonnage.
À la fin du fichier
texttokenizer.py, ajoutez le code suivant :if __name__ == "__main__": text = "total = 1 + 2 * 3" tokens = list(generate_tokens(text)) print(tokens)Enregistrez le fichier
texttokenizer.py.Exécutez le script
texttokenizer.pyà partir du répertoire/home/labex/project:python texttokenizer.pyLa sortie devrait être une liste d'objets
Tokenreprésentant les tokens dans le texte d'entrée :[Token(type='NAME', value='total'), Token(type='WS', value=' '), Token(type='EQ', value='='), Token(type='WS', value=' '), Token(type='NUM', value='1'), Token(type='WS', value=' '), Token(type='ADD', value='+'), Token(type='WS', value=' '), Token(type='NUM', value='2'), Token(type='WS', value=' '), Token(type='MUL', value='*'), Token(type='WS', value=' '), Token(type='NUM', value='3')]
Félicitations ! Vous avez réussi à implémenter la fonction generate_tokens et à la tester avec un texte d'échantillonnage. Dans l'étape suivante, vous allez apprendre à utiliser la fonction generate_tokens pour tokenizer un texte plus long.
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



