Einführung in das Natural Language Toolkit (NLTK)

Natural Language Processing (NLP) ist die automatische oder halbautomatische Verarbeitung von menschlicher Sprache. NLP ist eng mit der Linguistik verbunden und hat Verbindungen zur Forschung in den Bereichen Kognitionswissenschaft, Psychologie, Physiologie und Mathematik. Insbesondere im Informatikbereich bezieht sich NLP auf Compilertechniken, formale Sprachtheorie, Mensch-Computer-Interaktion, maschinelles Lernen und Theorembeweis. Diese Quora-Frage zeigt verschiedene Vorteile von NLP.

In diesem Tutorial werde ich Sie durch eine interessante Python-Plattform für NLP namens Natural Language Toolkit (NLTK) führen. Bevor wir sehen, wie man mit dieser Plattform arbeitet, möchte ich Ihnen zunächst sagen, was NLTK ist.

Was ist NLTK??

Das Natural Language Toolkit (NLTK) ist eine Plattform, mit der Programme zur Textanalyse erstellt werden. Die Plattform wurde ursprünglich von Steven Bird und Edward Loper in Verbindung mit einem Kurs für Computerlinguistik an der University of Pennsylvania im Jahr 2001 veröffentlicht. Es gibt ein Begleitbuch für die Plattform namens Natural Language Processing mit Python.

NLTK installieren

Lassen Sie uns nun NLTK installieren, um mit der Verarbeitung natürlicher Sprache zu experimentieren. Es wird Spaß machen!

