So extrahieren Sie Sätze aus dem Text mit dem NLTK -Python -Modul aus dem Text

So extrahieren Sie Sätze aus dem Text mit dem NLTK -Python -Modul aus dem Text
Das natürliche Sprache Toolkit (NLTK) ist ein Sprach- und Textverarbeitungsmodul für Python. NLTK kann Text analysieren, verarbeiten und tokenisieren, die in vielen verschiedenen Sprachen mithilfe seiner integrierten Bibliothek und einem großen Pool von lexikalischen Daten verfügbar sind. Python ist eine der beliebtesten Programmiersprachen in der Datenwissenschaft und Sprachverarbeitung, hauptsächlich aufgrund der Vielseitigkeit der Sprache und der Verfügbarkeit nützlicher Module wie NLTK. In diesem Artikel wird erläutert, wie Sätze aus Textabsätzen mit NLTK extrahiert werden können. Der Code in diesem Leitfaden wurde mit Python 3 getestet.8.2 und NLTK 3.4.5 auf Ubuntu 20.04 LTS.

Installieren von NLTK unter Linux

Führen Sie den folgenden Befehl aus, um NLTK in Ubuntu zu installieren:

$ sudo apt installieren python3-nltk

NLTK -Pakete sind in allen wichtigen Linux -Verteilungen erhältlich. Suchen Sie nach dem Schlüsselwort "NLTK" im Paketmanager, um die Pakete zu installieren. Wenn NLTK aus irgendeinem Grund in den Repositorys Ihrer Verteilung nicht verfügbar ist, können Sie ihn aus dem PIP -Paket -Manager installieren, indem Sie den folgenden Befehl ausführen:

$ pip install --user -u nltk

Beachten Sie, dass Sie zuerst PIP von Ihrem Paketmanager aus dem obigen Befehl installieren müssen, um zu arbeiten. Bei einigen Verteilungen kann es als PIP3 bezeichnet werden. Sie können auch detaillierte Installationsanweisungen auf der offiziellen Website von NLTK befolgen.

Sätze aus einem Absatz mit NLTK extrahieren

Für Absätze ohne komplexe Ausfälle und Abstand können Sie den integrierten NLTK-Satz-Tokenizer mit dem Namen „Punkt Tokenizer“ verwenden, der mit einem vorgebildeten Modell geliefert wird. Sie können auch Ihre eigenen geschulten Datenmodelle verwenden, um Text in Sätze zu tokenisieren. Benutzerdefinierte Datenmodelle sind nicht in diesem Artikel hinaus. Der folgende Code wird also den integrierten Punkt English Tokenizer verwenden. Um die Punkt -Ressourcendatei herunterzuladen, führen Sie die folgenden drei Befehle nacheinander aus und warten Sie, bis der Download fertiggestellt wird:

$ python3
$ import nltk
$ nltk.download ('punkt')

Ein Absatz aus „Alice's Adventures in Wonderland“ wird in der folgenden Code -Probe verwendet:

NLTK importieren
para = "Entweder war der Brunnen sehr tief oder sie fiel sehr langsam, denn sie hatte es
Viel Zeit, als sie hinunterging, um sich um sie zu wundern und sich zu fragen, was los war
Als nächstes passieren. Zuerst versuchte sie nach unten zu schauen und zu erkennen, was sie kam,
Aber es war zu dunkel, um etwas zu sehen; Dann sah sie die Seiten des Brunnens an und
bemerkte, dass sie mit Schränken und Buchschalen gefüllt waren; hier und da sie
sah Karten und Bilder an Stiften hingen. Sie nahm ein Glas aus einem der Regale runter
als sie starb; Es wurde als "Orange Marmalade" bezeichnet, aber zu ihrer großen Enttäuschung
war leer: Sie wollte das Glas nicht fallen lassen, weil sie Angst hatte, jemanden zu töten, also verwaltet es
Um es in einen der Schränke zu bringen, als sie daran vorbei fiel."
tokens = nltk.sent_tokenize (para)
für t in tokens:
print (t, "\ n")

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:

Der integrierte Punkt-Satz-Tokenizer funktioniert gut, wenn Sie einfache Absätze tokenisieren möchten. Nach dem Importieren des NLTK -Modul. Der Punkt -Satz -Tokenizer erfasst jedoch möglicherweise nicht korrekt Sätze, wenn ein komplexer Absatz vorhanden ist, der viele Interpunktionsmarken, Ausrufezeichen, Abkürzungen oder sich wiederholende Symbole enthält. Es ist nicht möglich, eine Standardmethode zu definieren, um diese Probleme zu überwinden. Sie müssen benutzerdefinierten Code schreiben, um diese Probleme mithilfe von Regex, String-Manipulation oder Ihrem eigenen Datenmodell zu trainieren, anstatt das integrierte PunkT-Datenmodell zu verwenden.

Sie können auch versuchen, das vorhandene PunkT -Modell zu optimieren, um die falsche Tokenisierung mit einigen zusätzlichen Parametern zu beheben. Befolgen Sie dazu die offizielle Punkt -Tokenization -Dokumentation, die hier verfügbar ist. Um Ihre eigenen benutzerdefinierten Verbesserungen zu verwenden, ist eine leichte Änderung des Code erforderlich:

Von NLTK.Tokenize.Punkt Import Punktsentencetokenizer, Punktparameter
para = "Entweder war der Brunnen sehr tief oder sie fiel sehr langsam, denn sie hatte viel
der Zeit, als sie hinunterging, um sich um sie zu kümmern und sich zu fragen, was passieren würde
nächste. Zuerst versuchte sie nach unten zu schauen und herauszufinden, was sie kam, aber es war es
zu dunkel, um etwas zu sehen; Dann sah sie die Seiten des Brunnens an und bemerkte es
dass sie mit Schränken und Buchschütteln gefüllt waren; Hier und da sah sie Karten
und Bilder hing an Stiften. Sie nahm ein Glas aus einem der Regale, als sie
bestanden; Es wurde als "Orange Marmalade" bezeichnet, aber zu ihrer großen Enttäuschung war es
leer: Sie wollte das Glas nicht fallen, aus Angst, jemanden zu töten
Steck es in einen der Schränke, als sie daran vorbeifiel."
punkt_params = punktparameters ()
punkt_params.ABBREV_TYPES = SET (['MR', 'MRS', 'LLC'])
tokenizer = punktsentencetokenizer (punkt_params)
Tokens = Tokenizer.Tokenize (Abs.)
für t in tokens:
print (t, "\ n")

Der obige Code erledigt den gleichen Job wie die Methode "sent_tokenize ()". Sie können jedoch jetzt Ihre eigenen Regeln mit integrierten Methoden definieren und als Argumente bestehen, wie in der Dokumentation beschrieben. Zum Beispiel wurden dem obigen Code einige Abkürzungen hinzugefügt. Wenn auf diese Abkürzungen eine Interpunktion folgen, werden sie nicht in einen neuen Satz unterteilt. Das normale Verhalten besteht darin, einen Punkt oder eine Periode als Hinweis auf das Ende eines Satzes zu verwenden.

Abschluss

NLTK und seine Tokenisierungsmethoden sind bei der Tokenisierung und Verarbeitung von Textdaten recht effizient. Die vorgeborenen Modelle funktionieren jedoch möglicherweise nicht 100% mit verschiedenen Arten von Texten. Möglicherweise müssen Sie die vorhandenen Modelle verbessern, Ihre eigenen ausbilden und liefern oder Ihren eigenen Code schreiben, um Anomalien zu beheben.