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 :
pip install nltk
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 :
python --version
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 :
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 :
import nltk nltk.download()
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 :

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 :
from nltk.corpus import stopwords print(set(stopwords.words('English')))
Et dans ce cas, vous obtiendrez le résultat suivant :

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 :
from nltk.corpus import stopwords from nltk.tokenize import word_tokenize text = 'In this tutorial, I\'m learning NLTK. It is an interesting platform.' stop_words = set(stopwords.words('english')) words = word_tokenize(text) new_sentence = [] for word in words: if word not in stop_words: new_sentence.append(word) print(new_sentence)
Le résultat de ce script est :

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 :
import nltk file = open('NLTK.txt', 'r') read_file = file.read() text = nltk.Text(nltk.word_tokenize(read_file)) match = text.concordance('language')
Et dans ce cas, vous obtiendrez le résultat suivant :

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 :
File "test.py", line 7, in <module> match = text.concordance('language').decode('utf-8') File "C:\Python35\lib\site-packages\nltk\text.py", line 334, in concordance self._concordance_index.print_concordance(word, width, lines) File "C:\Python35\lib\site-packages\nltk\text.py", line 200, in print_concordance print(left, self._tokens[i], right) File "C:\Python35\lib\encodings\cp437.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u2014' in position 11: character maps to <undefined>
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 :
import nltk gutenberg_files = nltk.corpus.gutenberg.fileids() print(gutenberg_files)
Ainsi s'affiche :

Si nous souhaitons connaître le nombre total de mots contenus dans le fichier bryant-stories.txt
- par exemple, nous saisirions les lignes suivantes :
import nltk bryant_words = nltk.corpus.gutenberg.words('bryant-stories.txt') print(len(bryant_words))
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.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post