Maison > Périphériques technologiques > Industrie informatique > Début avec le traitement du langage naturel à Python

Début avec le traitement du langage naturel à Python

Joseph Gordon-Levitt
Libérer: 2025-02-10 10:51:09
original
745 Les gens l'ont consulté

Getting Started with Natural Language Processing in Python

Dans le monde d'aujourd'hui, une grande quantité de données n'est pas structurée, telles que des données texte telles que les commentaires sur les réseaux sociaux, l'historique de la navigation et les commentaires des clients. Face à des données de texte massives, je ne sais pas par où commencer à les analyser? La technologie de traitement du langage naturel de Python (NLP) peut vous aider!

Ce tutoriel est conçu pour vous guider pour utiliser les concepts de base de la PNL et analyser les données texte dans Python. Nous apprendrons à décomposer le texte en unités plus petites (métamorphose des mots), à normaliser les mots sous forme de tige (extraction de la tige et restauration morphologique) et comment nettoyer les documents en préparation d'une analyse plus approfondie.

Commençons!

Points de base

  • Le traitement du langage naturel de Python (NLP) implique la rupture du texte en éléments de mots, la normalisation des mots en formes STEM et le nettoyage des documents pour une analyse plus approfondie. Nous utiliserons la bibliothèque NLTK de Python pour effectuer ces opérations.
  • Les deux techniques de conversion de mots en forme de tige sont l'extraction de la tige et la restauration de la forme lexicale. L'extraction de la tige est un algorithme simple qui supprime les affixes de mots;
  • Le nettoyage des données dans la PNL consiste à supprimer la ponctuation et les mots d'arrêt (tels que des mots communs comme «I», «A» et «le»), car ces mots donnent peu de sens lors de l'analyse du texte.
  • Après avoir nettoyé le texte, vous pouvez utiliser la classe FreqDist de NLTK pour trouver la fréquence des mots. Ceci est très utile pour trouver des termes communs dans le texte.

Précautions

Ce tutoriel utilise la bibliothèque NLTK de Python pour effectuer toutes les opérations NLP sur le texte. Lors de l'écriture de ce tutoriel, nous utilisons NLTK version 3.4. Vous pouvez installer la bibliothèque à l'aide de la commande PIP sur le terminal:

pip install nltk==3.4
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour vérifier la version NLTK installée dans le système, vous pouvez importer la bibliothèque dans l'interpréteur Python et vérifier la version:

import nltk
print(nltk.__version__)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans ce tutoriel, afin d'effectuer certaines opérations dans NLTK, vous devrez peut-être télécharger des ressources spécifiques. Nous décrirons chaque ressource en cas de besoin.

Cependant, si vous souhaitez éviter de télécharger des ressources une par une dans la dernière étape du tutoriel, vous pouvez maintenant télécharger toutes les ressources à la fois:

python -m nltk.downloader all
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étape 1: Métamorphose des mots

Les systèmes informatiques ne peuvent pas comprendre le langage naturel par eux-mêmes. La première étape pour gérer le langage naturel est de convertir le texte d'origine en éléments de mots. Un élément de mot est une combinaison de caractères continus avec un certain sens. C'est à vous de diviser les phrases en éléments lexicaux. Par exemple, un moyen facile est de diviser la phrase par des espaces pour le décomposer en un seul mot.

Dans la bibliothèque NLTK, vous pouvez utiliser la fonction word_tokenize() pour convertir les chaînes en éléments lexicaux. Cependant, vous devez d'abord télécharger la ressource Punkt. Exécutez la commande suivante dans le terminal:

nltk.download('punkt')
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ensuite, vous devez importer nltk.tokenize depuis word_tokenize pour l'utiliser:

from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
Copier après la connexion
Copier après la connexion
Copier après la connexion
La sortie du code

est la suivante:

pip install nltk==3.4
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous remarquerez que word_tokenize divise non seulement les chaînes en fonction des espaces, mais sépare également les marques de ponctuation en éléments de mots. Le maintien ou la suppression des marques de ponctuation dépend de vos besoins analytiques.

Étape 2: Convertissez le mot en forme de tige

Lorsque vous traitez avec un langage naturel, vous remarquez souvent qu'il existe différentes formes grammaticales du même mot. Par exemple, «aller», «aller» et «parti» sont toutes des formes différentes du même verbe «aller».

