Par exemple, une entreprise peut exécuter un moteur d'analyse de texte qui traite les tweets sur son entreprise en mentionnant le nom de l'entreprise, l'emplacement, le traitement et l'analyse de l'émotion liée à ce tweet. Des actions correctes peuvent être prises plus rapidement si cette entreprise est informée de l'augmentation des tweets négatifs pour elle dans un endroit particulier pour se sauver d'une erreur ou de toute autre chose. Un autre exemple courant sera pour Youtube. Les administrateurs et les modérateurs de Youtube apprennent à connaître l'effet d'une vidéo en fonction du type de commentaires faits sur une vidéo ou des messages de chat vidéo. Cela les aidera à trouver du contenu inapproprié sur le site Web beaucoup plus rapidement car maintenant, ils ont éradiqué le travail manuel et utilisé des robots automatisés d'analyse de texte intelligent.
Dans cette leçon, nous étudierons certains des concepts liés à l'analyse de texte à l'aide de la bibliothèque NLTK en Python. Certains de ces concepts impliqueront :
- Tokenisation, comment décomposer un morceau de texte en mots, phrases
- Éviter les mots vides basés sur la langue anglaise
- Exécution de la radicalisation et de la lemmatisation sur un morceau de texte
- Identifier les tokens à analyser
La PNL sera le principal domaine d'intérêt de cette leçon car elle est applicable à d'énormes scénarios de la vie réelle où elle peut résoudre des problèmes importants et cruciaux. Si vous pensez que cela semble complexe, c'est le cas, mais les concepts sont tout aussi faciles à comprendre si vous essayez des exemples côte à côte. Passons à l'installation de NLTK sur votre machine pour commencer.
Installation de NLTK
Juste une remarque avant de commencer, vous pouvez utiliser un environnement virtuel pour cette leçon que nous pouvons faire avec la commande suivante :
python -m virtualenv nltksource nltk/bin/activer
Une fois l'environnement virtuel actif, vous pouvez installer la bibliothèque NLTK dans l'environnement virtuel afin que les exemples que nous créons ensuite puissent être exécutés :
pip installer nltkNous utiliserons Anaconda et Jupyter dans cette leçon. Si vous souhaitez l'installer sur votre machine, regardez la leçon qui décrit "Comment installer Anaconda Python sur Ubuntu 18.04 LTS" et partagez vos commentaires si vous rencontrez des problèmes. Pour installer NLTK avec Anaconda, utilisez la commande suivante dans le terminal d'Anaconda :
conda install -c anaconda nltkNous voyons quelque chose comme ceci lorsque nous exécutons la commande ci-dessus :
Une fois que tous les packages nécessaires sont installés et terminés, nous pouvons commencer à utiliser la bibliothèque NLTK avec l'instruction d'importation suivante :
importer nltkCommençons par les exemples NLTK de base maintenant que les packages de prérequis sont installés.
Tokenisation
Nous commencerons par la tokenisation qui est la première étape de l'analyse de texte. Un jeton peut être n'importe quelle partie plus petite d'un morceau de texte qui peut être analysé. Il existe deux types de tokenisation qui peuvent être effectués avec NLTK :
- Tokenisation des phrases
- Tokenisation des mots
Vous pouvez deviner ce qui se passe sur chacune des tokenisations, alors plongeons-nous dans des exemples de code.
Tokenisation des phrases
Comme son nom l'indique, Sentence Tokenizers divise un morceau de texte en phrases. Essayons un extrait de code simple pour le même où nous utilisons un texte que nous avons choisi dans le didacticiel Apache Kafka. Nous effectuerons les importations nécessaires
importer nltkde nltk.tokenize importer sent_tokenize
Veuillez noter que vous pourriez rencontrer une erreur en raison d'une dépendance manquante pour nltk appelée punkt. Ajoutez la ligne suivante juste après les importations dans le programme pour éviter tout avertissement :
nltk.télécharger('punkt')Pour moi, cela a donné la sortie suivante:
Ensuite, nous utilisons le tokenizer de phrase que nous avons importé :
text = """Un sujet dans Kafka est quelque chose où un message est envoyé. Le consommateurles applications qui s'intéressent à ce sujet tirent le message à l'intérieur de ce
sujet et peut tout faire avec ces données. Jusqu'à une heure précise, un nombre quelconque de
les applications grand public peuvent extraire ce message autant de fois."""
phrases = sent_tokenize (texte)
imprimer(phrases)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Comme prévu, le texte était correctement organisé en phrases.
Tokenisation des mots
Comme son nom l'indique, Word Tokenizers décompose un morceau de texte en mots. Essayons un extrait de code simple pour le même avec le même texte que l'exemple précédent :
de nltk.tokenize importer word_tokenizemots = word_tokenize(texte)
imprimer (mots)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Comme prévu, le texte était correctement organisé en mots.
Distribution de fréquence
Maintenant que nous avons cassé le texte, nous pouvons également calculer la fréquence de chaque mot dans le texte que nous avons utilisé. C'est très simple à faire avec NLTK, voici l'extrait de code que nous utilisons :
de nltk.importation de probabilité FreqDistdistribution = FreqDist(mots)
imprimer (diffusion)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Ensuite, nous pouvons trouver les mots les plus courants dans le texte avec une fonction simple qui accepte le nombre de mots à afficher :
# Mots les plus courantsDistribution.most_common(2)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Enfin, nous pouvons faire un tracé de distribution de fréquence pour effacer les mots et leur nombre dans le texte donné et comprendre clairement la distribution des mots :
Mots vides
Tout comme lorsque nous parlons à une autre personne via un appel, il y a généralement du bruit au cours de l'appel qui est une information indésirable. De la même manière, le texte du monde réel contient également du bruit appelé Mots vides. Les mots vides peuvent varier d'une langue à l'autre, mais ils peuvent être facilement identifiés. Certains des mots vides en anglais peuvent être - est, sont, un, le, un etc.
Nous pouvons examiner les mots considérés comme des mots vides par NLTK pour la langue anglaise avec l'extrait de code suivant :
de nltk.mots vides d'importation de corpusnltk.télécharger('mots vides')
langue = "anglais"
stop_words = set(stopwords.mots (langue))
print(stop_words)
Comme, bien sûr, l'ensemble de mots vides peut être volumineux, il est stocké dans un ensemble de données distinct qui peut être téléchargé avec NLTK comme indiqué ci-dessus. Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Ces mots vides doivent être supprimés du texte si vous souhaitez effectuer une analyse de texte précise pour le morceau de texte fourni. Supprimons les mots vides de nos tokens textuels :
mots_filtrés = []pour mot dans les mots :
si le mot n'est pas dans stop_words :
mots_filtrés.ajouter (mot)
mots_filtrés
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Racine de mots
Une racine d'un mot est la base de ce mot. Par example:
Nous effectuerons le stemming sur les mots filtrés dont nous avons supprimé les mots vides dans la dernière section. Écrivons un extrait de code simple où nous utilisons le stemmer de NLTK pour effectuer l'opération :
de nltk.Importation de tige PorterStemmerps = PorterStemmer()
stemmed_words = []
pour mot dans filtered_words :
stemmed_words.ajouter (ps.radical(mot))
print("Stemmed Phrase :", stemmed_words)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Étiquetage de point de vente
La prochaine étape de l'analyse textuelle est d'identifier et de regrouper chaque mot en fonction de sa valeur, je.e. si chacun des mots est un nom ou un verbe ou autre chose. C'est ce que l'on appelle le balisage Partiel de la parole. Effectuons maintenant le balisage POS :
jetons=nltk.word_tokenize(phrases[0])imprimer (jetons)
Nous voyons quelque chose comme ceci lorsque nous exécutons le script ci-dessus :
Maintenant, nous pouvons effectuer le marquage, pour lequel nous devrons télécharger un autre jeu de données pour identifier les balises correctes :
nltk.télécharger('averaged_perceptron_tagger')nltk.pos_tag(jetons)
Voici le résultat du balisage :
Maintenant que nous avons enfin identifié les mots étiquetés, c'est l'ensemble de données sur lequel nous pouvons effectuer une analyse des sentiments pour identifier les émotions derrière une phrase.
Conclusion
Dans cette leçon, nous avons examiné un excellent package de langage naturel, NLTK, qui nous permet de travailler avec des données textuelles non structurées pour identifier les mots vides et effectuer une analyse plus approfondie en préparant un ensemble de données précis pour l'analyse de texte avec des bibliothèques comme sklearn.
Retrouvez tout le code source utilisé dans cette leçon sur Github. Veuillez partager vos commentaires sur la leçon sur Twitter avec @sbmaggarwal et @LinuxHint.