Kursinhalt
Einführung in NLP
Einführung in NLP
Tokenisierung
Bevor wir tatsächlich in den Prozess der Tokenisierung eintauchen, müssen wir zuerst definieren, was Tokens sind.
Folglich ist die Tokenisierung der Prozess des Aufteilens des Textes in Tokens. Zum Beispiel besteht ein Textabschnitt, ein Textdokument oder ein Textkorpus aus mehreren Komponenten, die in Sätze, Phrasen und Wörter unterteilt werden können. Tatsächlich gehören zu den beliebtesten Tokenisierungsmethoden die Satz- und Worttokenisierung, die verwendet wird, um ein Textdokument (oder Korpus) in Sätze und jeden Satz in Wörter zu zerlegen.
Satz-Tokenisierung
Beginnen wir mit der Satz-Tokenisierung. Glücklicherweise bietet uns nltk
die Funktion sent_tokenize()
im Modul tokenize
. Der Hauptzweck dieser Funktion besteht darin, einen gegebenen Text in eine Liste von Sätzen zu unterteilen.
sent_tokenize()
nutzt ein vortrainiertes Modell, typischerweise ein maschinelles Lernmodell, das auf einem großen Textkorpus trainiert wurde, um die Grenzen zwischen Sätzen zu identifizieren. Es berücksichtigt verschiedene Hinweise im Text, wie Interpunktionszeichen (z.B. Punkte, Ausrufezeichen, Fragezeichen), Großschreibung und andere linguistische Muster, die typischerweise das Ende eines Satzes und den Beginn eines anderen markieren.
Schauen wir uns ein Beispiel an, um die Sache zu verdeutlichen:
# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
Wie Sie sehen können, gibt es hier nichts Kompliziertes. Sie sollten einfach einen String mit Ihrem Text als Argument von sent_tokenize()
übergeben, um eine Liste von Sätzen zu erhalten. Apropos nltk.download('punkt_tab')
, dieser Befehl lädt speziell die "Punkt" Tokenizer-Modelle herunter. Durch das Herunterladen der Punkt-Tokenizer-Modelle stellen Sie sicher, dass NLTK die notwendigen Daten hat, um eine genaue Satz- und Worttokenisierung durchzuführen.
Worttokenisierung
Bei der Worttokenisierung gibt es mehrere gängige Methoden, um sie durchzuführen; in diesem Kapitel werden wir jedoch nur die beiden am häufigsten verwendeten besprechen.
Die einfachste und unkomplizierteste Methode ist die Verwendung der split()
-Funktion der String-Klasse, die standardmäßig Zeilenumbrüche, Leerzeichen und Tabs als Trennzeichen verwendet. Sie können jedoch auch einen beliebigen String als Argument übergeben, um als Trennzeichen zu dienen.
Hier ist ein Beispiel:
text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
Ein flexiblerer Ansatz ist jedoch die Verwendung der Funktion word_tokenize()
im Modul tokenize
der Bibliothek nltk
. Diese Funktion identifiziert und trennt Wörter basierend auf Leerzeichen und Satzzeichen und zerlegt Sätze effektiv in ihre einzelnen Wörter. Ähnlich wie sent_tokenize()
erfordert diese Funktion einen String als Argument.
Vergleichen wir diesen Ansatz mit der Verwendung der Methode split()
. Das folgende Beispiel verwendet word_tokenize()
:
from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
Lassen Sie uns nun sehen, wie die split()
-Methode mit demselben Text funktioniert:
text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
In unserem Beispiel identifiziert word_tokenize()
, im Gegensatz zu split()
, Interpunktion und Sonderzeichen genau als separate Tokens. Es trennt das Dollarzeichen korrekt von der Zahl und erkennt Punkte als eigenständige Tokens. Diese nuancierte Tokenisierung ist entscheidend für viele NLP-Aufgaben, bei denen die genaue Abgrenzung von Wörtern und Interpunktion die Genauigkeit und Erkenntnisse der Analyse erheblich beeinflussen kann.
Danke für Ihr Feedback!