Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Tokenisation à l'Aide d'Expressions Régulières | Fondamentaux du Prétraitement de Texte
Introduction au NLP
course content

Contenu du cours

Introduction au NLP

Introduction au NLP

1. Fondamentaux du Prétraitement de Texte
2. Racine et Lemmatisation
3. Modèles de Texte de Base
4. Incorporations de Mots

book
Tokenisation à l'Aide d'Expressions Régulières

Pourquoi les expressions régulières ?

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

Dans le contexte de la tokenisation, les regex permettent de définir des modèles personnalisés qui peuvent identifier des tokens, offrant plus de contrôle sur le processus de tokenisation que les fonctions préconstruites.

Utilisation de regexp_tokenize()

Heureusement, la bibliothèque NLTK inclut la fonction regexp_tokenize() dans le module tokenize, qui segmente une chaîne en sous-chaînes en utilisant une expression régulière. Cette fonction est particulièrement utile lorsque vous devez segmenter du texte en fonction de motifs qui ne sont pas bien gérés par les tokenizeurs standard.

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

Voyons un exemple :

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 voir, le processus est similaire à l'utilisation de la fonction word_tokenize(), cependant, les résultats peuvent varier en fonction du motif. Dans notre exemple, le motif '\w+' est utilisé pour correspondre à des séquences de caractères alphanumériques (lettres et chiffres), spécifiquement un ou plusieurs caractères alphanumériques.

Cela donne une liste de mots sans signes de ponctuation, ce qui diffère de word_tokenize() en ce que ce dernier inclut généralement la ponctuation comme des jetons séparés. Ainsi, le résultat de notre exemple regexp_tokenize serait une liste de mots de la phrase.

Utilisation de RegexpTokenizer

Une approche alternative pour la tokenisation personnalisée consiste à utiliser la classe RegexpTokenizer du module tokenize de NLTK. Pour commencer, créez une instance de RegexpTokenizer, en lui fournissant votre motif d'expression régulière souhaité comme argument ; ce motif définit comment le texte sera tokenisé.

Contrairement à la fonction regexp_tokenize(), vous ne fournissez pas le texte à tokeniser au moment de la création de l'instance RegexpTokenizer. Au lieu de cela, une fois l'instance créée avec le motif spécifié, vous utilisez sa méthode tokenize() pour appliquer la tokenisation sur votre texte, en passant le texte que vous souhaitez tokeniser comme argument à cette méthode.

Voici un exemple :

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 approche donne les mêmes résultats, et elle peut être meilleure dans les cas où vous avez besoin d'un tokenizer pour différents textes, car elle vous permet de créer le tokenizer une fois et de l'appliquer ensuite à divers textes sans redéfinir le motif à chaque fois.

Passons à un autre exemple. Supposons que nous voulons 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

Dans l'ensemble, la tokenisation par expressions régulières permet une tokenisation hautement personnalisée, ce qui la rend idéale pour gérer des motifs complexes et des règles de tokenisation spécifiques qui ne sont pas facilement gérées par des méthodes standard comme word_tokenize(). Dans notre exemple, lorsque nous voulions utiliser des nombres comme tokens, word_tokenize() ne serait pas adapté à cette tâche.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 5
We're sorry to hear that something went wrong. What happened?
some-alt