Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Python
Code

Introduction au Natural Language Toolkit (NLTK)

by
Length:ShortLanguages:

French (Français) translation by Stéphane Esteve (you can also view the original English article)

L'analyse naturelle du langage (NLP: Natural Language Processing) provient d'un processus automatique ou semi-automatique du langage humain. Le NLP fut développé autour de la recherche linguistique et des sciences cognitives, la psychologie, la biologie et les mathématiques. Dans le domaine particulier de l'informatique, la NLP est rattachée aux techniques de compilation, au théorie formelle du langage, à l'intéraction homme-machine, au "machine learning" et à la preuve par le théorême. Cette question soulevée dans Quora démontre les différents avantages de la NLP.

A travers ce tutoriel, Allons à la découverte de cette étonante plateforme NLP répondant au doux nom de Natural Language Toolkit (NLTK). Mais avant d'entrer dans le vif du sujet, permettez-moi de vous décrire ce qu'est NLTK.

Qu'est-ce que c'est NLTK ?

Natural Language Toolkit (NLTK) est une boîte-à-outil permettant la création de programmes pour l'analyse de texte. Cet ensemble a été créé à l'origine par Steven Bird et Edward Loper, en relation avec des cours de linguistique informatique à l'Université de Pennsylvanie en 2001. Il existe un manuel d'apprentissage pour cet ensemble titré Natural Language Processing with Python (en anglais).

Installation de NLTK

Commençons par installer la librairie NLTK pour démarrer nos prochaines expérimentations en analyse du langage naturel. Soyons fous !

Son installation est assez simple. J'utilise Windows 10, donc dans ma ligne de commande (MS-DOS), je saisie l'instruction suivante :

Si vous utilisez Ubuntu ou macOS, lancez l'instruction à partir de votre Terminal. D'autres informations sur l'installation de NLTK sur différentes plateformes peuvent se trouver dans la documentation.

Si vous ignorez ce qu'est pip, il s'agit d'un système de gestion de paquets qui sert à installer et manipuler des paquets logiciels écrits en Python. Si vous préférez Python 2 >= 2.7.9 ou Python 3 >= 3.4, vous avez déjà pip d'installer ! Pour vérifier quelle version de Python se trouve sur votre système, saisir les instructions suivantes dans votre terminal :

Avançons et vérifions si nous avons installer correctement NLTK. Pour y parvenir, ouvrons l'éditeur IDLE de Python et rédigeons ces deux lignes, comme dans la figure suivante :

Check if we have installed NLTK successfully

Si le script renvoie la version de NLTK, alors félicitations : vous avez installer avec succès la librairie !

Ce que nous avons réussi dans cette dernière étape, c'est d'avoir installé NLTK depuis l'index des Paquets Python (pip) localement sur notre environnement virtuel.

A noter que vous pourriez avoir une version différente de NLTK, selon le moment où vous installer la bibliothèque, mais ça ne devrait pas causer de problèmes.

Travailler avec NLTK

La première chose à faire pour utiliser NLTK est de télécharger ce qui se nomme le NLTK corpora. Je vais télécharger tout le Corpus. Je sais qu'il est énorme (10,9 Go), mais nous ne le ferons qu'une seule fois. Si vous connaissais déjà quel corpus vous utiliserez, inutile de télécharger cet ensemble.

Dans votre éditeur Python IDLE, écrivez ceci :

Dans ce cas précis, une interface graphique s'affiche, vous permettant de définir la destination des fichiers et de sélectionner ce dont vous avez besoin, selon cette illustration :

A GUI from which you can specify the destination

Je vais donc tout télécharger. Cliquez sur le bouton Download dans le coin inférieur gauche de la fenêtre, et patientez jusqu'à ce que tout soit téléchargé dans votre dossier de destination.

Petit préambule : vous devez vous demander ce qu'est un corpus (la déclinaison au singulier de corpora). Un corpus est défini de cette façon :

