Python

NLTK-Tutorial in Python

NLTK-Tutorial in Python
Das Zeitalter der Daten ist bereits da. Die Rate, mit der die Daten heute generiert werden, ist höher denn je und wächst ständig. Die Leute, die sich täglich mit Daten beschäftigen, arbeiten meist mit unstrukturierten Textdaten. Einige dieser Daten haben verknüpfte Elemente wie Bilder, Videos, Audios usw. Einige der Quellen für diese Daten sind Websites, tägliche Blogs, Nachrichten-Websites und vieles mehr. All diese Daten schneller zu analysieren ist notwendig und oft auch entscheidend.

Zum Beispiel könnte ein Unternehmen eine Textanalyse-Engine betreiben, die die Tweets über sein Unternehmen verarbeitet, die den Firmennamen, den Standort, die Verarbeitung und Analyse der mit diesem Tweet verbundenen Emotionen erwähnen. Korrekte Maßnahmen können schneller ergriffen werden, wenn dieses Unternehmen von der Zunahme negativer Tweets an einem bestimmten Ort erfährt, um sich vor einem Fehler oder etwas anderem zu schützen. Ein weiteres gängiges Beispiel wird für Youtube. Die Youtube-Admins und -Moderatoren lernen die Wirkung eines Videos in Abhängigkeit von der Art der Kommentare zu einem Video oder den Video-Chat-Nachrichten kennen. Dies wird ihnen helfen, unangemessene Inhalte auf der Website viel schneller zu finden, da sie jetzt die manuelle Arbeit beseitigt und automatisierte intelligente Textanalyse-Bots eingesetzt haben.

In dieser Lektion werden wir einige der Konzepte im Zusammenhang mit der Textanalyse mit Hilfe der NLTK-Bibliothek in Python studieren. Einige dieser Konzepte beinhalten:

NLP wird der Hauptschwerpunkt in dieser Lektion sein, da es auf enorme reale Szenarien anwendbar ist, in denen es große und entscheidende Probleme lösen kann. Wenn Sie denken, dass dies komplex klingt, ist es das, aber die Konzepte sind ebenso leicht zu verstehen, wenn Sie Beispiele nebeneinander ausprobieren. Beginnen wir mit der Installation von NLTK auf Ihrem Computer, um damit zu beginnen.

Installieren von NLTK

Nur eine Anmerkung vor Beginn, Sie können für diese Lektion eine virtuelle Umgebung verwenden, die wir mit dem folgenden Befehl erstellen können:

python -m virtualenv nltk
source nltk/bin/aktivieren

Sobald die virtuelle Umgebung aktiv ist, können Sie die NLTK-Bibliothek in der virtuellen Umgebung installieren, damit die von uns als nächstes erstellten Beispiele ausgeführt werden können:

pip install nltk

Wir werden in dieser Lektion Anaconda und Jupyter verwenden. Wenn Sie es auf Ihrem Computer installieren möchten, sehen Sie sich die Lektion an, die beschreibt, wie man Anaconda Python unter Ubuntu 18 installiert.04 LTS“ und teilen Sie uns Ihr Feedback mit, wenn Sie auf Probleme stoßen. Um NLTK mit Anaconda zu installieren, verwenden Sie den folgenden Befehl im Terminal von Anaconda:

conda install -c anaconda nltk

Wir sehen so etwas, wenn wir den obigen Befehl ausführen:

Sobald alle benötigten Pakete installiert und fertig sind, können wir mit der Verwendung der NLTK-Bibliothek mit der folgenden Importanweisung beginnen:

nltk importieren

Beginnen wir mit grundlegenden NLTK-Beispielen, nachdem wir die Voraussetzungspakete installiert haben.

Tokenisierung

Wir beginnen mit der Tokenisierung, dem ersten Schritt bei der Durchführung der Textanalyse. Ein Token kann jeder kleinere Teil eines Textes sein, der analysiert werden kann. Es gibt zwei Arten der Tokenisierung, die mit NLTK durchgeführt werden können:

Sie können erraten, was bei jeder Tokenisierung passiert, also lassen Sie uns in Codebeispiele eintauchen dive.

Satztokenisierung

Wie der Name schon sagt, zerlegt Sentence Tokenizers einen Textabschnitt in Sätze. Versuchen wir es mit einem einfachen Code-Snippet für dasselbe, bei dem wir einen Text verwenden, den wir aus dem Apache Kafka-Tutorial ausgewählt haben. Wir führen die notwendigen Importe durch

nltk importieren
von nltk.Tokenize-Import sent_tokenize

Bitte beachten Sie, dass aufgrund einer fehlenden Abhängigkeit für nltk namens . ein Fehler auftreten kann punkt. Fügen Sie direkt nach den Importen im Programm die folgende Zeile hinzu, um Warnungen zu vermeiden:

nltk.herunterladen('punkt')

Bei mir hat es folgende Ausgabe ergeben:

Als nächstes verwenden wir den Satz-Tokenizer, den wir importiert haben:

text = """Ein Thema in Kafka ist etwas, wo eine Nachricht gesendet wird. Der Verbraucher
Anwendungen, die an diesem Thema interessiert sind, ziehen die Nachricht darin
Thema und kann mit diesen Daten alles machen. Bis zu einem bestimmten Zeitpunkt beliebig viele
Verbraucheranwendungen können diese Nachricht beliebig oft abrufen."""
Sätze = sent_tokenize(Text)
drucken (Sätze)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Wie erwartet war der Text korrekt in Sätze gegliedert.