Bien que votre projet puisse avoir besoin de préserver diverses formes grammaticales de mots, discutons d'un moyen de convertir différentes formes grammaticales du même mot dans sa forme de tige. Il existe deux techniques que vous pouvez utiliser pour convertir un mot en sa forme de tige.

La première technique consiste à endiguer l'extraction. L'extraction de la tige est un algorithme simple qui supprime les affixes de mots. Il existe une variété d'algorithmes d'extraction en tige disponibles dans NLTK. Dans ce tutoriel, nous utiliserons l'algorithme Porter.

Nous importons d'abord nltk.stem.porter de PorterStemmer. Ensuite, nous initialisons l'extracteur en tige de la variable stemmer, puis utilisons la méthode .stem() pour trouver la forme en tige du mot:

import nltk
print(nltk.__version__)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

La sortie du code ci-dessus est Go. Si vous exécutez l'extracteur en tige pour d'autres formes de "go" décrites ci-dessus, vous remarquerez que l'extracteur en tige renvoie le même formulaire en tige "GO". Cependant, comme l'extraction en tige n'est qu'un algorithme simple basé sur la suppression des affixes de mots, il échoue lorsque les mots sont utilisés moins fréquemment dans le langage.

Par exemple, lorsque vous essayez d'utiliser un extracteur en tige pour le mot "constitue", il donne des résultats inutiles:

python -m nltk.downloader all
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous remarquerez que la sortie est "constituée".

Ce problème peut être résolu en adoptant une approche plus complexe qui regarde la forme STEM d'un mot dans un contexte donné. Ce processus est appelé réduction de la forme de mot. La restauration de la forme des mots normalise les mots basés sur le contexte et le vocabulaire du texte. Dans NLTK, vous pouvez utiliser la classe WordNetLemmatizer pour effectuer une restauration morphologique des phrases.

Tout d'abord, vous devez télécharger WordNet Resources du téléchargeur NLTK dans le terminal Python:

nltk.download('punkt')
Copier après la connexion
Copier après la connexion
Copier après la connexion

Une fois le téléchargement terminé, vous devez importer la classe WordNetLemmatizer et l'initialiser:

from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour utiliser le restaurateur de morphologie, utilisez la méthode .lemmatize(). Il accepte deux paramètres: le mot et le contexte. Dans notre exemple, nous utiliserons "V" comme contexte. Après avoir vu la sortie de la méthode .lemmatize(), nous explorerons davantage le contexte:

<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
Copier après la connexion
Copier après la connexion

Vous remarquerez que la méthode .lemmatize() convertit correctement le mot "constitue" en sa forme STEM "constituent". Vous remarquerez également que la restauration de la forme des mots prend plus de temps que l'extraction en tige car l'algorithme est plus complexe.

Vérifions comment déterminer par programme le deuxième paramètre de la méthode .lemmatize(). NLTK a une fonction pos_tag() qui aide à déterminer le contexte des mots dans une phrase. Cependant, vous devez d'abord télécharger averaged_perceptron_tagger ressource:

pip install nltk==3.4
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ensuite, importez la fonction pos_tag() et exécutez-la sur la phrase:

import nltk
print(nltk.__version__)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous remarquerez que la sortie est une liste de paires. Chaque paire contient un élément de mot et sa balise qui représente le contexte de l'élément de mot à travers le texte. Veuillez noter que l'étiquette de la ponctuation est elle-même:

python -m nltk.downloader all
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Comment décoder le contexte de chaque mot? Vous trouverez ci-dessous une liste complète de toutes les balises sur le Web et leurs significations correspondantes. Veuillez noter que tous les noms ont des étiquettes en commençant par "n" et tous les verbes ont des étiquettes en commençant par "V". Nous pouvons utiliser ces informations dans le deuxième paramètre de la méthode .lemmatize():

nltk.download('punkt')
Copier après la connexion
Copier après la connexion
Copier après la connexion

La sortie du code ci-dessus est la suivante:

from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette production est comme prévu, et "constitue" et "les" magistrats "sont convertis en" constituent "et" magistrat "respectivement.

Étape 3: Nettoyage des données

L'étape suivante dans la préparation des données consiste à nettoyer les données et à supprimer tout ce qui n'ajoutera pas de sens à votre analyse. Dans l'ensemble, nous examinerons comment les mots de ponctuation et d'arrêt peuvent être supprimés de l'analyse.

