Présentation de la boîte à outils en langage naturel (NLTK)

Le traitement du langage naturel (PNL) est le traitement automatique ou semi-automatique du langage humain. La PNL est étroitement liée à la linguistique et à la recherche en sciences cognitives, en psychologie, en physiologie et en mathématiques. Dans le domaine informatique en particulier, la PNL est liée aux techniques de compilation, à la théorie du langage formel, à l’interaction homme-machine, à l’apprentissage automatique et à la démonstration de théorèmes. Cette question de Quora montre les différents avantages de la PNL.

Dans ce didacticiel, je vais vous présenter une plate-forme Python intéressante pour la PNL appelée Natural Language Toolkit (NLTK). Avant de voir comment travailler avec cette plate-forme, laissez-moi d'abord vous expliquer ce qu'est NLTK..

Qu'est-ce que NLTK??

La boîte à outils en langage naturel (NLTK) est une plate-forme utilisée pour créer des programmes d'analyse de texte. Steven Bird et Edward Loper ont publié cette plate-forme à l’occasion d’un cours de linguistique informatisée dispensé à l’Université de Pennsylvanie en 2001. Un ouvrage accompagnant cette plate-forme s'appelle Natural Language Processing with Python..

Installation de NLTK

Nous allons maintenant installer NLTK pour commencer à expérimenter le traitement du langage naturel. Ça va être amusant!

L'installation de NLTK est très simple. J'utilise Windows 10, donc dans mon invite de commande (MS-DOS) Je tape la commande suivante:

pip installer nltk

Si vous utilisez Ubuntu ou macOS, vous exécutez la commande à partir du Terminal. Vous trouverez plus d’informations sur l’installation de NLTK sur différentes plates-formes dans la documentation..

Si vous vous demandez quoi pépin C’est un système de gestion de paquets utilisé pour installer et gérer des paquets logiciels écrits en Python. Si vous utilisez Python 2> = 2.7.9 ou Python 3> = 3.4, vous avez déjà pépin installée! Pour vérifier votre version de Python, tapez simplement ce qui suit dans votre invite de commande:

python --version

Allons-y et vérifions si nous avons installé NLTK avec succès. Pour ce faire, ouvrez IDLE de Python et tapez les deux lignes illustrées dans la figure ci-dessous:


Si vous obtenez la version de votre NLTK renvoyée, alors félicitations, vous avez installé NLTK avec succès!

Donc, ce que nous avons fait dans l'étape ci-dessus est que nous avons installé NLTK à partir de l'index du paquet Python (pip) localement dans notre environnement virtuel..

Notez que vous pouvez avoir une version différente de NLTK selon le moment où vous avez installé la plate-forme, mais cela ne devrait pas poser de problème..

Travailler avec NLTK

La première chose à faire pour travailler avec NLTK est de télécharger ce qu'on appelle le Corpus NLTK. Je vais télécharger tous les corpus. Je sais qu'il est très volumineux (10,9 Go), mais nous ne le ferons qu'une fois. Si vous savez de quels corpus vous avez besoin, vous n'avez pas besoin de télécharger tout le corpus.. 

Dans votre IDLE de Python, tapez ce qui suit:

importer nltk nltk.download ()

Dans ce cas, vous obtiendrez une interface graphique à partir de laquelle vous pourrez spécifier la destination et le contenu à télécharger, comme indiqué dans la figure ci-dessous:

Je vais tout télécharger à ce stade. Clique le Télécharger bouton en bas à gauche de la fenêtre et attendez un moment que tout soit téléchargé dans votre répertoire de destination.

Avant d'aller de l'avant, vous vous demandez peut-être ce que corpus (singulier de corpus) est. Un corpus peut être défini comme suit:

Corpus, corpus pluriels; Une collection de données linguistiques, soit sous forme de textes écrits, soit sous forme de transcription de discours enregistrés. L'objectif principal d'un corpus est de vérifier une hypothèse sur le langage - par exemple, pour déterminer comment l'utilisation d'un son, d'un mot ou d'une construction syntaxique particulière varie. La linguistique de corpus traite des principes et de la pratique de l'utilisation des corpus dans l'étude des langues. Un corpus informatique est un grand ensemble de textes lisibles par machine.
(Crystal, David. 1992. Dictionnaire encyclopédique des langues et des langues. Oxford: Blackwell.)

Un corpus de texte est donc simplement un grand corps de texte.

Mots d'arrêt

Parfois, nous avons besoin de filtrer les données inutiles pour les rendre plus compréhensibles par l’ordinateur. Dans le traitement du langage naturel (NLP), ces données inutiles (mots) sont appelées mots d'arrêt. Donc, ces mots n'ont aucune signification pour nous, et nous aimerions les supprimer.

