Traitement du langage naturel - Python

Dans ce chapitre, nous allons en apprendre davantage sur le traitement du langage à l'aide de Python.

Les fonctionnalités suivantes différencient Python des autres langages -

  • Python is interpreted - Nous n'avons pas besoin de compiler notre programme Python avant de l'exécuter car l'interpréteur traite Python au moment de l'exécution.

  • Interactive - Nous pouvons directement interagir avec l'interpréteur pour écrire nos programmes Python.

  • Object-oriented - Python est de nature orientée objet et il rend ce langage plus facile à écrire des programmes car avec l'aide de cette technique de programmation, il encapsule le code dans des objets.

  • Beginner can easily learn - Python est également appelé langage pour débutants car il est très facile à comprendre et prend en charge le développement d'un large éventail d'applications.

Conditions préalables

La dernière version de Python 3 publiée est Python 3.7.1 est disponible pour Windows, Mac OS et la plupart des saveurs de Linux OS.

  • Pour Windows, nous pouvons aller sur le lien www.python.org/downloads/windows/ pour télécharger et installer Python.

  • Pour MAC OS, nous pouvons utiliser le lien www.python.org/downloads/mac-osx/ .

  • Dans le cas de Linux, différentes versions de Linux utilisent différents gestionnaires de paquets pour l'installation de nouveaux paquets.

    • Par exemple, pour installer Python 3 sur Ubuntu Linux, nous pouvons utiliser la commande suivante à partir du terminal -

$sudo apt-get install python3-minimal

Pour en savoir plus sur la programmation Python, lisez le didacticiel de base Python 3 - Python 3

Premiers pas avec NLTK

Nous utiliserons la bibliothèque Python NLTK (Natural Language Toolkit) pour analyser du texte en anglais. La boîte à outils en langage naturel (NLTK) est une collection de bibliothèques Python conçues spécialement pour identifier et étiqueter des parties de discours trouvées dans le texte d'un langage naturel comme l'anglais.

Installation de NLTK

Avant de commencer à utiliser NLTK, nous devons l'installer. Avec l'aide de la commande suivante, nous pouvons l'installer dans notre environnement Python -

pip install nltk

Si nous utilisons Anaconda, alors un package Conda pour NLTK peut être construit en utilisant la commande suivante -

conda install -c anaconda nltk

Téléchargement des données de NLTK

Après avoir installé NLTK, une autre tâche importante consiste à télécharger ses référentiels de texte prédéfinis afin qu'il puisse être facilement utilisé. Cependant, avant cela, nous devons importer NLTK comme nous importons tout autre module Python. La commande suivante nous aidera à importer NLTK -

import nltk

Maintenant, téléchargez les données NLTK à l'aide de la commande suivante -

nltk.download()

Il faudra un certain temps pour installer tous les packages disponibles de NLTK.

Autres forfaits nécessaires

Quelques autres packages Python comme gensim et patternsont également très nécessaires pour l'analyse de texte ainsi que pour la création d'applications de traitement du langage naturel en utilisant NLTK. les packages peuvent être installés comme indiqué ci-dessous -

gensim

gensim est une bibliothèque de modélisation sémantique robuste qui peut être utilisée pour de nombreuses applications. Nous pouvons l'installer en suivant la commande -

pip install gensim

modèle

Il peut être utilisé pour faire gensimle package fonctionne correctement. La commande suivante aide à installer le modèle -

pip install pattern

Tokenisation

La tokenisation peut être définie comme le processus de fractionnement du texte donné, en unités plus petites appelées jetons. Les mots, les nombres ou les signes de ponctuation peuvent être des jetons. Il peut également être appelé segmentation de mot.

Exemple

Input - Le lit et la chaise sont des types de meubles.

Nous avons différents packages pour la tokenisation fournis par NLTK. Nous pouvons utiliser ces packages en fonction de nos besoins. Les packages et les détails de leur installation sont les suivants -

package sent_tokenize

Ce package peut être utilisé pour diviser le texte d'entrée en phrases. Nous pouvons l'importer en utilisant la commande suivante -

from nltk.tokenize import sent_tokenize

package word_tokenize

Ce package peut être utilisé pour diviser le texte d'entrée en mots. Nous pouvons l'importer en utilisant la commande suivante -

from nltk.tokenize import word_tokenize

Package WordPunctTokenizer

Ce package peut être utilisé pour diviser le texte d'entrée en mots et signes de ponctuation. Nous pouvons l'importer en utilisant la commande suivante -

