Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

0.1.4. Token

Token

Das Netz sieht keine Zeichenkette, sondern eine Folge kleiner Ganzzahlen. Das Paket token erzeugt diese Folge. Es legt keine Parameter an und baut keinen Rechengraphen.

Korpus

token.Ensure lädt die Namensliste nach input.txt, wenn die Datei fehlt, und lässt eine vorhandene Datei stehen. token.Documents liest die Datei und behält jede nicht leere, von Leerzeichen befreite Zeile. Eine solche Zeile ist ein Dokument: im Referenzlauf ein Vorname.

Vokabular

token.Build sammelt die Zeichen aller Dokumente, sortiert sie und gibt ihnen die IDs 0 bis U-1. Ein Zeichen ist ein Unicode-Codepunkt. Danach kommt eine zusätzliche ID:

BOS = U
Vokabulargröße = U + 1

Dieselbe Datei ergibt deshalb immer dieselben IDs. BOS ist kein Zeichen. Es öffnet jedes Dokument und beendet eine Stichprobe. Es gibt keine ID für ein unbekanntes Zeichen: Encode meldet einen Fehler, wenn ein Zeichen fehlt.

Im Referenzlauf sind die Zeichen a bis z. Dann ist a die ID 0, n die ID 13, BOS die ID 26, und die Vokabulargröße ist 27. Eine andere Datei, etwa names.txt mit ä, ö und ü, bekommt andere IDs.

Ein Dokument

Für die Zeichen c0 … c_{m-1} ist

[BOS, id(c0), …, id(c_{m-1}), BOS]

Die Länge ist m + 2. Die feste Zeichenfolge ana wird im Referenzlauf zu fünf IDs, [26 0 13 0 26], gelesen BOS a n a BOS. Label schreibt eine ID zurück als BOS oder als Zeichen.

Wie viele Positionen das Netz davon benutzt, steht unter Vorwärtspass: höchstens das Kontextfenster, und nie eine Vorhersage hinter dem letzten BOS.

Weiter

0.1.5. Einbettungen macht aus jeder ID einen Vektor.