Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Tokenisation : découper un texte en jetons

Après cette leçon: Je peux découper une phrase en jetons propres, sans majuscules ni ponctuation.

Leçon de 50 min2 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Comment un programme lit-il une phrase ?

La tokenisation consiste à découper un texte en petits morceaux, appelés jetons, qu’un programme peut compter. C’est la première étape de tout traitement automatique des langues, car un ordinateur lit des suites de caractères, pas des phrases.

Le service des études reçoit 300 messages d’étudiants par semaine. Pour les trier, un programme doit d’abord savoir ce qu’est un mot.

À la fin de cette leçon

Remarque

Je peux découper une phrase en jetons propres, sans majuscules ni ponctuation.

Mots clés

MotCe que ça veut direExemple
Jetonune unité de texte que le programme compte, souvent un motamphi
Corpusl’ensemble des textes que l’on étudie
Normalisationmettre le texte sous une forme communetout en minuscules
Mot videun mot très courant qui dit peu de chosele
Vocabulairela liste des jetons différents d’un corpus

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un jeton n’est pas toujours un mot

Un jeton est l’unité que le programme compte. Le plus souvent, c’est un mot. On peut aussi compter des caractères.

Les grands modèles de langage coupent plutôt les mots en morceaux. Ainsi, un mot rare ou nouveau se compose de morceaux déjà connus. Le choix dépend de ce que l’on veut faire du texte.

Exemple travaillé : une phrase coupée de trois façons

DécoupageRésultat pour « Le café ouvre à 8 h »Nombre de jetons
En motsLe, café, ouvre, à, 8, h6
En caractèresL, e, espace, c, a, f, é, et ainsi de suite19
En morceaux de mots (exemple)Le, café, ouv, re, à, 8, h7

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Compter les caractères et les mots

Commande
docker exec jupyter python3 -c 'print(len("Le cafe ouvre a 8 h"), len("Le cafe ouvre a 8 h".split()))'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Couper sur les espaces ne suffit pas

Si l’on coupe seulement sur les espaces, la ponctuation reste collée aux mots. Le jeton « h, » n’est pas le jeton « h ». Un programme les compte comme deux mots différents.

La normalisation règle cela. On passe tout en minuscules, puis on traite chaque signe qui n’est ni une lettre ni un chiffre comme une espace.

Voir la ponctuation qui reste collée

Commande
docker exec jupyter python3 -c 'print("Le cafe ouvre a 8 h, et l amphi est plein !".lower().split())'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent qu’un jeton est toujours un mot. C’est un choix, pas une loi. Selon la tâche, un jeton est un mot, un caractère ou un morceau de mot. Choisissez-le d’après ce que vous voulez compter.

Nettoyer puis découper une phrase

Code: python
phrase = "Le café ouvre à 8 h, et l’amphi est plein !"
propre = ""
for lettre in phrase:
    if lettre.isalpha() or lettre.isdigit():
        propre = propre + lettre.lower()
    else:
        # Tout le reste devient une espace : elle sépare les jetons.
        propre = propre + " "
jetons = propre.split()
print(jetons)
print(len(jetons))
# Changez la phrase, puis relancez. Que devient « aujourd’hui » ?

Le vocabulaire est la liste des jetons différents

Un corpus est un ensemble de textes. Son vocabulaire est la liste de ses jetons différents, chacun compté une seule fois.

Certains mots reviennent partout : « le », « à », « de ». On les appelle des mots vides. Selon la tâche, on les garde ou on les retire.

Exemple travaillé : un petit corpus

MessageJetonsNombre
Le restaurant ferme à 14 hle, restaurant, ferme, à, 14, h6
Le restaurant ouvre à 11 hle, restaurant, ouvre, à, 11, h6
La bibliothèque ferme à 19 hla, bibliothèque, ferme, à, 19, h6
Tout le corpus18 jetons au total, 11 jetons différents11 dans le vocabulaire

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Pour aller plus loin

Dans un carnet de JupyterLab, découpez cinq messages de votre choix avec votre fonction decouper. Calculez la taille de leur vocabulaire.

Retirez ensuite les mots vides que vous aurez choisis. Combien de jetons restent-ils ? Que perd-on en les retirant ?

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.