leminkozey

Themistic / Eigenes NLP-Modell

Skira.

Sensible Angaben erkennen. Den Kontext erhalten.

Ich entwickle eigene NLP-Modelle für deutsche Texte. Skira 5 erkennt Namen, Kontaktdaten und Hinweise, die auch ohne Namen auf eine Person schließen lassen.

Selbst ausprobieren
Wie aus Valravn Skira wurdeDie ganze Geschichte. Generationen, Experimente und Messwerte.

Juni 2026

Am Anfang waren es
acht Milliarden.

Ich wollte ein Modell, das sensible Angaben in deutschen Texten erkennt. Nicht nur Namen und Mailadressen, sondern auch Beschreibungen, die eine Person indirekt identifizieren. Daraus wurde Valravn: ein auf Anonymisierung spezialisiertes 8B-Modell, das zunächst noch Corvus hieß.

Die Basis war Ministral 8B Instruct, in 4 Bit quantisiert und mit LoRA über MLX auf meinem Mac angepasst. Ich habe also ein vorhandenes Sprachmodell feintrainiert. Der Decoder las den Text und erzeugte eine JSON-Liste mit Fundstellen, Klassen und Ersatzwerten.

Valravn8 B

Ein Decoder erzeugt die Antwort
Token für Token.

Skira 5141 M

Ein Encoder ordnet die Stellen
direkt im Eingabetext ein.

Modellgröße, kein Geschwindigkeitsvergleich. Skira 5 hat exakt 140.651.161 Parameter, aus den gespeicherten Tensorformen gezählt.

Fortschritt war keine gerade Linie.

Auf meinem festen Testsatz mit 14 Dokumenten stieg der historische Span-F1 von 87,0 auf 93,2 %. Mit v5 kam der Name Valravn. Danach lag der Schwerpunkt zunehmend auf längeren Texten. Die Experimente bis v12 zeigten, wie wenig ein guter Wert auf kurzen Beispielen über dichte, lange Dokumente aussagt.

Valravn, die dokumentierten Messpunkte Historischer Span-F1 · 14 Dokumente · Skala 0–100 %

v6–v11 gehören zur Phase der Langtext-Experimente. Für sie und v13 liegt hier kein belastbarer Einzelwert vor. Die Lücken bleiben deshalb sichtbar.

21 % → 42 %

Die indirekten Hinweise wurden besser.

Zwischen v12 und v14 verdoppelte sich der QID-F1 im historischen Test. Der Gesamt-F1 sank zugleich leicht von 88,6 auf 88,2 %. Mehr als 3.300 neue gültige synthetische Dokumente halfen an einer konkreten Schwachstelle, machten aber nicht automatisch jede Klasse besser.

Valravn blieb vergleichsweise schwergewichtig. Auf dem damaligen Mac begrenzten Speicher und Trainingslänge die Versuche. Vor allem wollte ich präzise Textgrenzen, ohne für jede Erkennung erst eine freie Antwort generieren zu müssen. Am 21. Juli habe ich den Decoder-Zweig archiviert.

Juli bis August 2026

Weniger generieren.
Genauer hinsehen.

Mit den Encodern änderte sich die Aufgabe: Jedes Token bekommt eine Klasse. Wo beginnt ein Name? Wo endet eine Beschreibung? Frühe Encoder-Versuche liefen noch unter Valravn-Bezeichnungen, bevor daraus die Veyra-Reihe wurde. Es war ein Architekturwechsel, nicht einfach Valravn mit einer neuen Versionsnummer.

Eine der wichtigsten Lektionen kam aus den Daten. Wenn dieselbe Art von Beschreibung einmal mit und einmal ohne ihren einleitenden Artikel markiert wird, lernt das Modell widersprüchliche Grenzen. Bei frühen GBERT-Versuchen stieg der exakte QID-F1 mit vereinheitlichten Grenzen von 13 auf 49 %. Saubere Konventionen machten einen Unterschied, den mehr Trainingsläufe allein nicht lösten.

Veyra 1

Gewichte zweier Checkpoints kombiniert. WiSE-FT half, Verbesserungen mitzunehmen, ohne alles Vorherige aufzugeben.

79,58 % Makro-F1 · norm2

Veyra 1.1

Eine weitere Gewichtsmischung. Kleine Gewinne, während sich Fortschritte bei ORG und QID gegen Verluste anderer Klassen abwogen.

79,83 % Makro-F1 · norm2

Veyra 2

Die Gewichte von 1.1 blieben. Wortgrenzen, Organisationsnamen, Kennungen und ein konsistenter BIO-Decoder verbesserten die Auswertung.

84,49 % Makro-F1 · norm3

Veyra 2 heißt im damaligen Ergebnislog noch Veyra 1.2. Zugleich wurde die Referenz korrigiert: 84,49 % auf norm3, später 84,54 % auf norm4 ohne Modelländerung. Das ist kein isolierter Gewinn durch die Pipeline.

Das größere Modell gewann nicht die Entscheidung.

