Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Tokenisation à l'aide des expressions régulières | Section
Traitement du langage naturel

bookTokenisation à l'aide des expressions régulières

Glissez pour afficher le menu

Pourquoi utiliser les expressions régulières ?

Bien que les fonctions word_tokenize() et sent_tokenize() de la bibliothèque NLTK offrent des moyens pratiques de segmenter un texte en mots et en phrases, elles ne répondent pas toujours à des besoins spécifiques de traitement de texte. Explorons donc une approche alternative : la tokenisation à l'aide des expressions régulières (regex).

Note
Définition

Une expression régulière (regex) est une séquence de caractères qui définit un motif de recherche. Les expressions régulières peuvent être utilisées pour diverses tâches de traitement de texte, notamment la recherche, le remplacement et la séparation de texte selon des motifs spécifiques.

Dans le contexte de la tokenisation, les regex permettent de définir des motifs personnalisés capables d’identifier les jetons, offrant ainsi un contrôle accru sur le processus de tokenisation par rapport aux fonctions prédéfinies.

Utilisation de regexp_tokenize()

Heureusement, la bibliothèque NLTK inclut la fonction regexp_tokenize() dans le module tokenize, qui segmente une chaîne de caractères en sous-chaînes à l'aide d'une expression régulière. Cette fonction est particulièrement utile lorsqu'il est nécessaire de segmenter un texte selon des motifs qui ne sont pas bien gérés par les tokenizeurs standards.

Les paramètres les plus importants de regexp_tokenize() sont ses deux premiers paramètres : text (la chaîne à segmenter) et pattern (motif d'expression régulière).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Comme vous pouvez le constater, le processus est similaire à l'utilisation de la fonction word_tokenize(), cependant, les résultats peuvent varier selon le motif utilisé. Dans notre exemple, le motif '\w+' est utilisé pour correspondre à des séquences d'un ou plusieurs caractères alphanumériques (lettres et chiffres) et des underscores.

Cela donne une liste de mots sans signes de ponctuation, ce qui diffère de word_tokenize() qui inclut généralement la ponctuation comme des jetons séparés.

Utilisation de RegexpTokenizer

Une approche alternative pour la tokenisation personnalisée consiste à utiliser la classe RegexpTokenizer du module tokenize de NLTK. Commencez par créer une instance de RegexpTokenizer en fournissant le motif d'expression régulière souhaité en argument. Une fois l'instance créée avec le motif spécifié, il est possible de transmettre le texte à la méthode tokenize() de cette instance.

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Cette méthode fournit les mêmes résultats et peut s’avérer plus avantageuse lorsque l’on souhaite utiliser un même tokenizer pour différents textes, car elle permet de créer le tokenizer une seule fois et de l’appliquer à plusieurs entrées textuelles sans redéfinir le motif à chaque utilisation.

Poursuivons avec un autre exemple. Supposons que seuls les chiffres doivent constituer nos tokens, alors le motif '\d+' recherchera un ou plusieurs chiffres, comme dans l’exemple ci-dessous :

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Globalement, la tokenisation par expressions régulières permet une personnalisation poussée de la tokenisation, ce qui la rend idéale pour gérer des motifs complexes et des règles de découpage spécifiques qui ne sont pas facilement prises en charge par des méthodes standard comme word_tokenize(). Dans notre exemple, lorsque nous voulions utiliser les nombres comme jetons, word_tokenize() ne convenait pas à cette tâche.

question mark

Laquelle des propositions suivantes décrit le mieux ce que le motif d'expression régulière '\w+' capture lorsqu'il est utilisé avec regexp_tokenize() ou RegexpTokenizer ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 1. Chapitre 5
some-alt