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 | Fondamentaux du Prétraitement de Texte
Introduction au TALN

bookTokenisation à l'aide des Expressions Régulières

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. Examinons donc une approche alternative : la tokenisation à l'aide des expressions régulières (regex).

Note
Définition

Expression régulière (regex) : séquence de caractères définissant 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 pouvant 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 lorsque la segmentation du texte doit se faire selon des motifs qui ne sont pas bien gérés par les tokenizers 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é, vous pouvez transmettre votre texte en argument à sa méthode tokenize().

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 donne les mêmes résultats et peut s’avérer plus avantageuse lorsque vous avez besoin d’un seul tokenizer pour différents textes, car elle permet de créer le tokenizer une seule fois puis de l’appliquer à divers textes sans redéfinir le motif à chaque fois.

Poursuivons avec un autre exemple. Supposons que nous souhaitions que seuls les chiffres soient nos tokens, alors notre 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 traiter des schémas complexes et des règles de découpage spécifiques difficilement gérables avec des méthodes standard comme word_tokenize(). Dans notre exemple, lorsque nous souhaitions 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

Awesome!

Completion rate improved to 3.45

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. Examinons donc une approche alternative : la tokenisation à l'aide des expressions régulières (regex).

Note
Définition

Expression régulière (regex) : séquence de caractères définissant 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 pouvant 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 lorsque la segmentation du texte doit se faire selon des motifs qui ne sont pas bien gérés par les tokenizers 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é, vous pouvez transmettre votre texte en argument à sa méthode tokenize().

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 donne les mêmes résultats et peut s’avérer plus avantageuse lorsque vous avez besoin d’un seul tokenizer pour différents textes, car elle permet de créer le tokenizer une seule fois puis de l’appliquer à divers textes sans redéfinir le motif à chaque fois.

Poursuivons avec un autre exemple. Supposons que nous souhaitions que seuls les chiffres soient nos tokens, alors notre 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 traiter des schémas complexes et des règles de découpage spécifiques difficilement gérables avec des méthodes standard comme word_tokenize(). Dans notre exemple, lorsque nous souhaitions 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
some-alt