Was ist Tokenisierung?
Tokenisierung (englisch tokenization) heißt, einen Text in kleine Stücke zu zerlegen, die ein Programm zählen und vergleichen kann. Ohne diesen Schritt wertet kein Programm Sprache aus, weder eine Suchmaschine noch ein Spamfilter noch ein Sprachmodell.
Die Mensa einer Hochschule sammelt 2 000 Rückmeldungen. Niemand liest sie alle. Ein Programm kann sie zählen, sobald es weiß, was ein Wort ist.
Am Ende dieser Lektion
Notiz
Ich kann einen Text in Tokens zerlegen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Token | ein Stück Text, mit dem ein Programm arbeitet | mensa |
| Tokenisierung | das Zerlegen eines Textes in Tokens | |
| Normalisierung | Text auf eine einheitliche Form bringen | |
| Vokabular | die Liste der verschiedenen Tokens eines Textes | |
| Stoppwort | ein sehr häufiges Wort mit wenig Inhalt | die |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Token ist ein Stück Text
Ein Programm sieht einen Text zuerst als eine lange Zeichenkette. Es muss ihn zerlegen, bevor es zählen kann. Die Stücke heißen Tokens.
Meist ist ein Token ein Wort. Es kann aber auch ein einzelnes Zeichen oder ein Wortteil sein. Die einfachste Zerlegung trennt an jedem Leerzeichen.
Einen Satz am Leerzeichen trennen
satz = "Die Mensa öffnet um elf Uhr."
tokens = satz.split()
print(tokens)
print(len(tokens), "Tokens")
# Ändern Sie den Satz. Was passiert mit dem Punkt?
Dasselbe im Terminal des Labs
docker exec jupyter python3 -c "print('Die Mensa oeffnet um elf Uhr.'.split())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Satzzeichen und Großbuchstaben stören beim Zählen
Der Befehl zeigt eine Liste mit sechs Tokens. Das letzte heißt Uhr. mit Punkt, und das erste beginnt mit einem großen D. Für ein Programm sind Uhr. und Uhr zwei verschiedene Tokens.
Deshalb bringt man Text vor dem Zählen in eine einheitliche Form. Das heißt Normalisierung: alles klein schreiben und die Satzzeichen entfernen.
Beispiel: vom Rohtext zu den Tokens
| Schritt | Ergebnis |
|---|---|
| Rohtext | Die Mensa öffnet um elf Uhr. Die Mensa schließt um 14 Uhr. |
| Klein geschrieben | die mensa öffnet um elf uhr. die mensa schließt um 14 uhr. |
| Satzzeichen entfernt | die mensa öffnet um elf uhr die mensa schließt um 14 uhr |
| Am Leerzeichen getrennt | 12 Tokens: die, mensa, öffnet, um, elf, uhr, die, mensa, schließt, um, 14, uhr |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Text bereinigen und Tokens zählen
text = "Die Mensa öffnet um elf Uhr. Die Mensa schließt um 14 Uhr."
text = text.lower()
for zeichen in ".,;:!?":
text = text.replace(zeichen, "")
tokens = text.split()
print(tokens)
print(len(tokens), "Tokens")
# Fügen Sie ein Komma in den Text ein. Wird es entfernt?
Bereinigen in einer Zeile
docker exec jupyter python3 -c "t='Die Mensa oeffnet um elf Uhr. Die Mensa schliesst um 14 Uhr.'; print(t.lower().replace('.', '').replace(',', '').split())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, ein Token sei immer ein ganzes Wort. Das gilt nur für die einfache Zerlegung am Leerzeichen. Große Sprachmodelle zerlegen seltene Wörter in Teile. Was ein Token ist, bestimmt also das Verfahren.
Das Vokabular zählt die verschiedenen Tokens
Ein Text hat oft viele Tokens, aber weniger verschiedene. Die Liste der verschiedenen Tokens heißt Vokabular. Im Beispiel von oben hat der Text 12 Tokens und 8 verschiedene.
Sehr häufige Wörter wie „die“ oder „und“ sagen wenig über ein Thema. Man nennt sie Stoppwörter und lässt sie oft weg.
Das Vokabular eines Textes aufbauen
tokens = "die mensa öffnet um elf uhr die mensa schließt um 14 uhr".split()
vokabular = []
for token in tokens:
if token not in vokabular:
vokabular.append(token)
print(vokabular)
print(len(tokens), "Tokens,", len(vokabular), "verschiedene")
# Wie groß ist das Vokabular, wenn Sie "die" überall weglassen?
Drei Wege, Text zu zerlegen
| Art | Tokens für „Semesterticket“ | Eigenschaft |
|---|---|---|
| Zeichen | S, e, m, e, s, t, e, r, t, i, c, k, e, t | sehr kleines Vokabular, sehr lange Listen |
| Wort | Semesterticket | kurze Listen, aber jedes neue Wort ist unbekannt |
| Wortteil | Semester, ticket (ein mögliches Ergebnis) | ein Mittelweg, den große Modelle nutzen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Tokens und verschiedene Tokens zählen
docker exec jupyter python3 -c "t='die mensa oeffnet um elf uhr die mensa schliesst um 14 uhr'.split(); print(len(t), len(set(t)))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.