Im August verglich ich mehrere Encoder auf denselben 200 langen Texten. EuroBERT 610M hatte mit 91,87 % den höchsten Makro-F1 in dieser Auswahl. mmBERT-small lag mit 91,41 % nah daran und verarbeitete im gemessenen Setup 11,1 statt 1,6 Dokumente pro Sekunde. Diese Kombination wurde zur Grundlage von Skira.

EncoderMakro-F1Dokumente / s
mmBERT-small91,41 %11,1
EuroBERT 610M91,87 %1,6
GBERT-large91,74 %2,6
mmBERT-base90,92 %5,7

Historischer Vergleich vom 16. August: 200 lange Dokumente, Apple M4 / MPS, Batch 1, Kontext 2.048. Das ist keine aktuelle Geschwindigkeitsmessung von Skira 5.

August bis September 2026

Die Generationen hinter
dem Namen Skira.

  1. Skira 1

    pool_mix17

    Der kleine mmBERT-Encoder wurde mein neuer Ausgangspunkt. Ab jetzt ging es vor allem darum, die verbleibenden Fehler systematisch zu finden: ausgelassene Angaben, abgeschnittene Beschreibungen und uneinheitliche Klassen.

  2. Skira 2

    pool_mix18

    Mehr Arbeit an relativen Datumsangaben, Organisationsnamen und wiederholten Nennungen. Im gemeinsamen norm22-Vergleich sank die Zahl vollständig übersehener Goldstellen von 531 auf 270.

  3. Skira 3

    pool_mix22

    QID-Grenzen und weitere Annotationen wurden vereinheitlicht. Auf derselben norm22-Referenz blieben 233 vollständig übersehene Stellen. Gerade indirekte Hinweise brauchten vollständige Phrasen statt bloß einzelner Wörter.

  4. Skira 4

    4.000 Dokumente

    Skira 4 entstand aus den 4.000 Dokumenten. Die Arbeit davor umfasste mehrere Zwischenstände: bereinigte Generierungsreste, einheitliche Altersangaben und vollständigere QID-Grenzen. Die frühe pool23-Messung unten dokumentiert einen dieser Schritte, nicht das Ergebnis des späteren 4k-Stands.

Immer weniger ganz übersehen bench1878 norm22 · 1.878 Dokumente

Vollständig übersehene Goldstellen aus 62.023. Teilweise abgeschnittene Stellen sind hier nicht mitgezählt. Weniger ist besser.

Auch die Ränder zählen Skira 3 / früher Skira-4-Checkpoint · norm24

Offene Goldzeichen: 6.909 → 6.306, also 8,7 % weniger. Ganz übersehene Stellen: 233 → 222. Gleiche Referenz je Vergleich; O-Bias 3 und Kontext 2.048.

Dann wurde aus einer Reihe eine Verzweigung.

Die 4.000 Dokumente gehören zur Skira-4-Entwicklung. Auf diesem Datenpaket führten zwei Trainingsziele zu zwei Varianten: Skira 4.1 wurde auf exakte Klassifikation ausgerichtet. Skira 5 wurde direkt auf das möglichst vollständige Maskieren sensibler Angaben trainiert. Beide Zweige gehen auf die Skira-4-Arbeit zurück. Skira 5 ist keine Fortsetzung des 4.1-Checkpoints.

In beiden Läufen wurde der Checkpoint aus Epoche 1 von 2 gewählt, jeweils auf 2.799 Validierungsdokumenten und vor der Auswertung auf Test300. Bei 4.1 zählte der Mikro-F1, bei 5 die vollständige Dokumentabdeckung. Skira 5 wurde am 6. September veröffentlicht. Der F1-Zweig bekam am 7. September offiziell den Namen Skira 4.1, ohne dafür erneut trainiert zu werden.

Das Ergebnis ist kein pauschales „neuer ist besser“. Skira 5 lässt deutlich weniger sensible Angaben offen. Die Klassen und Grenzen seiner Fundstellen sind zugleich ungenauer. Genau diesen Unterschied will ich sichtbar machen. Die Skira-6-Preview setzt inzwischen hier an: bessere Label-Decodierung auf Skira-5-Gewichten, mit exakt erhaltener Maskierung. Die ersten Ergebnisse stehen am Ende dieser Seite.

Ein Satz sagt mehr als ein Versprechen.

Vergleiche Original und geschützten Text. „Ohne Namen“ zeigt, warum auch der Kontext eine Person beschreiben kann.

Skira 5Lokale Demo

Original

Geschützt

Eigene Texte sind verfügbar, wenn der lokale Modelldienst bereit ist.

Vier vorab berechnete Modell-Ausgaben.

  • Skira 5 · 06.09.2026
  • 12 Klassen für sensible Angaben
  • Vier echte Modell-Ausgaben

Gleiche Texte. Zwei unterschiedliche Stärken.

Skira 4.1 / Skira 5

300 Dokumente. 9.551 sensible Stellen.
Wie viel bleibt geschützt und wie genau stimmt die Klasse?

Der Preis
des Fangnetzes.