La suppression des marques de ponctuation est une tâche assez simple. string L'objet punctuation de la bibliothèque contient toutes les marques de ponctuation en anglais:

<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
Copier après la connexion
Copier après la connexion

La sortie de cet extrait de code est la suivante:

from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem("going"))
Copier après la connexion

Pour supprimer les marques de ponctuation des éléments de mot, vous pouvez simplement exécuter le code suivant:

print(stemmer.stem("constitutes"))
Copier après la connexion

Ensuite, nous nous concentrerons sur la façon de supprimer les mots d'arrêt. Les mots d'arrêt sont des mots couramment utilisés dans le langage, tels que «I», «A» et «le», et lors de l'analyse du texte, ces mots donnent peu de sens. Par conséquent, nous supprimerons les mots d'arrêt de l'analyse. Tout d'abord, téléchargez les ressources de mots d'arrêt du téléchargeur NLTK:

nltk.download('wordnet')
Copier après la connexion

Une fois le téléchargement terminé, importez nltk.corpus à partir de stopwords et utilisez la méthode words(), avec "anglais" comme paramètre. Voici une liste de 179 mots d'arrêt en anglais:

from nltk.stem.wordnet import WordNetLemmatizer
lem = WordNetLemmatizer()
Copier après la connexion

Nous pouvons combiner l'exemple de restauration de la forme du mot avec les concepts discutés dans cette section pour créer la fonction suivante clean_data(). De plus, nous convertirons le mot en minuscules avant de comparer si elle fait partie de la liste des mots d'arrêt. De cette façon, si le mot d'arrêt apparaît au début de la phrase et capitalise, nous pouvons toujours le capturer:

print(lem.lemmatize('constitutes', 'v'))
Copier après la connexion

La sortie de cet exemple est la suivante:

nltk.download('averaged_perceptron_tagger')
Copier après la connexion

Comme vous pouvez le voir, les mots de ponctuation et d'arrêt ont été supprimés.

Distribution de fréquence des mots

Maintenant que vous connaissez les techniques de nettoyage de base dans la PNL, essayons de trouver la fréquence des mots dans le texte. Dans cet exercice, nous utiliserons le texte du conte de fées "rat, oiseau et saucisse", qui est disponible gratuitement sur le projet Gutenberg. Nous stockerons le texte de ce conte de fées dans une chaîne text.

Tout d'abord, nous multiplions le text puis le nettoyons en utilisant la fonction définie ci-dessus clean_data:

pip install nltk==3.4
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour trouver la distribution de fréquence des mots dans le texte, vous pouvez utiliser la classe FreqDist de NLTK. Initialisez la classe avec des éléments de mot comme paramètres. Utilisez ensuite la méthode .most_common() pour trouver des termes communs. Dans ce cas, essayons de trouver les dix premiers termes:

import nltk
print(nltk.__version__)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Voici les dix termes les plus fréquemment vus dans ce conte de fées:

python -m nltk.downloader all
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Selon les attentes, les trois termes les plus courants sont les trois personnages principaux des contes de fées.

Lors de l'analyse du texte, la fréquence des mots peut ne pas être importante. Généralement, l'étape suivante de la PNL consiste à générer des statistiques - TF-IDF (fréquence de la fréquence des mots-inverses de documents) - ce qui indique l'importance des mots dans un ensemble de documents.

Conclusion

Dans ce tutoriel, nous avons une compréhension préliminaire du traitement du langage naturel dans Python. Nous convertissons le texte en éléments lexicaux, convertissons les mots en forme de tige et nettoyons enfin le texte pour supprimer toute pièce qui n'ajoute pas de sens à l'analyse.

Bien que nous examinions des tâches NLP simples dans ce tutoriel, il existe de nombreuses autres techniques à explorer. Par exemple, nous pourrions vouloir effectuer une modélisation de sujets sur les données du texte, dans le but de trouver des sujets communs dont le texte peut discuter. Une tâche plus complexe dans la PNL consiste à mettre en œuvre des modèles d'analyse des sentiments pour déterminer les émotions derrière n'importe quel texte.

des commentaires ou des questions? N'hésitez pas à me contacter sur Twitter.

