Die Verarbeitung natürlicher Sprache ist ein Aspekt des maschinellen Lernens, mit dem Sie geschriebene Wörter in eine maschinenfreundliche Sprache verarbeiten können. Solche Texte können dann angepasst werden, und Sie können nach Belieben Rechenalgorithmen darauf ausführen.
Die Logik hinter dieser faszinierenden Technologie scheint komplex zu sein, ist es aber nicht. Und selbst jetzt können Sie mit soliden Kenntnissen der grundlegenden Python-Programmierung mit dem Natural Language Toolkit (NLTK) eine neuartige DIY-Textverarbeitung erstellen.
Hier erfahren Sie, wie Sie mit Pythons NLTK beginnen.
Was ist NLTK und wie funktioniert es?
NLTK wurde mit Python geschrieben und bietet eine Vielzahl von String-Manipulationsfunktionen. Es ist eine vielseitige Bibliothek natürlicher Sprache mit einem umfangreichen Modell-Repository für verschiedene Anwendungen natürlicher Sprache.
Mit NLTK können Sie Rohtexte verarbeiten und daraus sinnvolle Merkmale extrahieren. Es bietet auch Textanalysemodelle, funktionsbasierte Grammatiken und umfangreiche lexikalische Ressourcen zum Erstellen eines vollständigen Sprachmodells.
So richten Sie NLTK. ein
Erstellen Sie zunächst einen Projektstammordner an einer beliebigen Stelle auf Ihrem PC. Um die NLTK-Bibliothek zu verwenden, öffnen Sie Ihr Terminal in dem zuvor erstellten Stammordner und Erstellen Sie eine virtuelle Umgebung.
Installieren Sie dann das Natural Language Toolkit in dieser Umgebung mit Pip:
pip install nltk
NLTK bietet jedoch eine Vielzahl von Datensätzen, die als Grundlage für neuartige natürliche Sprachmodelle dienen. Um darauf zuzugreifen, müssen Sie den integrierten NLTK-Daten-Downloader starten.
Nachdem Sie NLTK erfolgreich installiert haben, öffnen Sie Ihre Python-Datei mit einem beliebigen Code-Editor.
Dann importieren Sie die nltk Modul und instanziieren Sie den Daten-Downloader mit dem folgenden Code:
pip install nltk
nltk.download()
Wenn Sie den obigen Code über das Terminal ausführen, wird eine grafische Benutzeroberfläche zum Auswählen und Herunterladen von Datenpaketen angezeigt. Hier müssen Sie ein Paket auswählen und auf das klicken Herunterladen Taste, um es zu bekommen.
Jedes heruntergeladene Datenpaket wird in das angegebene Verzeichnis im Verzeichnis herunterladen Gebiet. Sie können dies ändern, wenn Sie möchten. Versuchen Sie jedoch, den Standardspeicherort auf dieser Ebene beizubehalten.
Verwandt: Die besten kostenlosen Code-Editoren zum Schreiben Ihrer ersten App
Notiz: Die Datenpakete werden standardmäßig an die Systemvariablen angehängt. Sie können sie also unabhängig von der verwendeten Python-Umgebung für nachfolgende Projekte weiter verwenden.
So verwenden Sie NLTK-Tokenizer
Letztlich bietet NLTK trainierte Tokenisierungsmodelle für Wörter und Sätze. Mit diesen Tools können Sie aus einem Satz eine Liste von Wörtern erstellen. Oder verwandeln Sie einen Absatz in ein sinnvolles Satzarray.
Hier ist ein Beispiel für die Verwendung des NLTK word_tokenizer:
nltk importieren
aus nltk.tokenize import word_tokenize
word = "Dies ist ein Beispieltext"
tokenWord = word_tokenizer (Wort)
drucken (tokenWord)
Ausgabe:
['Dies', 'ist', 'ein', 'Beispiel', 'Text']
NLTK verwendet auch einen vortrainierten Satz-Tokenizer namens PunktSentenceTokenizer. Es funktioniert, indem ein Absatz in eine Liste von Sätzen unterteilt wird.
Sehen wir uns an, wie das mit einem Absatz mit zwei Sätzen funktioniert:
nltk importieren
from nltk.tokenize import word_tokenize, PunktSentenceTokenizer
Satz = "Dies ist ein Beispieltext. Dies ist ein Tutorial für NLTK"
Token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (Satz)
drucken (tokenized_sentence)
Ausgabe:
['Dies ist ein Beispieltext.', 'Dies ist ein Tutorial für NLTK']
Sie können jeden Satz in dem aus dem obigen Code generierten Array weiter tokenisieren mit word_tokenizer und Python für Schleife.
Beispiele für die Verwendung von NLTK
Auch wenn wir nicht alle möglichen Anwendungsfälle von NLTK demonstrieren können, finden Sie hier einige Beispiele dafür, wie Sie damit beginnen können, reale Probleme zu lösen.
Holen Sie sich Wortdefinitionen und ihre Wortarten
NLTK bietet Modelle zur Bestimmung von Wortarten, zum Erhalt einer detaillierten Semantik und zur möglichen kontextbezogenen Verwendung verschiedener Wörter.
Du kannst den... benutzen Wortnetz model zum Generieren von Variablen für einen Text. Bestimmen Sie dann seine Bedeutung und Wortart.
Lassen Sie uns zum Beispiel die möglichen Variablen für "Monkey:" überprüfen.
nltk importieren
von nltk.corpus importiere wordnet als wn
print (wn.synsets('monkey'))
Ausgabe:
[Synset('monkey.n.01'), Synset('imp.n.02'), Synset('tamper.v.01'), Synset('putter.v.02')]
Der obige Code gibt mögliche Wortalternativen oder Syntaxen und Wortarten für "Affe" aus.
Überprüfen Sie nun die Bedeutung von "Affe" mit dem Definition Methode:
Affe = wn.synset('monkey.n.01').definition()
Ausgabe:
einer von verschiedenen langschwänzigen Primaten (mit Ausnahme der Halbaffen)
Sie können die Zeichenfolge in Klammern durch andere generierte Alternativen ersetzen, um zu sehen, was NLTK ausgibt.
Die pos_tag Modell bestimmt jedoch die Wortarten eines Wortes. Sie können dies mit dem verwenden word_tokenizer oder PunktSentenceTokenizer() wenn Sie es mit längeren Absätzen zu tun haben.
So funktioniert das:
nltk importieren
from nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Dies ist ein Beispieltext. Dies ist ein Tutorial zu NLTK"
Token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (Wort)
für i in tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
drucken (partsOfSpeech)
Ausgabe:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Der obige Code paart jedes tokenisierte Wort mit seinem Sprach-Tag in einem Tupel. Sie können die Bedeutung dieser Tags auf überprüfen Penn Baumbank.
Für ein saubereres Ergebnis können Sie die Punkte in der Ausgabe mit der entfernen ersetzen() Methode:
für i in tokenized_sentence:
tokenWordArray = word_tokenize (i.replace('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
drucken (partsOfSpeech)
Sauberere Leistung:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
Visualisieren von Feature-Trends mit NLTK-Plot
Das Extrahieren von Merkmalen aus Rohtexten ist oft mühsam und zeitaufwendig. Sie können jedoch die stärksten Merkmalsbestimmer in einem Text anzeigen, indem Sie das Trenddiagramm der NLTK-Häufigkeitsverteilung verwenden.
NLTK synchronisiert sich jedoch mit matplotlib. Sie können dies nutzen, um einen bestimmten Trend in Ihren Daten anzuzeigen.
Der folgende Code vergleicht beispielsweise eine Reihe positiver und negativer Wörter in einem Verteilungsdiagramm unter Verwendung ihrer letzten beiden Alphabete:
nltk importieren
from nltk import ConditionalFreqDist
Listen mit negativen und positiven Wörtern:
negativ = [
'abnormal', 'abschaffen', 'abscheulich',
'abscheulich', 'abscheulich','abscheulich'
]
positiv = [
„im Überfluss“, „im Überfluss“, „im Überfluss“,
'reichlich', 'zugänglich', 'zugänglich'
]
# Teilen Sie die Elemente in jedem Array in beschriftete Tupelpaare auf
# und kombiniere beide Arrays:
pos_negData = ([("negativ", neg) für neg in negativ]+[("positiv", pos) für pos in positiv])
# Extrahieren Sie die letzten beiden Alphabete aus dem resultierenden Array:
f = ((pos, i[-2:],) für (pos, i) in pos_negData)
# Erstellen Sie ein Verteilungsdiagramm dieser Alphabete
cfd = ConditionalFreqDist (f)
cfd.plot()
Das Diagramm der Alphabetverteilung sieht wie folgt aus:
Wenn man sich die Grafik genau ansieht, enden Wörter mit ce, ds, le, nd, und nicht haben eine höhere Wahrscheinlichkeit, positive Texte zu sein. Aber die enden mit al, ly, An, und te sind eher negative Wörter.
Notiz:Obwohl wir hier selbst generierte Daten verwendet haben, können Sie mit dem Corpus-Reader auf einige der integrierten Datensätze des NLTK zugreifen, indem Sie sie aus dem. aufrufen Korpus Klasse von nltk. Vielleicht möchten Sie sich die Korpuspaketdokumentation um zu sehen, wie Sie es verwenden können.
Mit dem Aufkommen von Technologien wie Alexa, Spam-Erkennung, Chatbots, Sentiment-Analyse und mehr scheint sich die Verarbeitung natürlicher Sprache in ihre untermenschliche Phase zu entwickeln. Obwohl wir in diesem Artikel nur einige Beispiele für das Angebot von NLTK betrachtet haben, bietet das Tool fortgeschrittenere Anwendungen, die über den Umfang dieses Tutorials hinausgehen.
Nachdem Sie diesen Artikel gelesen haben, sollten Sie eine gute Vorstellung davon haben, wie NLTK auf Basisebene verwendet wird. Jetzt müssen Sie nur noch dieses Wissen selbst in die Tat umsetzen!
Sie interessieren sich für den Bereich Machine Learning? Beginnen Sie mit diesen Bibliotheken.
Weiter lesen
- Programmierung
- Python
- Programmiersprachen
- Programmierung
Idowu hat eine Leidenschaft für alles, was smarte Technologien und Produktivität ist. In seiner Freizeit spielt er mit Programmieren und wechselt bei Langeweile aufs Schachbrett, aber er liebt es auch, ab und zu aus der Routine auszubrechen. Seine Leidenschaft, Menschen den Weg in die moderne Technik zu weisen, motiviert ihn, mehr zu schreiben.
Abonniere unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um zu abonnieren