Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Tokenisierung Mit Regulären Ausdrücken | Grundlagen der Textvorverarbeitung
Einführung in NLP
course content

Kursinhalt

Einführung in NLP

Einführung in NLP

1. Grundlagen der Textvorverarbeitung
2. Stemming und Lemmatisierung
3. Grundlegende Textmodelle
4. Wort-Einbettungen

book
Tokenisierung Mit Regulären Ausdrücken

Warum Reguläre Ausdrücke?

Während die Funktionen word_tokenize() und sent_tokenize() aus der NLTK-Bibliothek bequeme Möglichkeiten bieten, Text in Wörter und Sätze zu tokenisieren, passen sie möglicherweise nicht immer zu spezifischen Textverarbeitungsanforderungen. Lassen Sie uns daher einen alternativen Ansatz erkunden: die Tokenisierung mit regulären Ausdrücken (regex).

Im Kontext der Tokenisierung ermöglicht regex die Definition von benutzerdefinierten Mustern, die Tokens identifizieren können, und bietet mehr Kontrolle über den Tokenisierungsprozess als vorgefertigte Funktionen.

Verwendung von regexp_tokenize()

Glücklicherweise enthält die NLTK-Bibliothek die Funktion regexp_tokenize() im Modul tokenize, die einen String mithilfe eines regulären Ausdrucks in Teilstrings tokenisiert. Diese Funktion ist besonders nützlich, wenn Sie Text basierend auf Mustern tokenisieren müssen, die von den Standard-Tokenizern nicht gut verarbeitet werden.

Die wichtigsten Parameter von regexp_tokenize() sind die ersten beiden Parameter: text (der zu tokenisierende String) und pattern (regulärer Ausdruck).

Schauen wir uns ein Beispiel an:

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Wie Sie sehen können, ist der Prozess ähnlich wie bei der Verwendung der Funktion word_tokenize(), jedoch können die Ergebnisse je nach Muster variieren. In unserem Beispiel wird das Muster '\w+' verwendet, um Sequenzen von alphanumerischen Zeichen (Buchstaben und Zahlen) zu matchen, speziell ein oder mehrere alphanumerische Zeichen.

Dies führt zu einer Liste von Wörtern ohne Satzzeichen, was sich von word_tokenize() unterscheidet, da letzteres typischerweise Satzzeichen als separate Tokens einschließt. Daher wäre die Ausgabe unseres regexp_tokenize-Beispiels eine Liste von Wörtern aus dem Satz.

Verwendung von RegexpTokenizer

Ein alternativer Ansatz für die benutzerdefinierte Tokenisierung besteht in der Verwendung der RegexpTokenizer-Klasse aus dem tokenize-Modul von NLTK. Um zu beginnen, erstellen Sie eine Instanz von RegexpTokenizer, indem Sie ihr Ihr gewünschtes reguläres Ausdrucksmuster als Argument übergeben; dieses Muster definiert, wie der Text tokenisiert wird.

Im Gegensatz zur Funktion regexp_tokenize() geben Sie nicht den zu tokenisierenden Text zum Zeitpunkt der Erstellung der RegexpTokenizer-Instanz an. Stattdessen verwenden Sie, sobald die Instanz mit dem angegebenen Muster erstellt wurde, ihre tokenize()-Methode, um die Tokenisierung auf Ihren Text anzuwenden, indem Sie den Text, den Sie tokenisieren möchten, als Argument an diese Methode übergeben.

Hier ist ein Beispiel:

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Dieser Ansatz liefert die gleichen Ergebnisse und kann besser sein, wenn Sie einen Tokenizer für verschiedene Texte benötigen, da er es Ihnen ermöglicht, den Tokenizer einmal zu erstellen und dann auf verschiedene Texteingaben anzuwenden, ohne das Muster jedes Mal neu zu definieren.

Lassen Sie uns mit einem weiteren Beispiel fortfahren. Angenommen, wir möchten nur Ziffern als unsere Tokens, dann wird unser Muster '\d+' nach einer oder mehreren Ziffern suchen, wie im folgenden Beispiel:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my 100$ back right now or 20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Insgesamt ermöglicht die Regexp-Tokenisierung eine hochgradig angepasste Tokenisierung, was sie ideal für die Handhabung komplexer Muster und spezifischer Tokenisierungsregeln macht, die nicht leicht durch Standardmethoden wie word_tokenize() verwaltet werden können. In unserem Beispiel, als wir Zahlen als Tokens verwenden wollten, wäre word_tokenize() für diese Aufgabe nicht geeignet.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt