Tokénisation dans le traitement du langage naturel
Publié: 2020-12-01Lorsqu'il s'agit de données textuelles, l'étape la plus élémentaire consiste à tokeniser le texte. Les « jetons » peuvent être considérés comme des mots individuels, des phrases ou toute unité minimale. Par conséquent, diviser les phrases en unités distinctes n'est rien d'autre que la tokenisation.
À la fin de ce didacticiel, vous aurez les connaissances suivantes :
- Qu'est-ce que la tokenisation
- Différents types de tokenisations
- Différentes façons de tokeniser
La tokenisation est l'étape la plus fondamentale d'un pipeline NLP.
Mais pourquoi est-ce?
Ces mots ou jetons sont ensuite convertis en valeurs numériques afin que l'ordinateur puisse les comprendre et en tirer un sens. Ces jetons sont nettoyés, pré-traités puis convertis en valeurs numériques par les méthodes de « Vectorisation ». Ces vecteurs peuvent ensuite être transmis aux algorithmes d'apprentissage automatique et aux réseaux de neurones.
La tokenisation peut non seulement être au niveau du mot, mais aussi au niveau de la phrase. C'est-à-dire que le texte peut être symbolisé avec des mots comme jetons ou des phrases comme jetons. Discutons de quelques façons d'effectuer la tokenisation.

Table des matières
Séparation Python()
La fonction split() de Python renvoie la liste des tokens séparés par le caractère mentionné. Par défaut, il divise les mots par des espaces.
Tokénisation de mots
Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches NLP. Jetons = Mystr.split() |
#Sortir: >> [ 'Ceci' , 'est' , 'a' , 'tokenisation' , 'tutoriel.' , 'Nous' , 'sommes' , 'apprendre' , 'différent' , 'tokénisation' , 'méthodes' , 'et' , 'façons?' , 'Tokenisation' , 'est' , 'essentiel' , 'in' , 'NLP' , 'tâches.' ] |
Tokénisation des phrases
Le même texte peut être divisé en phrases en passant le séparateur par ".".
Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches NLP. Jetons = Mystr.split( "." ) |
#Sortir: >> [ 'Ceci est un tutoriel de tokenisation' , ' Nous apprenons différentes méthodes de tokenisation, et des manières ? La tokenisation est essentielle dans les tâches NLP' , ” ] |
Bien que cela semble simple et direct, il a beaucoup de défauts. Et si vous remarquez, il se sépare après le dernier "." ainsi que. Et il ne considère pas le "?" comme indicateur de la phrase suivante car il ne prend qu'un seul caractère, qui est ".".
Les données textuelles dans des scénarios réels sont très sales et ne sont pas bien mises en mots et en phrases. Beaucoup de texte inutile peut être présent, ce qui rendra très difficile la tokenisation de cette façon. Par conséquent, passons à des méthodes de tokenisation meilleures et plus optimisées.
Doit lire: Top 10 des techniques d'apprentissage en profondeur que vous devez connaître
Expression régulière
L'expression régulière (RegEx) est une séquence de caractères utilisée pour établir une correspondance avec un modèle de caractères. Nous utilisons RegEx pour trouver certains modèles, mots ou caractères pour les remplacer ou effectuer toute autre opération sur eux. Python a le module re qui est utilisé pour travailler avec RegEx. Voyons comment nous pouvons tokeniser le texte en utilisant re .
Tokénisation de mots
Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. Jetons = re.findall( "[\w']+" , Mystr) |
#Sortir: >> [ 'Ceci' , 'est' , 'a' , 'tokénisation' , 'tutoriel' , 'Nous' , 'sont' , 'apprentissage' , 'différent' , 'tokénisation' , 'méthodes' , 'et' , 'façons' , 'tokénisation' , 'est' , 'essentiel' , 'in' , 'NLP' , 'tâches' ] |
Alors, que s'est-il passé ici ?
La fonction re.findall() correspond à toutes les séquences qui lui correspondent et les stocke dans une liste. L'expression "[\w]+" signifie que n'importe quel caractère - qu'il s'agisse d'alphabets, de chiffres ou de trait de soulignement ("_"). Le symbole "+" signifie toutes les occurrences du motif. Donc, essentiellement, il analysera tous les caractères et les placera dans la liste comme un seul jeton lorsqu'il rencontrera un espace ou tout autre caractère spécial à l'exception d'un trait de soulignement.
Veuillez noter que le mot "NLP's" est un mot unique mais notre expression regex l'a divisé en "NLP" et "s" à cause de l'apostrophe.
Tokénisation des phrases
Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. Jetons = re.compile( '[.!?] ' ).split(Mystr) |
#Sortir: >> [ 'Ceci est un tutoriel de tokenisation' , 'Nous apprenons différentes méthodes et méthodes de tokenisation' , 'La tokenisation est essentielle dans les tâches NLP.' ] |
Maintenant, ici, nous avons combiné plusieurs caractères de fractionnement en une seule condition et appelé la fonction re.split. Par conséquent, lorsqu'il rencontre l'un de ces 3 caractères, il le traite comme une phrase distincte. C'est un avantage de RegEx par rapport à la fonction python split où vous ne pouvez pas passer plusieurs caractères à diviser.
Lire aussi : Applications du traitement automatique du langage naturel
Tokenizers NLTK
Natural Language Toolkit (NLTK) est une bibliothèque Python spécialement conçue pour gérer les tâches NLP. NLTK se compose de fonctions et de modules intégrés qui sont conçus pour certains processus spécifiques du pipeline NLP complet. Voyons comment NLTK gère la tokenisation.
Tokénisation de mots
NLTK a un module séparé, NLTK.tokenize, pour gérer les tâches de tokenisation. Pour la tokenisation de mots, l'une des méthodes qui la composent est word_tokenize.
de nltk.tokenize importer word_tokenize Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. word_tokenize(Mystr) |
#Sortir: >>[ 'Ceci' , 'est' , 'a' , 'tokenisation' , 'tutoriel' , '.' , 'Nous' , 'sont' , 'apprendre' , 'différent' , 'tokénisation' , 'méthodes' , ',' , 'et' , 'façons' , '?' , 'Tokenisation' , 'est' , 'essentiel' , 'in' , 'NLP' , 'tâches' , '.' ] |
Veuillez noter que word_tokenize considérait les ponctuations comme des jetons distincts. Pour éviter que cela ne se produise, nous devons supprimer toutes les ponctuations et les caractères spéciaux avant cette étape elle-même.

