Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Java_Tokanizer

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.


Was ist ein Token?

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

Inhalt des Repos

  • 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

So startest du das Programm

Variante A: Mit Terminal (javac/java)

  1. In den Projektordner wechseln
  2. Kompilieren:
    javac Tokanizer.java
  3. Starten:
    java Tokanizer

Variante B: In VS Code / IntelliJ

  • Datei Tokanizer.java öffnen
  • Run starten (Main-Methode)

Beispiel

Eingabe:

Hallo Welt! KI ist cool, oder?

Ausgabe (Beispiel):

0: [Hallo]
1: [Welt]
2: [!]
3: [KI]
4: [ist]
5: [cool]
6: [,]
7: [oder]
8: [?]

Wie funktioniert die Tokenisierung?

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.


Hinweis zur Kostenschätzung (didaktisch!)

Im Projekt wird eine Beispielrechnung gemacht:

doublekostenPrompt = tokens.length * 0.000002;
System.out.println("Der Prompt kostet " + kostenPrompt/100 + " Cent.");

Wichtig

  • Preise unterscheiden sich stark je nach Anbieter/Modell (Input/Output oft unterschiedlich).
  • Die Umrechnung in Cent ist hier nicht korrekt, wenn 0.000002 als 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.");

Schüler-Aufgaben

Level 1 (sehr leicht)

  • Gib nach der Tokenliste zusätzlich nur die Anzahl der Tokens aus.
  • Mache alle Tokens klein (toLowerCase()), bevor du ausgibst.

Level 2 (mittel)

  • Erweitere die Satzzeichen-Liste: : ; ( ) " ' -
  • Entferne leere Tokens (falls welche entstehen) mit einer if-Abfrage.

Level 3 (statistischer / LLM-näher)

  • 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.

Häufige Fehler

  • Regex falsch escaped: In Java braucht \s+ zwei Backslashes.
  • Leere Tokens: Bei ungünstigen Trennungen können "" entstehen → per if abfangen.
  • Preis/Einheit: Euro vs. Cent → immer sauber umrechnen.

Lizenz / Nutzung

Dieses Repo ist als Lernprojekt gedacht. Nutze und erweitere es gern im Unterricht.

About

Teilt einen String in Tokens

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages