Tokenisation : découper le texte en unités
Élisions, traits d'union, abréviations et sous-mots : découper du texte français correctement avec spaCy, NLTK et les tokeniseurs de CamemBERT.
La tokenisation est la première opération de toute chaîne de traitement du langage, et la seule dont les erreurs se propagent jusqu'au bout sans jamais s'annoncer. Un modèle mal tokenisé ne plante pas : il apprend un vocabulaire légèrement faux, et perd quelques points de performance que personne n'arrive à expliquer.
Le mot « token » n'a pas d'équivalent français satisfaisant. Ce n'est pas un mot : c'est l'unité que votre système décide de traiter comme atomique. Selon la tâche, ce sera un mot, une ponctuation, un fragment de mot, ou même un caractère. La question à se poser n'est donc jamais « comment découper un texte » mais « quelle est la bonne unité pour ce que je veux faire ».
Le français rend la question particulièrement épineuse. L'apostrophe y est un caractère grammatical, pas un signe de citation : dans « l'État », l'apostrophe marque une élision et sépare deux mots ; dans « aujourd'hui », elle est interne à un mot unique et fossilisé. Aucune règle typographique ne distingue les deux cas. Le trait d'union est pire encore : il joint des mots composés (« porte-monnaie »), des pronoms postposés (« donne-le-moi »), des inversions interrogatives (« viens-tu »), et il ne faut pas les traiter pareil.