Des questions fréquemment posées sur le traitement du langage naturel avec Python (FAQ)

Quelle est la principale différence entre le traitement du langage naturel (NLP) et la compréhension du langage naturel (NLU)?

Le traitement du langage naturel (NLP) et la compréhension du langage naturel (NLU) sont deux sous-champs d'intelligence artificielle qui sont souvent confus. La PNL est un concept plus large qui contient toutes les méthodes d'interaction avec les ordinateurs en utilisant le langage naturel. Cela comprend la compréhension et la génération du langage humain. NLU, en revanche, est un sous-ensemble de PNL spécialisée dans la compréhension des aspects. Cela implique d'utiliser des algorithmes pour comprendre et interpréter le langage humain de manière précieuse.

Comment améliorer la précision des modèles NLP dans Python?

Améliorer la précision des modèles PNL implique une variété de stratégies. Tout d'abord, vous pouvez utiliser plus de données de formation. Plus vos données d'apprentissage ont de l'apprentissage que votre modèle dispose, mieux ses performances. Deuxièmement, envisagez d'utiliser différentes techniques NLP. Par exemple, si vous utilisez un sac de mots (arc), vous voudrez peut-être essayer la fréquence de document WordFrequency-inverse (TF-IDF) ou Word2Vec. Enfin, le réglage fin des paramètres du modèle peut également entraîner des améliorations significatives.

Quelles sont les applications communes de la PNL dans le monde réel?

NLP a de larges applications dans le monde réel. Il s'agit notamment de la traduction du langage, de l'analyse des sentiments, des chatbots, des assistants vocaux tels que Siri et Alexa, un résumé de texte et une détection de spam par e-mail.

Comment fonctionne la lexicalisation de la PNL?

La métamorphose des mots est le processus de décomposition du texte en mots uniques ou en éléments de mot. Il s'agit d'une étape clé dans la PNL car elle permet au modèle de comprendre et d'analyser le texte. Dans Python, vous pouvez utiliser la fonction word_tokenize de la bibliothèque NLTK pour effectuer la lexicalisation.

Quel est le rôle des mots d'arrêt dans la PNL?

Les mots d'arrêt sont des mots courants qui sont souvent filtrés pendant la phase de prétraitement de la PNL car ils ne contiennent pas beaucoup d'informations significatives. Les exemples incluent "IS", "le", "et", etc. La suppression de ces mots peut aider à améliorer les performances du modèle NLP.

Comment gérer plusieurs langues dans NLP?

La disposition de plusieurs langues dans la PNL peut être difficile en raison de différences de grammaire, de syntaxe et de vocabulaire. Cependant, la bibliothèque NLTK de Python prend en charge plusieurs langues. Vous pouvez également utiliser une bibliothèque de détection de langue comme langdetect pour identifier la langue du texte, puis la traiter.

Que sont l'extraction des tiges et la restauration lexicale dans la PNL?

L'extraction des tiges et la restauration morphologique sont des techniques utilisées pour simplifier les mots dans leur tige ou leur forme racine. La principale différence entre eux est que l'extraction des tiges crée souvent des mots inexistants, tandis que le principe de restauration de la forme de mot réduit le mot à sa forme racine linguistiquement correcte.

Comment utiliser la PNL pour l'analyse des sentiments?

L'analyse émotionnelle consiste à déterminer les émotions exprimées dans le texte. Cela peut être fait en utilisant diverses techniques NLP. Par exemple, vous pouvez facilement effectuer une analyse des sentiments à l'aide de la bibliothèque TextBlob dans Python.

Quelle est la syntaxe N-Meta dans NLP?

N La métagramme est une séquence continue de n éléments consécutifs dans un texte ou un échantillon de discours donné. Ils sont utilisés pour la PNL afin de prédire l'élément suivant dans la séquence. Par exemple, dans la grammaire binaire (n = 2), vous considérez les paires de mots pour analyse ou prédiction.

Comment utiliser la NLP pour la classification du texte?

La classification du texte consiste à classer le texte dans des catégories prédéfinies. Cela peut être fait en utilisant une variété de techniques NLP et d'algorithmes d'apprentissage automatique. Par exemple, vous pouvez utiliser un sac de mots ou TF-IDF pour l'extraction des fonctionnalités, puis saisir ces fonctionnalités dans un modèle d'apprentissage automatique pour la classification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal