Natural language processing en Français avec Python

Qu’est-ce que le traitement du langage naturel ?

Le traitement du langage naturel (NLP) est la capacité d’un programme informatique à comprendre le langage humain tel qu’il est parlé et écrit – appelé langage naturel. Il s’agit d’une composante de l’intelligence artificielle (IA).

Le NLP existe depuis plus de 50 ans et trouve ses racines dans le domaine de la linguistique. Il a une variété d’applications réelles dans un certain nombre de domaines, notamment la recherche médicale, les moteurs de recherche et la veille économique.

Comment fonctionne le traitement du langage naturel ?

Le traitement du langage naturel permet aux ordinateurs de comprendre le langage naturel comme le font les humains. Que la langue soit parlée ou écrite, le traitement du langage naturel utilise l’intelligence artificielle pour prendre des données du monde réel, les traiter et leur donner un sens qu’un ordinateur peut comprendre. Tout comme les humains disposent de différents capteurs, tels que des oreilles pour entendre et des yeux pour voir, les ordinateurs ont des programmes pour lire et des microphones pour recueillir les sons. Et tout comme les humains ont un cerveau pour traiter ces données, les ordinateurs ont un programme pour traiter leurs données respectives. À un moment donné du traitement, l’entrée est convertie en un code que l’ordinateur peut comprendre.

Le traitement du langage naturel comporte deux phases principales : le prétraitement des données et le développement des algorithmes.

Le prétraitement des données consiste à préparer et à “nettoyer” les données textuelles pour que les machines puissent les analyser. Le prétraitement met les données sous une forme exploitable et met en évidence les caractéristiques du texte sur lesquelles un algorithme peut travailler. Il existe plusieurs façons d’y parvenir, notamment :

  •   Tokenisation. Il s’agit de décomposer le texte en unités plus petites pour pouvoir travailler avec.
  •     Suppression des mots vides. Il s’agit de supprimer les mots courants du texte afin de conserver les mots uniques qui offrent le plus d’informations sur le texte.
  •     Lemmatisation et troncature. Les mots sont réduits à leur racine pour être traités.
  •     Étiquetage de la partie de la parole. Les mots sont marqués en fonction de la partie du discours à laquelle ils appartiennent, comme les noms, les verbes et les adjectifs.

Une fois que les données ont été prétraitées, un algorithme est développé pour les traiter. Il existe de nombreux algorithmes de traitement du langage naturel différents, mais deux types principaux sont couramment utilisés :

  •     Système basé sur des règles. Ce système utilise des règles linguistiques soigneusement conçues. Cette approche a été utilisée dès le début du développement du traitement du langage naturel et est toujours utilisée.
  •     Système basé sur l’apprentissage automatique. Les algorithmes d’apprentissage automatique utilisent des méthodes statistiques. Ils apprennent à effectuer des tâches sur la base des données d’entraînement qui leur sont fournies et ajustent leurs méthodes au fur et à mesure que d’autres données sont traitées. Grâce à une combinaison d’apprentissage automatique, d’apprentissage profond et de réseaux neuronaux, les algorithmes de traitement du langage naturel affinent leurs propres règles par le biais de traitements et d’apprentissages répétés.

Comment ça marche concrètement en Python ?

Par exemple, comment retirer dans un texte en français les mots ou groupes de mots qui ressortent le plus régulièrement ?

Premièrement, il faut importer les librairies nécessaires au traitement et lire le fichier contenant le texte à explorer

import nltk
from nltk import sent_tokenize
from nltk import word_tokenize
from nltk.util import ngrams
from nltk.corpus import stopwords
from nltk.probability import FreqDist
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
import spacy
#Ouvrerture du fichier texte :
text_file = open("commentaires.txt")
#Lecture de la donnée:
text = text_file.read()

Viens ensuite la tokenisation ainsi que la suppression de la ponctuation et des mots d’arrêts

#Tokenization
words = word_tokenize(text,language="french",preserve_line=True)
#création d'une liste vide pour aceullir les mots sans ponctutation
words_no_punc = []
#Enlever la ponctuation :
for w in words:
if w.isalpha():
words_no_punc.append(w.lower())
#Supprimer les mots d'arrêts classiques en Français
stopwords = stopwords.words("french")
#Possibilité d'ajouter des mots d'arrêts suplémentaires
stopwords.append("monsieur")
stopwords.append("Monsieur")
stopwords.append("madame")
stopwords.append("Madame")
stopwords.append("mme")
stopwords.append("Mme")
#Liste vide pour stocker les mots nétoyés :
clean_words = []
#Remplissage de la liste avec les mots nétoyés
for w in words_no_punc:
if w not in stopwords:
clean_words.append(w)

Enfin, la lemmatisation est effectuée et les groupes de mots récurrents (n-grammes) sont extraits

#Chargement des lemmes de la langue française
nlp = spacy.load('fr_core_news_md')
#liste vide pour aceuillir les mots lematisés
clean_words_lem = []
#remplissage de la liste avec les mots lematisés
clean_words=nlp(" ".join(clean_words))
for w in clean_words:
clean_words_lem.append(w.lemma_)
#afficher les k n-grammes les plus communs dans le texte, ici les 100 premiers trigrammes
n=3
k=100
ngram = list(nltk.ngrams(clean_words_lem,n))
fdist = FreqDist(ngram)
print(fdist.most_common(k))

Et c’est fini ! La liste des k n-grammes les plus récurrents s’affichent dans votre console !