Tokénisation des phrases
de nltk.tokenize importer sent_tokenize Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. sent_tokenize(Mystr) |
#Sortir: >> [ 'Ceci est un tutoriel de tokenisation.' , 'Nous apprenons différentes méthodes et manières de tokenisation?' , "La tokenisation est essentielle dans les tâches NLP." ] |
Tokeniseurs SpaCy
SpaCy est probablement l'une des bibliothèques les plus avancées pour les tâches NLP. Il consiste en un support pour près de 50 langues. Par conséquent, la première étape consiste à télécharger le noyau pour la langue anglaise. Ensuite, nous devons importer le module anglais qui charge les vecteurs tokenizer, tagger, parser, NER et word.
Tokénisation de mots
de spacy.lang.en importer l'anglais pnl = anglais() Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. my_doc = nlp(Mystr) Jetons = [] pour le jeton dans my_doc : Tokens.append(token.text) Jetons |
#Sortir: >> [ 'Ceci' , 'est' , 'a' , 'tokenisation' , 'tutoriel' , '.' , 'Nous' , 'sont' , 'apprendre' , 'différent' , 'tokénisation' , 'méthodes' , ',' , 'et' , 'façons' , '?' , 'Tokenisation' , 'est' , 'essentiel' , 'in' , 'NLP' , "'s" , 'tâches' , '.' ] |
Ici, lorsque nous appelons la fonction nlp avec MyStr passé, elle crée les jetons de mot pour elle. Ensuite, nous les indexons et les stockons dans une liste séparée.
Tokénisation des phrases
de spacy.lang.en importer l'anglais pnl = anglais() sent_tokenizer = nlp.create_pipe( 'sentencizer' ) nlp.add_pipe(sent_tokenizer) Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. my_doc = nlp(Mystr) Envoyés = [] pour les doc.sents envoyés : Envoyé.append(envoyé.texte) Envoyés |
#Sortir: >> [ 'Ceci est un tutoriel de tokenisation.' , 'Nous apprenons différentes méthodes et manières de tokenisation?' , "La tokenisation est essentielle dans les tâches du NLP." ] |
Pour la tokenisation de phrase, appelez la méthode creat_pipe pour créer le composant sentencizer qui crée des jetons de phrase. Nous ajoutons ensuite le pipeline à l'objet nlp. Lorsque nous passons la chaîne de texte à l'objet nlp, il crée des jetons de phrase pour cette fois. Maintenant, ils peuvent être ajoutés à une liste de la même manière que dans l'exemple précédent.
Tokénisation Keras
Keras est actuellement l'un des frameworks d'apprentissage en profondeur les plus appréciés. Keras propose également une classe dédiée aux tâches de traitement de texte - keras.preprocessing.text. Cette classe a la fonction text_to_word_sequence qui crée des jetons de niveau mot à partir du texte. Jetons un coup d'œil rapide.
de keras.preprocessing.text import text_to_word_sequence Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. Jetons = text_to_word_sequence(Mystr) Jetons |
#Sortir: >> [ 'ceci' , 'est' , 'a' , 'tokénisation' , 'tutoriel' , 'nous' , 'sont' , 'apprentissage' , 'différent' , 'tokénisation' , 'méthodes' , 'et' , 'façons' , 'tokénisation' , 'est' , 'essentiel' , 'in' , “nlp's” , 'tâches' ] |
Veuillez noter qu'il a traité le mot "NLP" comme un jeton unique. De plus, ce tokenizer keras a mis en minuscule tous les jetons, ce qui est un bonus supplémentaire.
Générateur de jetons Gensim
Gensim est une autre bibliothèque populaire pour la gestion des tâches basées sur la PNL et la modélisation des sujets. La classe gensim.utils propose une méthode tokenize, qui peut être utilisée pour nos tâches de tokenisation.

