Tokenisierung in der Verarbeitung natürlicher Sprache

Veröffentlicht: 2020-12-01

Beim Umgang mit Textdaten besteht der grundlegendste Schritt darin, den Text zu tokenisieren. „Token“ können als einzelne Wörter, Sätze oder jede Mindesteinheit betrachtet werden. Daher ist das Aufteilen der Sätze in separate Einheiten nichts anderes als Tokenisierung.

Am Ende dieses Tutorials verfügen Sie über folgende Kenntnisse:

  • Was ist Tokenisierung
  • Verschiedene Arten von Tokenisierungen
  • Verschiedene Möglichkeiten zur Tokenisierung

Die Tokenisierung ist der grundlegendste Schritt in einer NLP-Pipeline.

Aber warum ist das so?

Diese Wörter oder Tokens werden später in numerische Werte umgewandelt, damit der Computer sie verstehen und einen Sinn daraus machen kann. Diese Token werden bereinigt, vorverarbeitet und dann durch die Methoden der „Vektorisierung“ in Zahlenwerte umgewandelt. Diese Vektoren können dann den Algorithmen des maschinellen Lernens und den neuronalen Netzen zugeführt werden.

Die Tokenisierung kann nicht nur auf Wortebene, sondern auch auf Satzebene erfolgen. Das heißt, Text kann entweder mit Wörtern als Token oder mit Sätzen als Token tokenisiert werden. Lassen Sie uns einige Möglichkeiten zur Tokenisierung besprechen.

Inhaltsverzeichnis

Python-Split()

Die Funktion split() von Python gibt die Liste der Token zurück, die durch das erwähnte Zeichen geteilt wurde. Standardmäßig werden die Wörter durch Leerzeichen getrennt.

Wort-Tokenisierung

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist bei NLP-Aufgaben unerlässlich.“
Token = Mystr.split()