Corpus, pluriel : corpora ; Une collection de données linguistiques, parfois une compilation de textes écrits, ou de transcriptions d'enregistrement de discours. La raison principale d'un corpus est de vérifier une hypothèse sur le langage - par exemple : déterminer comment l'utilisation d'un son particulier, d'un mot ou d'une construction syntaxique varie. Les corpus linguistiques agissent avec les lois et les pratiques d'utilisation de corpora dans l'étude du langage. Un corpus informatique contient un ensemble vaste de textes traduisibles en langage-machine.
(Cristal, David. 1992. An Encyclopedic Dictionary of Language and Languages. Oxford : Blackwell.)

Ainsi, un corpus est tout simplement un énorme ensemble de textes.

"Stop Words"

Parfois, nous avons besoin de "raboter" des éléments inutiles afin que les données soient davatange traduisibles pour l'ordinateur. En NLP, de telles données (des mots, words) sont qualifiées par stop words. Par conséquent, ces mots n'ont aucune signification pour nous, et nous souhaiterions les retirer.

La libraire NLTK contient quelques mots "d'arrêt" pour commencer ce traitement. Pour les connaître, écrivons ce petit script :

Et dans ce cas, vous obtiendrez le résultat suivant :

The output from NLTK

Nous avons ainsi listé une collection non-ordonnée d'éléments, connu comme "mots d'arrêt", en langue anglaise, dans ce cas.

Mais comment pourrions-nous éliminer ces mots de notre texte ? L'exemple suivant montre comment y parvenir :

Le résultat de ce script est :

The resulting output of the script

La "tokénisation", telle que définie dans Wikipedia, est :

Il s'agit du processus consistant à briser un flux de texte en plusieurs mots, phrases, symboles ou tout autre élements significatifs dénommés Signes (tokens).

Voilà ce que peut produire la fonction word_tokenize() :

La découpe de chaîne de signes selon la ponctuation, en dehors des points

Rechercher

Disons que dans le fichier texte suivant (téléchargez ce fichier depuis Dropbox). Nous désirerions rechercher (fouiner) le mot language. Nous pourrions utiliser la librairie NLTK comme suit :

Et dans ce cas, vous obtiendrez le résultat suivant :

Searching for the word language

Veuillez noter que cette concordance() renvoie chaque occurrence du mot language, en complément d'un certain contexte. Mais avant, tel que montré dans le script ci-dessous, nous tokenisons le fichier et il est converti en objet nltk.Text.

Je voudrais vous faire remarquer que la première fois que j'ai lancé ce script, j'ai obtenu l'erreur suivante, qui pourrait être reliée à l'encodage défini par défaut dans la console :

Pour résoudre cette anomalie, j'ai simplement lancé la commande suivante dans ma console : chcp 65001.

Le Corpus Gutenberg

Selon Wikipedia :

Le Projet Gutenberg (PG) est une initiative volontaire pour numériser et archiver des œuvres culturelles, afin "d'encourager la création et la distribution d'eBooks". Michael S. hart a démarré ce projet en 1971 et c'est la plus vieille bibliothèque numérique à ce jour. La plupart des œuvres contenues dans cette collection sont les textes complets de livres entrés dans le domaine public. Ce projet tente de rendre son contenu le plus accessible au possible, sur du long terme, en format ouvert que n'importe quel ordinateur peut comprendre. Au 3 Octobre 2015, le Projet Gutenberg a atteint un total de 50.000 œuvres collectées.

Ma NLTK ne contient qu'une fraction minimale de textes issus du Projet Gutenberg. Pour avoir une idée des fichiers disponibles dans la librairie, tapons les instructions suivantes :

Ainsi s'affiche :

The output of the above script

Si nous souhaitons connaître le nombre total de mots contenus dans le fichier bryant-stories.txt - par exemple, nous saisirions les lignes suivantes :

Le script ci-dessus nous renvoie le nombre suivant de mots : 55563.

Conclusion

Ce que nous avons appris tout au long de ce tutoriel, c'est que la librairie NLTK nous fournit un outil extrêmement puissant pour travailler dans le champs du traitement du langage naturel (NLP). ici, je n'ai seulement que gratté la surface. Si vous souhaitez aller plus loin dans l'utilisation de NLTK pour différentes applications en NLP, veuillez vous référer au manuel NLTK : Natural Language Processing with Python.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.