Tokénisation de mots
à partir de gensim.utils importer tokenize Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. liste(tokenize(Mystr)) |
#Sortir: >> [ 'Ceci' , 'est' , 'a' , 'tokénisation' , 'tutoriel' , 'Nous' , 'sont' , 'apprentissage' , 'différent' , 'tokénisation' , 'méthodes' , 'et' , 'façons' , 'tokénisation' , 'est' , 'essentiel' , 'in' , 'NLP' , 's' , 'tâches' ] |
Tokénisation des phrases
Pour la tokenisation des phrases, nous utilisons la méthode split_sentences de la classe gensim.summarization.textcleaner .
depuis gensim.summarization.textcleaner importer split_sentences Mystr = "Ceci est un tutoriel de tokenisation. Nous apprenons différentes méthodes de tokenisation, et comment ? La tokenisation est essentielle dans les tâches de NLP. Jetons = split_sentences( Mystr ) Jetons |
#Sortir: >> [ 'Ceci est un tutoriel de tokenisation.' , 'Nous apprenons différentes méthodes et manières de tokenisation?' , "La tokenisation est essentielle dans les tâches du NLP." ] |
Avant que tu partes
Dans ce didacticiel, nous avons discuté de différentes manières de tokeniser vos données textuelles en fonction des applications. Il s'agit d'une étape essentielle du pipeline NLP, mais il est nécessaire de nettoyer les données avant de procéder à la tokenisation.
Si vous souhaitez en savoir plus sur l'apprentissage automatique et l'IA, consultez le diplôme PG d'IIIT-B & upGrad en apprentissage automatique et IA, conçu pour les professionnels en activité et offrant plus de 450 heures de formation rigoureuse, plus de 30 études de cas et missions, Statut d'ancien de l'IIIT-B, plus de 5 projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.