Ein Mini-Projekt für den Unterricht: Ein einfacher Tokenizer zerlegt einen eingegebenen Text in Tokens (Wörter und Satzzeichen) und zählt sie.
Optional wird eine sehr grobe Kostenschätzung gezeigt, wie man (bei API-Anbietern) nach Tokens abrechnen könnte.
Repo-Idee: „Teilt einen String in Tokens“ – perfekt als Einstieg in Tokenisierung, LLMs und Textverarbeitung.
Ein Token ist ein Textbaustein, mit dem Sprachmodelle arbeiten.
Das kann ein Wort, ein Wortteil, ein Satzzeichen oder ein Leerzeichen sein (je nach Tokenizer).
In diesem Projekt vereinfachen wir:
- Wörter/Zahlen bleiben zusammen
- Satzzeichen wie
. , ! ?werden eigene Tokens
Tokanizer.java– Konsolenprogramm:- liest einen Text ein
- zerlegt ihn in Tokens
- gibt die Tokens nummeriert aus
- berechnet eine grobe Kosten-Schätzung anhand der Token-Anzahl
- In den Projektordner wechseln
- Kompilieren:
javac Tokanizer.java
- Starten:
java Tokanizer
- Datei
Tokanizer.javaöffnen - Run starten (Main-Methode)
Eingabe:
Hallo Welt! KI ist cool, oder?
Ausgabe (Beispiel):
0: [Hallo]
1: [Welt]
2: [!]
3: [KI]
4: [ist]
5: [cool]
6: [,]
7: [oder]
8: [?]
Im Code steht:
tokens = text.split("\s+|(?=[.,!?])|(?<=[.,!?])");Das ist ein Regex-Split:
\s+→ trennt an einem oder mehreren Leerzeichen(?=[.,!?])→ trennt vor Satzzeichen (Lookahead)(?<=[.,!?])→ trennt nach Satzzeichen (Lookbehind)
Dadurch bleiben Satzzeichen als eigenes Token erhalten.
Im Projekt wird eine Beispielrechnung gemacht:
doublekostenPrompt = tokens.length * 0.000002;
System.out.println("Der Prompt kostet " + kostenPrompt/100 + " Cent.");- Preise unterscheiden sich stark je nach Anbieter/Modell (Input/Output oft unterschiedlich).
- Die Umrechnung in Cent ist hier nicht korrekt, wenn
0.000002als Euro pro Token gemeint ist.
Korrekte Umrechnung (wenn Preis in Euro/Token):
doubleeuro = tokens.length * 0.000002;
doublecent = euro * 100;
System.out.println("Der Prompt kostet " + cent + " Cent.");- Gib nach der Tokenliste zusätzlich nur die Anzahl der Tokens aus.
- Mache alle Tokens klein (
toLowerCase()), bevor du ausgibst.
- Erweitere die Satzzeichen-Liste:
: ; ( ) " ' - - Entferne leere Tokens (falls welche entstehen) mit einer
if-Abfrage.
- Zähle Häufigkeiten: Welches Token kommt am häufigsten vor?
- Gib die Top 5 Tokens aus.
- Unterscheide Input-Tokens (Prompt) und Output-Tokens (Antwort) und berechne beide Kosten.
- Regex falsch escaped: In Java braucht
\s+zwei Backslashes. - Leere Tokens: Bei ungünstigen Trennungen können
""entstehen → perifabfangen. - Preis/Einheit: Euro vs. Cent → immer sauber umrechnen.
Dieses Repo ist als Lernprojekt gedacht. Nutze und erweitere es gern im Unterricht.