NLTK nous fournit des mots vides pour commencer. Pour voir ces mots, utilisez le script suivant:

à partir de nltk.corpus import stopwords print (définir (stopwords.words ('Anglais')))

Dans ce cas, vous obtiendrez le résultat suivant:

Ce que nous avons fait, c’est que nous avons imprimé un ensemble (collection non ordonnée d’articles) de mots vides de la langue anglaise.

Comment pouvons-nous supprimer les mots vides de notre propre texte? L'exemple ci-dessous montre comment nous pouvons effectuer cette tâche:

depuis nltk.corpus, importez les mots vides depuis nltk.tokenize import word_tokenize text = 'Dans ce tutoriel, j \' apprends NLTK. C'est une plateforme intéressante. stop_words = set (stopwords.words ('anglais')) words = word_tokenize (text) new_sentence = [] pour mot dans mots: si mot n'est pas dans stop_words: new_sentence.append (mot) print (new_sentence)

La sortie du script ci-dessus est:

La tokenisation, telle que définie dans Wikipedia, est:

Processus consistant à diviser un flux de texte en mots, expressions, symboles ou autres éléments significatifs appelés jetons..

Alors quoi word_tokenize () la fonction est:

Tokenize une chaîne pour scinder la ponctuation autre que des points

Recherche

Disons que nous avons le fichier texte suivant (téléchargez le fichier texte à partir de Dropbox). Nous aimerions chercher (rechercher) le mot la langue. Nous pouvons simplement faire cela en utilisant la plate-forme NLTK comme suit:

importer un fichier nltk = open ('NLTK.txt', 'r') read_file = file.read () text = nltk.Text (nltk.word_tokenize (read_file)) match = text.concordance ('language')

Dans ce cas, vous obtiendrez le résultat suivant:

Remarquerez que concordance() renvoie chaque occurrence du mot la langue, en plus d'un certain contexte. Avant cela, comme indiqué dans le script ci-dessus, nous tokenisons le fichier lu, puis le convertissons en un fichier. nltk.Text objet.

Je veux juste noter que la première fois que j'ai exécuté le programme, j'ai eu l'erreur suivante, qui semble être liée au codage utilisé par la console:

Fichier "test.py", ligne 7, dans  match = text.concordance ('language'). decode ('utf-8') Fichier "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", ligne 334, dans la concordance self._concordance_index.print_concordance ( word, width, lines) Fichier "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", ligne 200, dans print_concordance print (left, self._tokens [i], right) Fichier "C: \ Python35 \ lib \ encodings \ cp437.py ", ligne 19, dans encoder return codecs.charmap_encode (input, self.errors, encoding_map) [0] UnicodeEncodeError: le codec 'charmap' ne peut pas encoder le caractère '\ u2014' en position 11: cartes de caractères à 

Ce que j'ai simplement fait pour résoudre ce problème est d'exécuter cette commande dans ma console avant d'exécuter le programme: chcp 65001.

Le corpus de Gutenberg

Comme mentionné dans Wikipedia:

Le projet Gutenberg (PG) est une initiative bénévole visant à numériser et à archiver des œuvres culturelles, dans le but "d'encourager la création et la distribution de livres électroniques". Elle a été fondée en 1971 par Michael S. Hart et constitue la plus ancienne bibliothèque numérique. La plupart des éléments de sa collection sont les textes intégraux de livres du domaine public. Le projet tente de les rendre aussi libres que possible, dans des formats ouverts et durables, utilisables sur presque tous les ordinateurs. Au 3 octobre 2015, le projet Gutenberg comptait 50 000 articles dans sa collection..

NLTK contient une petite sélection de textes du projet Gutenberg. Pour voir les fichiers inclus du projet Gutenberg, procédez comme suit:

importer nltk gutenberg_files = nltk.corpus.gutenberg.fileids () print (gutenberg_files)

La sortie du script ci-dessus sera comme suit:

Si nous voulons trouver le nombre de mots pour le fichier texte bryant-stories.txt Par exemple, nous pouvons faire ce qui suit:

importer nltk bryant_words = nltk.corpus.gutenberg.words ('bryant-stories.txt') print (len (bryant_words))

Le script ci-dessus doit renvoyer le nombre de mots suivant: 55563

Conclusion

Comme nous l'avons vu dans ce didacticiel, la plate-forme NLTK nous fournit un outil puissant pour travailler avec le traitement de langage naturel (PNL). Je n'ai fait qu'effleurer la surface dans ce tutoriel. Si vous souhaitez approfondir l'utilisation de NLTK pour différentes tâches de la PNL, vous pouvez vous reporter au livre d'accompagnement de NLTK: Traitement du langage naturel avec Python..