Wort-Tokenisierung

Wie der Name schon sagt, zerlegt Word Tokenizers ein Stück Text in Wörter. Versuchen wir es mit einem einfachen Code-Snippet für dasselbe mit demselben Text wie im vorherigen Beispiel:

von nltk.tokenize import word_tokenize
Wörter = Wort_Tokenize(Text)
drucken (Wörter)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Wie erwartet war der Text korrekt in Wörter gegliedert.

Häufigkeitsverteilung

Nachdem wir nun den Text gebrochen haben, können wir auch die Häufigkeit jedes Wortes in dem von uns verwendeten Text berechnen. Es ist sehr einfach mit NLTK zu tun, hier ist das Code-Snippet, das wir verwenden:

von nltk.Wahrscheinlichkeitsimport FreqDist
Verteilung = FreqDist(Wörter)
Drucken (Verteilung)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Als nächstes können wir die gängigsten Wörter im Text mit einer einfachen Funktion finden, die die Anzahl der anzuzeigenden Wörter akzeptiert:

# Häufigste Wörter
Verteilung.most_common(2)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Schließlich können wir ein Häufigkeitsverteilungsdiagramm erstellen, um die Wörter und ihre Anzahl im gegebenen Text zu löschen und die Verteilung der Wörter klar zu verstehen:

Stoppwörter

Genau wie wenn wir mit einer anderen Person über einen Anruf sprechen, gibt es während des Anrufs tendenziell Geräusche, bei denen es sich um unerwünschte Informationen handelt. Auf die gleiche Weise enthält auch Text aus der realen Welt Rauschen, das als . bezeichnet wird Stoppwörter. Stoppwörter können von Sprache zu Sprache variieren, aber sie können leicht identifiziert werden. Einige der Stoppwörter in englischer Sprache können sein - is, are, a, the, an etc.

Wir können uns Wörter, die von NLTK als Stoppwörter für die englische Sprache angesehen werden, mit dem folgenden Code-Snippet ansehen:

von nltk.Korpus-Importstoppwörter
nltk.herunterladen('Stoppwörter')
Sprache = "englisch"
stop_words = set(stopwords.Wörter (Sprache))
print(stop_words)

Da der Satz von Stoppwörtern natürlich groß sein kann, wird er als separater Datensatz gespeichert, der mit NLTK heruntergeladen werden kann, wie oben gezeigt. Wir sehen so etwas, wenn wir das obige Skript ausführen:

Diese Stoppwörter sollten aus dem Text entfernt werden, wenn Sie eine genaue Textanalyse für den bereitgestellten Text durchführen möchten. Lassen Sie uns die Stoppwörter aus unseren Text-Token entfernen:

gefilterte_wörter = []
für wort in worten:
wenn Wort nicht in stop_words:
gefilterte_wörter.anhängen (Wort)
gefilterte_wörter

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Wortstämme

Ein Wortstamm ist die Basis dieses Wortes. Beispielsweise:

Wir werden das Stemming nach den gefilterten Wörtern durchführen, aus denen wir im letzten Abschnitt Stoppwörter entfernt haben. Lassen Sie uns ein einfaches Code-Snippet schreiben, in dem wir den Stemmer von NLTK verwenden, um die Operation auszuführen:

von nltk.Stammimport PorterStemmer
ps = PorterStemmer()
stemmed_words = []
für Wort in gefilterten_Wörtern:
stemmed_words.anhängen (ps.Stamm (Wort))
print("Gestammter Satz:", stemmed_words)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

POS-Tagging

Der nächste Schritt bei der Textanalyse besteht nach dem Stammen darin, jedes Wort nach seinem Wert zu identifizieren und zu gruppieren, d.e. wenn jedes Wort ein Substantiv oder ein Verb oder etwas anderes ist. Dies wird als Part of Speech-Tagging bezeichnet tag. Lassen Sie uns jetzt POS-Tagging durchführen:

Token=nltk.word_tokenize(sätze[0])
drucken (Token)

Wir sehen so etwas, wenn wir das obige Skript ausführen:

Jetzt können wir das Tagging durchführen, für das wir einen weiteren Datensatz herunterladen müssen, um die richtigen Tags zu identifizieren:

nltk.herunterladen('averaged_perceptron_tagger')
nltk.pos_tag(Token)


Hier ist die Ausgabe des Taggings:

Nachdem wir nun endlich die markierten Wörter identifiziert haben, ist dies der Datensatz, mit dem wir eine Stimmungsanalyse durchführen können, um die Emotionen hinter einem Satz zu identifizieren identify.

Fazit

In dieser Lektion haben wir uns ein hervorragendes Paket für natürliche Sprache, NLTK, angesehen, das es uns ermöglicht, mit unstrukturierten Textdaten zu arbeiten, um Stoppwörter zu identifizieren und eine tiefere Analyse durchzuführen, indem wir einen scharfen Datensatz für die Textanalyse mit Bibliotheken wie sklearn vorbereiten.

Finden Sie den gesamten Quellcode, der in dieser Lektion verwendet wird, auf Github. Bitte teilen Sie Ihr Feedback zur Lektion auf Twitter mit @sbmaggarwal und @LinuxHint.

Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...
So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...