Skira 5 maskiert zusätzlich 58.355 Zeichen außerhalb der Goldmarkierungen, Skira 4.1 dagegen 2.998. Diese Mehrmarkierungen sind nicht automatisch echte Fehlalarme, denn auch eine Referenz kann Lücken haben. Sie zeigen aber den Umfang des zusätzlichen Eingriffs in den Text.

Eine Stelle kann vollständig geschützt sein und trotzdem eine falsche Klasse oder ungenaue Grenzen bekommen. Abdeckung und Label-F1 beantworten deshalb verschiedene Fragen.

Die zwölf Klassen im Detail

Exakte Klasse und exakte Textgrenzen. Jede Klasse wird separat ausgewertet.

Skira 4.1Skira 50–100 %
Wie ich die Werte vergleiche

Die Werte stammen aus der Auswertung vom 6. September 2026. Test300 ist eine bekannte Regression und kein neuer unabhängiger Holdout. Die Referenz enthält 300 Dokumente, 9.551 Goldstellen und 130.996 Goldzeichen. Kein Dokument ist vollständig frei von Goldmarkierungen.

  • Dokumentabdeckung: Alle markierten sensiblen Zeichen eines Dokuments sind geschützt, unabhängig vom Klassenlabel.
  • Exakter Label-F1: Ein Treffer braucht dieselbe Klasse und exakt dieselben Start- und Endpositionen. Der Makro-Wert gewichtet die zwölf Klassen gleich.
  • Skira 4.1: Viterbi, Grundkette und QID-Grenze bei O-Bias 0, Auswertungsstufe 4 für Klassen und Maskierung.
  • Skira 5: Klassen aus Stufe 10, Masken aus Stufe 12. Die feste Maskenpipeline ergänzt die Klassenfundstellen mit einer binären PII-Entscheidung bei Schwelle 0,5.

Auch die Pipeline gehört zum Messwert: Derselbe 4.1-Checkpoint erreicht mit der aggressiveren Stufe 10 bei Bias 4 eine Abdeckung von 279/300 Dokumenten und 91,99 % Makro-F1. Oben stehen die offiziellen Profile, keine isolierte Messung der Modellgewichte.

Historische Teststände bleiben getrennt. Der kleine Valravn-Test, die wechselnden Veyra-Referenzen, norm22, norm24 und Test300 bilden keine gemeinsame Fortschrittskurve.

Alle aggregierten Messwerte als JSON ↓Quellen und Rechenweg ↗

07. September 2026 · Preview in Entwicklung

Das Fangnetz bleibt.
Die Labels werden besser.

Skira 6

Meine Mission: Skira 5s Abdeckung behalten und an Skira 4.1s Label-Qualität herankommen. Die erste Preview macht einen messbaren Schritt dahin. Gewonnen hat das Decoderprofil von Skira 4.1 auf den unveränderten Gewichten von Skira 5. Kein neues Training, kein Transfer von 4.1s Gewichten.

Validation · 2.799 Dokumente72,79 83,76 %

Label-Makro-F1. Hier wurde das Profil ausgewählt.

Test300 · nach der Auswahl75,58 87,64 %

Label-Makro-F1. Mikro-F1: 77,37 → 89,44 %.

300 / 300

Exakt dieselbe Schwärzung.

Weiterhin 298 vollständig geschützte Dokumente und 42 offene Goldzeichen. Auch die 58.355 zusätzlich maskierten Nichtgoldzeichen bleiben erhalten. Das Fangnetz wurde weder kleiner noch größer.

Elf Klassen verbessern sich, PLZ bleibt gleich. Mit 87,64 % liegt der Label-Makro-F1 noch unter Skira 4.1s 96,17 %. Das Ziel bleibt, diese Lücke zu schließen und die Maskierung dabei exakt zu erhalten.

Alle Klassen: Skira 5 und Skira 6 Preview

Exakter Label-F1, Precision und Recall auf Test300. Die PII-Abdeckung bewertet vollständig geschützte Goldstellen unabhängig vom Label. Alle Werte in Prozent.

Was die Preview bereits belegt

Die Auswahl erfolgte auf der vollständigen Validation mit 2.799 Texten. Die Klassenbewertung nutzt dort 74.064 ursprüngliche Klassen-Spans. Der ältere Maskierungslauf zählt 69.690 zusammengeführte Maskierungsziele; diese Definitionen sind nicht austauschbar. Die tatsächlichen Masken sind im aktuellen Vergleich unverändert.

Danach wurde die separate Skira-6-Kopie auf den bekannten 300 Testtexten ausgewertet. Die Masken stimmen in allen 300 Dokumenten exakt mit Skira 5 überein. Der Paket-Loader reproduzierte außerdem alle 300 zuvor gemessenen Ausgaben. Test300 ist weiterhin eine bekannte Regression, kein neuer unabhängiger Holdout.

Die Preview ist hier als Entwicklungsstand dokumentiert. Die interaktive Demo auf dieser Seite verwendet weiterhin Skira 5. Skira 6s Auswahl, Messwerte und Maskenprüfung sind in den aggregierten Daten enthalten.

Messwerte herunterladen ↓
Meine Modelle auf Hugging Face