Zeichen-BPE-Tokenizer

Zeichenpaare lernen und ihre Wirkung auf Text, Token-IDs und Korpusgröße nachvollziehen.

Über dieses Tool

Dies ist ein Lehrmodell für Zeichen-BPE. Es lernt häufige benachbarte Paare aus Unicode-Codepunkt-Symbolen. Es ist weder ein GPT- noch ein Byte-Tokenizer; seine IDs haben in einem externen Sprachmodell keine Bedeutung.

Normalisierung. Wenn beim Training gewählt, erfolgt zuerst JavaScripts sprachunabhängige Umwandlung in Kleinschreibung. Führender und abschließender ECMAScript-Leerraum wird entfernt; jede übrige Leerraumfolge wird zu einem gewöhnlichen Leerzeichen. NFC oder NFKC werden nicht angewandt. Beim Kodieren gilt dieselbe trainierte Kleinschreibung. Jedes Wort, auch das erste, bekommt den Wortanfangsmarker ▁; dieser unterscheidet nicht zwischen erstem und späteren Wörtern. Ein wörtliches ▁ in der Eingabe und ungepaarte UTF-16-Surrogate sind unzulässig. NUL und andere Steuerzeichen sind erlaubt und erscheinen als Escapes wie \u0000. Sichtbare Unicode-Zeichen bleiben sichtbar.

Roher und normalisierter Korpus sind jeweils auf 40.000 Codepunkte begrenzt; der zu kodierende Text auf 4.000. Kleinschreibung kann die Codepunktzahl erhöhen, deshalb werden beide Grenzen geprüft. Es wird nichts still abgeschnitten. Das Training benötigt einen nach Normalisierung nichtleeren Text. Eine leere Kodierung ist gültig und hat null Tokens; ihr Verhältnis Codepunkte je Token ist undefiniert. Die Text-Codepunktzahl zählt normalisierte einzelne Leerzeichen mit, nicht aber die hinzugefügten Wortanfangsmarker. Marker zählen dagegen als Tokensymbole.

Training. Das Basisalphabet ist nach Unicode-Codepunktwerten sortiert. In jeder Runde zählen alle benachbarten Paarpositionen zur Häufigkeit, einschließlich Überlappungen und wiederholter Wörter. Ein Paar braucht mindestens Häufigkeit zwei. Gleichstände werden zuerst nach dem ersten, dann dem zweiten Token in Codepunktreihenfolge aufgelöst, nicht nach Sprachsortierung oder UTF-16-Reihenfolge. Alle Vorkommen des gewählten Paares werden von links nach rechts ohne Überlappung ersetzt. aaaa enthält daher drei Positionen für a+a, aber nur zwei tatsächliche Ersetzungen. Tabelle und ausgewählter Punkt unterscheiden Paarhäufigkeit und Ersetzungen und zeigen die Korpustokenzahl nach dem Merge.

IDs beginnen bei null und gehören zu eindeutigen Tokenstrings. Ein Merge ergänzt das Vokabular nur bei einem neuen Ergebnisstring; andernfalls verwendet er dessen vorhandene ID. Das angezeigte Gesamtvokabular enthält alle gelernten Merges, auch wenn nur ein Präfix aktiv ist. Dieses reicht von null bis zu allen gelernten Merges. Der Graph zeigt nach Worthäufigkeit gewichtete Korpustokenzahlen, keine Bytes und keine Kompressionsquote.

Kodieren und IDs. Kodieren wendet die gewählten gelernten Ränge ausdrücklich an: Der kleinste verfügbare Rang gewinnt, bei gleichem Rang das linke Paar. Eine Präfixänderung aktualisiert einen bereits kodierten, unveränderten Text ohne neues Training. Unbekannte Codepunkte bleiben als Tokens ohne ID sichtbar. Sobald welche vorkommen, ist das Kopieren von IDs deaktiviert; es gibt keine ID −1 und keinen Byte-Fallback. Bekannte IDs lassen sich zum normalisierten Text dekodieren, nicht zum ursprünglichen Leerraum oder zur ursprünglichen Großschreibung. Je Seite sind höchstens 100 Tokens mit auch ohne Mauszeiger sichtbaren IDs zu sehen.

Änderungen am Korpus, Merge-Limit oder an der Kleinschreibung verwerfen das alte Modell. Training läuft in kleinen Portionen und lässt sich abbrechen; Bearbeiten, Zurücksetzen, unsichtbare Seiten und Navigation entwerten einen laufenden Auftrag. Zurücksetzen behält die Eingaben.

Konzeptionelle Quellen: Sennrich, Haddow und Birch (2016) zur BPE-Segmentierung sowie die SentencePiece-Normalisierungsdokumentation. Normalisierung, explizite Wortpräfixe, Mindesthäufigkeit und Gleichstandsregel sind die hier festgelegten Konventionen; das Werkzeug bildet keine der beiden Implementierungen vollständig nach.

Nur Eingabewerte bleiben in diesem Browser erhalten. Berechnete Ergebnisse und Versuchsverläufe werden nicht gespeichert.