#Ausgabe:
>> [ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial.' , 'Wir' , 'sind' , 'Lernen' , 'anders' , 'Tokenisierung' , 'Methoden' , 'und' , 'Wege?' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , 'NLP' , 'Aufgaben'. ]

Satz-Tokenisierung

Derselbe Text kann in Sätze aufgeteilt werden, indem das Trennzeichen als „.“ übergeben wird.

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist bei NLP-Aufgaben unerlässlich.“

Token = Mystr.split( “.” )

#Ausgabe:
>> [ 'Dies ist ein Tokenisierungs-Tutorial' , 'Wir lernen verschiedene Tokenisierungsmethoden und Wege? Tokenisierung ist bei NLP-Aufgaben unerlässlich' , ]

Obwohl dies unkompliziert und einfach erscheint, hat es viele Mängel. Und wenn Sie es bemerken, wird es nach dem letzten „.“ geteilt. auch. Und es berücksichtigt nicht das "?" als Indikator für den nächsten Satz, da er nur ein Zeichen benötigt, nämlich ".".

Textdaten in realen Lebensszenarien sind sehr schmutzig und nicht schön in Wörter und Sätze gefasst. Möglicherweise ist viel Mülltext vorhanden, was es für Sie sehr schwierig macht, auf diese Weise zu tokenisieren. Lassen Sie uns daher zu besseren und optimierteren Wegen der Tokenisierung übergehen.

Unbedingt lesen: Top 10 Deep-Learning-Techniken, die Sie kennen sollten

Regulären Ausdruck

Regulärer Ausdruck (RegEx) ist eine Folge von Zeichen, die zum Abgleich mit einem Zeichenmuster verwendet werden. Wir verwenden RegEx, um bestimmte Muster, Wörter oder Zeichen zu finden, um sie zu ersetzen oder andere Operationen mit ihnen durchzuführen. Python hat das Modul re , das für die Arbeit mit RegEx verwendet wird. Mal sehen, wie wir den Text mit re tokenisieren können .

Wort-Tokenisierung

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“

Token = re.findall( “[\w']+” , Mystr)

#Ausgabe:
>> [ 'Das' , 'ist' , 'ein' , 'Tokenisierung' , 'Tutorial' , 'Wir' , 'sind' , 'Lernen' , 'anders' , 'Tokenisierung' , 'Methoden' , 'und' , 'Wege' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , 'NLP' , 'Aufgaben' ]

Also, was ist hier passiert?

Die Funktion re.findall() vergleicht alle Sequenzen, die damit übereinstimmen, und speichert sie in einer Liste. Der Ausdruck „[\w]+“ bedeutet, dass beliebige Zeichen – seien es Buchstaben oder Zahlen oder Unterstrich („_“). Das „+“-Symbol bedeutet alle Vorkommen des Musters. Im Wesentlichen scannt es alle Zeichen und fügt sie als ein Token in die Liste ein, wenn es auf ein Leerzeichen oder ein anderes Sonderzeichen außer einem Unterstrich trifft.

Bitte beachten Sie, dass das Wort „NLPs“ ein einzelnes Wort ist, aber unser Regex-Ausdruck hat es aufgrund des Apostrophs in „NLP“ und „s“ aufgeteilt.

Satz-Tokenisierung

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“

Token = re.compile( '[.!?] ' ).split(Mystr)

#Ausgabe:
>> [ 'Dies ist ein Tutorial zur Tokenisierung' , 'Wir lernen verschiedene Methoden und Wege zur Tokenisierung' , 'Tokenisierung ist für NLP-Aufgaben unerlässlich.' ]

Hier haben wir nun mehrere Teilungszeichen zu einer Bedingung kombiniert und die Funktion re.split aufgerufen. Wenn es also auf eines dieser 3 Zeichen trifft, wird es als separater Satz behandelt. Dies ist ein Vorteil von RegEx gegenüber der Python-Split-Funktion, bei der Sie nicht mehrere Zeichen zum Teilen übergeben können.

Lesen Sie auch: Anwendungen der Verarbeitung natürlicher Sprache

NLTK-Tokenizer

Natural Language Toolkit (NLTK) ist eine Python-Bibliothek speziell für die Bearbeitung von NLP-Aufgaben. NLTK besteht aus integrierten Funktionen und Modulen, die für einige spezifische Prozesse der gesamten NLP-Pipeline erstellt wurden. Schauen wir uns an, wie NLTK mit der Tokenisierung umgeht.

Wort-Tokenisierung

NLTK hat ein separates Modul, NLTK.tokenize, um Tokenisierungsaufgaben zu erledigen. Für die Tokenisierung von Wörtern ist eine der Methoden, aus denen sie besteht, word_tokenize.

aus nltk.tokenize import word_tokenize

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“
word_tokenize(Mystr)

#Ausgabe:
>>[ 'This' , 'is' , 'a' , 'tokenization' , 'tutorial' , '.' , 'Wir' , 'sind' , 'lernen' , 'anders' , 'Tokenisierung' , 'Methoden' , ',' , 'und' , 'Wege' , '?' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , 'NLP' , 'Aufgaben' , '.' ]

Bitte beachten Sie, dass word_tokenize die Satzzeichen als separate Token betrachtet. Um dies zu verhindern, müssen wir alle Satzzeichen und Sonderzeichen vor diesem Schritt selbst entfernen.

Satz-Tokenisierung

aus nltk.tokenize import sent_tokenize

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“
sent_tokenize(Mystr)

#Ausgabe:
>> [ 'Dies ist ein Tokenisierungs-Tutorial.' , 'Wir lernen verschiedene Tokenisierungsmethoden und Wege?' , 'Tokenisierung ist bei NLP-Aufgaben unerlässlich.' ]

SpaCy-Tokenizer

SpaCy ist wahrscheinlich eine der fortschrittlichsten Bibliotheken für NLP-Aufgaben. Es besteht aus der Unterstützung für fast 50 Sprachen. Daher ist der erste Schritt, den Kern für die englische Sprache herunterzuladen. Als nächstes müssen wir das englische Modul importieren, das den Tokenizer, Tagger, Parser, NER und Wortvektoren lädt.

Wort-Tokenisierung

von spacy.lang.en Englisch importieren

nlp = Englisch()
Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“
my_doc = nlp(Mystr)

Token = []
für Token in my_doc:
Tokens.append(token.text)
Token

#Ausgabe:
>> [ 'Dies' , 'ist' , 'ein' , 'Tokenisierung' , 'Tutorial' , '.' , 'Wir' , 'sind' , 'lernen' , 'anders' , 'Tokenisierung' , 'Methoden' , ',' , 'und' , 'Wege' , '?' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , 'NLP' , "'s" , 'tasks' , '.' ]

Wenn wir hier die Funktion nlp mit übergebenem MyStr aufrufen, erstellt sie die Wort-Tokens dafür. Dann indizieren wir sie und speichern sie in einer separaten Liste.

Satz-Tokenisierung

von spacy.lang.en Englisch importieren

nlp = Englisch()
sent_tokenizer = nlp.create_pipe( 'sentencizer' )
nlp.add_pipe(sent_tokenizer)

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“

my_doc = nlp(Mystr)

Gesendet = []
für eingesendete Dokumente :
Gesendet.anhängen (gesendeter Text)
Sendet

#Ausgabe:
>> [ 'Dies ist ein Tokenisierungs-Tutorial.' , 'Wir lernen verschiedene Tokenisierungsmethoden und Wege?' , „Tokenisierung ist für die Aufgaben von NLP von wesentlicher Bedeutung.“ ]

Rufen Sie für die Satz-Tokenisierung die Methode creat_pipe auf, um die Sentencizer-Komponente zu erstellen, die Satz-Tokens erstellt. Anschließend fügen wir die Pipeline dem nlp-Objekt hinzu. Wenn wir die Textzeichenfolge an das nlp-Objekt übergeben, erstellt es diesmal Satz-Tokens dafür. Jetzt können sie auf die gleiche Weise wie im vorherigen Beispiel zu einer Liste hinzugefügt werden.

Keras-Tokenisierung

Keras ist derzeit eines der am meisten bevorzugten Deep-Learning-Frameworks. Keras bietet auch eine eigene Klasse für Textverarbeitungsaufgaben an – keras.preprocessing.text. Diese Klasse hat die Funktion text_to_word_sequence , die Token auf Wortebene aus dem Text erstellt. Lassen Sie uns einen kurzen Blick darauf werfen.

aus keras.preprocessing.text import text_to_word_sequence

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“
Token = text_to_word_sequence(Mystr)
Token

#Ausgabe:
>> [ 'dies' , 'ist' , 'ein' , 'tokenisierung' , 'tutorial' , 'wir' , 'sind' , 'lernen' , 'anders' , 'tokenisierung' , 'methoden' , 'und' , 'Wege' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , "nlp's" , 'Aufgaben' ]

Bitte beachten Sie, dass das Wort „NLPs“ als einzelnes Zeichen behandelt wird. Außerdem hat dieser Keras-Tokenizer alle Token kleingeschrieben, was ein zusätzlicher Bonus ist.

Gensim-Tokenizer

Gensim ist eine weitere beliebte Bibliothek zur Bearbeitung von NLP-basierten Aufgaben und Themenmodellierung. Die Klasse gensim.utils bietet eine Methode tokenize, die für unsere Tokenisierungsaufgaben verwendet werden kann.

Wort-Tokenisierung

aus gensim.utils import tokenize
Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“

list(tokenize(Mystr))

#Ausgabe:
>> [ 'Das' , 'ist' , 'ein' , 'Tokenisierung' , 'Tutorial' , 'Wir' , 'sind' , 'Lernen' , 'anders' , 'Tokenisierung' , 'Methoden' , 'und' , 'Wege' , 'Tokenisierung' , 'ist' , 'wesentlich' , 'in' , 'NLP' , 's' , 'Aufgaben' ]

Satz-Tokenisierung

Für die Tokenisierung von Sätzen verwenden wir die Methode split_sentences aus der Klasse gensim.summarization.textcleaner .

aus gensim.summarization.textcleaner import split_sentences

Mystr = „Dies ist ein Tokenisierungs-Tutorial. Wir lernen verschiedene Tokenisierungsmethoden und Wege? Die Tokenisierung ist für die Aufgaben von NLP unerlässlich.“

Token = split_sentences( Mystr )
Token

#Ausgabe:
>> [ 'Dies ist ein Tokenisierungs-Tutorial.' , 'Wir lernen verschiedene Tokenisierungsmethoden und Wege?' , „Tokenisierung ist für die Aufgaben von NLP von wesentlicher Bedeutung.“ ]

Bevor du gehst

In diesem Tutorial haben wir verschiedene Möglichkeiten besprochen, Ihre Textdaten basierend auf Anwendungen zu tokenisieren. Dies ist ein wesentlicher Schritt der NLP-Pipeline, aber es ist notwendig, die Daten zu bereinigen, bevor mit der Tokenisierung fortgefahren wird.

Wenn Sie mehr über maschinelles Lernen und KI erfahren möchten, sehen Sie sich das PG-Diplom in maschinellem Lernen und KI von IIIT-B & upGrad an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben bietet. IIIT-B Alumni-Status, mehr als 5 praktische Schlusssteinprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Führen Sie die KI-gesteuerte technologische Revolution an

PG DIPLOM IN MASCHINELLEM LERNEN UND KÜNSTLICHER INTELLIGENZ
Erfahren Sie mehr