Die Installation von NLTK ist sehr einfach. Ich verwende Windows 10, also in meiner Eingabeaufforderung (MS-DOSIch gebe folgenden Befehl ein:

pip install nltk

Wenn Sie Ubuntu oder MacOS verwenden, führen Sie den Befehl von der aus Terminal. Weitere Informationen zur Installation von NLTK auf verschiedenen Plattformen finden Sie in der Dokumentation.

Wenn Sie sich fragen, was Pip Dies ist ein Paketverwaltungssystem, das zum Installieren und Verwalten von in Python geschriebenen Softwarepaketen verwendet wird. Wenn Sie Python 2> = 2.7.9 oder Python 3> = 3.4 verwenden, ist dies bereits der Fall Pip Eingerichtet! Um Ihre Python-Version zu überprüfen, geben Sie einfach Folgendes in Ihre Eingabeaufforderung ein:

Python - Version

Gehen wir weiter und prüfen, ob wir NLTK erfolgreich installiert haben. Öffnen Sie dazu Python's IDLE und geben Sie die beiden in der folgenden Abbildung gezeigten Zeilen ein:


Wenn die NLTK-Version zurückgegeben wird, dann haben Sie Glückwunsch, NLTK wurde erfolgreich installiert!

Im obigen Schritt haben wir also NLTK aus dem Python Package-Index (pip) lokal in unsere virtuelle Umgebung installiert.

Beachten Sie, dass Sie möglicherweise eine andere Version von NLTK haben, je nachdem, wann Sie die Plattform installiert haben. Dies sollte jedoch kein Problem verursachen.

Mit NLTK arbeiten

Das erste, was wir für die Zusammenarbeit mit NLTK tun müssen, ist das Herunterladen des sogenannten NLTK-Korpora. Ich werde die ganze Korpora herunterladen. Ich weiß, dass es sehr groß ist (10,9 GB), aber wir werden es nur einmal tun. Wenn Sie wissen, welche Korpora Sie benötigen, müssen Sie nicht die gesamte Korpora herunterladen. 

Geben Sie im IDLE Ihres Pythons Folgendes ein:

import nltk nltk.download ()

In diesem Fall erhalten Sie eine GUI, über die Sie das Ziel und den Download angeben können, wie in der folgenden Abbildung dargestellt:

Ich werde an dieser Stelle alles herunterladen. Drücke den Herunterladen Klicken Sie auf die Schaltfläche unten links im Fenster und warten Sie, bis alles in Ihr Zielverzeichnis heruntergeladen ist.

Bevor Sie fortfahren, fragen Sie sich vielleicht, was für ein Korpus (Singular von Korpora) ist. Ein Korpus kann wie folgt definiert werden:

Corpus, Plural Korpora; Eine Sammlung sprachlicher Daten, entweder als geschriebene Texte oder als Transkription aufgezeichneter Sprache. Der Hauptzweck eines Korpus besteht darin, eine Hypothese über die Sprache zu überprüfen, beispielsweise um festzustellen, wie die Verwendung eines bestimmten Sounds, eines bestimmten Wortes oder einer syntaktischen Konstruktion variiert. Die Korpuslinguistik befasst sich mit den Prinzipien und der Praxis des Einsatzes von Korpora im Sprachunterricht. Ein Computerkorpus ist eine große Sammlung maschinenlesbarer Texte.
(Crystal, David. 1992. Enzyklopädisches Wörterbuch der Sprachen und Sprachen. Oxford: Blackwell.)

Ein Textkorpus ist also einfach irgendein großer Textkörper.

Stoppen Sie Wörter

Manchmal müssen wir unbrauchbare Daten herausfiltern, um sie für den Computer verständlicher zu machen. Bei der Verarbeitung natürlicher Sprache (NLP) werden solche unbrauchbaren Daten (Wörter) aufgerufen stoppe Wörter. Also haben diese Worte für uns keine Bedeutung und wir möchten sie entfernen.

NLTK liefert uns zunächst einige Stoppwörter. Um diese Wörter anzuzeigen, verwenden Sie das folgende Skript:

von nltk.corpus import Stoppwörter drucken (set (stopwords.words ('English')))

In diesem Fall erhalten Sie folgende Ausgabe:

Was wir gemacht haben, ist, dass wir einen Satz (ungeordnete Sammlung von Artikeln) von Stoppwörtern der englischen Sprache ausgedruckt haben.

Wie können wir die Stoppwörter aus unserem eigenen Text entfernen? Das folgende Beispiel zeigt, wie wir diese Aufgabe ausführen können:

von nltk.corpus import stopwords von nltk.tokenize import word_tokenize text = 'In diesem Lernprogramm lerne ich NLTK. Es ist eine interessante Plattform. ' stop_words = set (stopwords.words ('english')) words = word_tokenize (text) new_sentence = [] für Wörter in Wörtern: Wenn das Wort nicht in stop_words ist: new_sentence.append (word)

Die Ausgabe des obigen Skripts lautet:

Tokenisierung, wie in Wikipedia definiert, lautet:

Das Aufteilen eines Textstroms in Wörter, Ausdrücke, Symbole oder andere bedeutungsvolle Elemente, die als Token bezeichnet werden.

Also was ist das? word_tokenize () Funktion tut ist:

Tokenize eine Zeichenfolge, um andere Interpunktionen als Punkte zu trennen

Suchen

Nehmen wir an, wir haben die folgende Textdatei (laden Sie die Textdatei von Dropbox herunter). Wir möchten das Wort suchen (suchen) Sprache. Wir können dies einfach mit der NLTK-Plattform wie folgt tun:

nltk-Datei importieren = offen ('NLTK.txt', 'r') read_file = file.read () text = nltk.Text (nltk.word_tokenize (read_file)) Übereinstimmung = text.concordance ('language')

In diesem Fall erhalten Sie folgende Ausgabe:

Beachte das Konkordanz() gibt jedes Vorkommen des Wortes zurück Sprache, zusätzlich zu einem gewissen Kontext. Wie zuvor im Skript gezeigt, tokenieren wir die gelesene Datei und konvertieren sie in eine nltk.Text Objekt.

Ich möchte nur anmerken, dass ich beim ersten Ausführen des Programms die folgende Fehlermeldung erhielt, die sich auf die von der Konsole verwendete Kodierung bezieht:

Datei "test.py", Zeile 7, in  match = text.concordance ('language'). decode ('utf-8') Datei "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", Zeile 334, in Konkordanz self._concordance_index.print_concordance ( Wort, Breite, Zeilen) Datei "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", Zeile 200, in print_concordance print (links, self._tokens [i], rechts) Datei "C: \ Python35 \ lib \ encodings \ cp437.py ", Zeile 19, in encode return codecs.charmap_encode (input, self.errors, coding_map) [0] UnicodeEncodeError: 'charmap' Codec kann das Zeichen '\ u2014' in Position 11 nicht codieren: Zeichenzuordnungen zu 

Was ich einfach getan habe, um dieses Problem zu lösen, ist, diesen Befehl vor dem Ausführen des Programms in meiner Konsole auszuführen: chcp 65001.

Der Gutenberg-Corpus

Wie in Wikipedia erwähnt:

Das Projekt Gutenberg (PG) ist ein freiwilliger Versuch, kulturelle Werke zu digitalisieren und zu archivieren, um "die Erstellung und Verbreitung von eBooks zu fördern". Sie wurde 1971 von Michael S. Hart gegründet und ist die älteste digitale Bibliothek. Die meisten Elemente in seiner Sammlung sind Volltexte von gemeinfrei zugänglichen Büchern. Das Projekt versucht, diese so frei wie möglich zu machen, in dauerhaften, offenen Formaten, die auf fast jedem Computer verwendet werden können. Zum 3. Oktober 2015 erreichte das Projekt Gutenberg 50.000 Artikel in seiner Kollektion.

NLTK enthält eine kleine Auswahl von Texten aus dem Projekt Gutenberg. Um die enthaltenen Dateien von Project Gutenberg zu sehen, führen wir folgende Schritte aus:

import nltk gutenberg_files = nltk.corpus.gutenberg.fileids () drucken (gutenberg_files)

Die Ausgabe des obigen Skripts lautet wie folgt:

Wenn wir die Anzahl der Wörter für die Textdatei ermitteln möchten bryant-stories.txt Zum Beispiel können wir Folgendes tun:

import nltk bryant_words = nltk.corpus.gutenberg.words ('bryant-stories.txt') print (len (bryant_words))

Das obige Skript sollte die folgende Anzahl von Wörtern zurückgeben: 55563

Fazit

Wie wir in diesem Tutorial gesehen haben, bietet uns die NLTK-Plattform ein leistungsfähiges Werkzeug für die Arbeit mit Natural Language Processing (NLP). Ich habe die Oberfläche in diesem Tutorial nur zerkratzt. Wenn Sie sich eingehender mit NLTK für verschiedene NLP-Aufgaben befassen möchten, können Sie auf das Begleitbuch von NLTK Bezug nehmen: Natural Language Processing mit Python.