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!
FreqDist
de NLTK pour trouver la fréquence des mots. Ceci est très utile pour trouver des termes communs dans le texte. 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
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__)
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
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')
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."))
est la suivante:
pip install nltk==3.4
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.
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__)
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
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')
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."))
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>
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
Ensuite, importez la fonction pos_tag()
et exécutez-la sur la phrase:
import nltk print(nltk.__version__)
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
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')
La sortie du code ci-dessus est la suivante:
from nltk.tokenize import word_tokenize print(word_tokenize("Hi, this is a nice hotel."))
Cette production est comme prévu, et "constitue" et "les" magistrats "sont convertis en" constituent "et" magistrat "respectivement.
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>
La sortie de cet extrait de code est la suivante:
from nltk.stem.porter import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("going"))
Pour supprimer les marques de ponctuation des éléments de mot, vous pouvez simplement exécuter le code suivant:
print(stemmer.stem("constitutes"))
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')
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()
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'))
La sortie de cet exemple est la suivante:
nltk.download('averaged_perceptron_tagger')
Comme vous pouvez le voir, les mots de ponctuation et d'arrêt ont été supprimés.
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
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__)
Voici les dix termes les plus fréquemment vus dans ce conte de fées:
python -m nltk.downloader all
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!