from nltk.tokenize import WordPuncttokenizer

Tige

Pour des raisons grammaticales, la langue comprend de nombreuses variantes. Variations dans le sens où la langue, l'anglais ainsi que d'autres langues, ont différentes formes de mot. Par exemple, les mots commedemocracy, democratic, et democratization. Pour les projets d'apprentissage automatique, il est très important que les machines comprennent que ces différents mots, comme ci-dessus, ont la même forme de base. C'est pourquoi il est très utile d'extraire les formes de base des mots lors de l'analyse du texte.

La racine est un processus heuristique qui aide à extraire les formes de base des mots en coupant leurs extrémités.

Les différents packages pour la dérivation fournis par le module NLTK sont les suivants -

Forfait PorterStemmer

L'algorithme de Porter est utilisé par ce package de racine pour extraire la forme de base des mots. Avec l'aide de la commande suivante, nous pouvons importer ce package -

from nltk.stem.porter import PorterStemmer

Par exemple, ‘write’ serait la sortie du mot ‘writing’ donné comme entrée de ce stemmer.

Forfait LancasterStemmer

L'algorithme de Lancaster est utilisé par ce progiciel dérivé pour extraire la forme de base des mots. Avec l'aide de la commande suivante, nous pouvons importer ce package -

from nltk.stem.lancaster import LancasterStemmer

Par exemple, ‘writ’ serait la sortie du mot ‘writing’ donné comme entrée de ce stemmer.

Forfait SnowballStemmer

L'algorithme de Snowball est utilisé par ce progiciel dérivé pour extraire la forme de base des mots. Avec l'aide de la commande suivante, nous pouvons importer ce package -

from nltk.stem.snowball import SnowballStemmer

Par exemple, ‘write’ serait la sortie du mot ‘writing’ donné comme entrée de ce stemmer.

Lemmatisation

C'est une autre façon d'extraire la forme de base des mots, visant normalement à supprimer les fins flexionnelles en utilisant le vocabulaire et l'analyse morphologique. Après la lemmatisation, la forme de base de tout mot est appelée lemme.

Le module NLTK fournit le package suivant pour la lemmatisation -

Package WordNetLemmatizer

Ce package extraira la forme de base du mot selon qu'il est utilisé comme nom ou comme verbe. La commande suivante peut être utilisée pour importer ce package -

from nltk.stem import WordNetLemmatizer

Comptage des balises POS - segmentation

L'identification des parties du discours (POS) et des phrases courtes peut être effectuée à l'aide de la segmentation. C'est l'un des processus importants du traitement du langage naturel. Comme nous sommes conscients du processus de tokenisation pour la création de jetons, la segmentation consiste en fait à étiqueter ces jetons. En d'autres termes, nous pouvons dire que nous pouvons obtenir la structure de la phrase à l'aide d'un processus de découpage.

Exemple

Dans l'exemple suivant, nous allons implémenter le segment Noun-Phrase, une catégorie de segmentation qui trouvera les blocs de phrase nominale dans la phrase, en utilisant le module NLTK Python.

Considérez les étapes suivantes pour implémenter la segmentation des phrases nominales -

Step 1: Chunk grammar definition

Dans cette étape, nous devons définir la grammaire de la segmentation. Cela comprendrait les règles que nous devons suivre.

Step 2: Chunk parser creation

Ensuite, nous devons créer un analyseur de blocs. Il analyserait la grammaire et donnerait la sortie.

Step 3: The Output

Dans cette étape, nous obtiendrons la sortie dans un format arborescent.

Exécution du script NLP

Commencez par importer le package NLTK -

import nltk

Maintenant, nous devons définir la phrase.

Ici,

  • DT est le déterminant

  • VBP est le verbe

  • JJ est l'adjectif

  • IN est la préposition

  • NN est le substantif

sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),
   ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]

Ensuite, la grammaire doit être donnée sous forme d'expression régulière.

grammar = "NP:{<DT>?<JJ>*<NN>}"

Maintenant, nous devons définir un analyseur pour analyser la grammaire.

parser_chunking = nltk.RegexpParser(grammar)

Maintenant, l'analyseur analysera la phrase comme suit -

parser_chunking.parse(sentence)

Ensuite, la sortie sera dans la variable comme suit: -

Output = parser_chunking.parse(sentence)

Maintenant, le code suivant vous aidera à dessiner votre sortie sous la forme d'un arbre.

output.draw()