Python

Tutoriel NLTK en Python

Tutoriel NLTK en Python
L'ère des données est déjà là. Le taux auquel les données sont générées aujourd'hui est plus élevé que jamais et il ne cesse de croître. La plupart du temps, les personnes qui traitent quotidiennement des données travaillent principalement avec des données textuelles non structurées. Certaines de ces données sont associées à des éléments tels que des images, des vidéos, des audios, etc. Certaines des sources de ces données sont des sites Web, des blogs quotidiens, des sites Web d'actualités et bien d'autres. L'analyse de toutes ces données à un rythme plus rapide est nécessaire et souvent cruciale également.

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 :

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 nltk
source 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 nltk

Nous 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 nltk

Nous 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 nltk

Commenç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 :

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 nltk
de 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 consommateur
les 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_tokenize
mots = 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é FreqDist
distribution = 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 courants
Distribution.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 corpus
nltk.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 PorterStemmer
ps = 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.

Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...
Comment changer les boutons gauche et droit de la souris sur un PC Windows 10
Il est tout à fait normal que tous les appareils de souris d'ordinateur soient conçus de manière ergonomique pour les droitiers. Mais il existe des so...