Tokenisierung mit Regulären Ausdrücken
Swipe um das Menü anzuzeigen
Warum reguläre Ausdrücke?
Obwohl die Funktionen word_tokenize() und sent_tokenize() aus der NLTK-Bibliothek bequeme Möglichkeiten bieten, Text in Wörter und Sätze zu zerlegen, sind sie möglicherweise nicht immer für spezifische Anforderungen der Textverarbeitung geeignet. Daher betrachten wir eine alternative Methode: die Tokenisierung mit regulären Ausdrücken (Regex).
Regulärer Ausdruck (Regex) ist eine Zeichenfolge, die ein Suchmuster definiert. Reguläre Ausdrücke können für verschiedene Aufgaben der Textverarbeitung verwendet werden, einschließlich Suchen, Ersetzen und Aufteilen von Text basierend auf bestimmten Mustern.
Im Kontext der Tokenisierung ermöglichen reguläre Ausdrücke die Definition individueller Muster, die Token identifizieren können, und bieten somit 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 zerlegt. Diese Funktion ist besonders nützlich, wenn Text anhand von Mustern tokenisiert werden soll, die von den Standard-Tokenizern nicht gut verarbeitet werden.
Die wichtigsten Parameter von regexp_tokenize() sind die ersten beiden: text (der zu tokenisierende String) und pattern (das Muster des regulären Ausdrucks).
123456from 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)
Wie ersichtlich ist, ähnelt der Ablauf der Verwendung der Funktion word_tokenize(), jedoch können sich die Ergebnisse je nach Muster unterscheiden. In unserem Beispiel wird das Muster '\w+' verwendet, um Folgen von einem oder mehreren alphanumerischen Zeichen (Buchstaben und Zahlen) sowie Unterstrichen zu erfassen.
Dies führt zu einer Liste von Wörtern ohne Satzzeichen, was sich von word_tokenize() unterscheidet, da Letztere Satzzeichen typischerweise als eigene Tokens einbezieht.
Verwendung von RegexpTokenizer
Ein alternativer Ansatz für die individuelle Tokenisierung besteht in der Nutzung der Klasse RegexpTokenizer aus dem Modul tokenize von NLTK. Zunächst wird eine Instanz von RegexpTokenizer mit dem gewünschten regulären Ausdrucksmuster als Argument erstellt. Nachdem eine Instanz mit dem angegebenen Muster erzeugt wurde, kann der Text als Argument an die Methode tokenize() übergeben werden.
12345678from 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)
Dieses Vorgehen liefert die gleichen Ergebnisse und ist besonders vorteilhaft, wenn ein Tokenizer für verschiedene Texte benötigt wird, da der Tokenizer einmal erstellt und anschließend auf verschiedene Texte angewendet werden kann, ohne das Muster jedes Mal neu definieren zu müssen.
Im Folgenden ein weiteres Beispiel: Angenommen, es sollen nur Ziffern als Tokens extrahiert werden, dann sucht das Muster '\d+' nach einer oder mehreren Ziffern, wie im folgenden Beispiel:
1234567from 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)
Insgesamt ermöglicht die Regexp-Tokenisierung eine hochgradig angepasste Tokenisierung und ist daher ideal für die Verarbeitung komplexer Muster und spezifischer Tokenisierungsregeln, die mit Standardmethoden wie word_tokenize() nur schwer umzusetzen sind. In unserem Beispiel wäre word_tokenize() nicht geeignet, wenn wir Zahlen als Tokens verwenden möchten.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen