0.1.4. 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.
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.
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.
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.
0.1.5. Einbettungen macht aus jeder ID einen Vektor.