Özgür Işık Damar

Themenanalyse2026

ContextLens

Verfolgt, worum es im Gespräch geht – und kann „uncertain“ sagen, statt zu raten.

Open Source · Apache-2.0 · Modell v1.1.0

python project.py

Belege

Makro-F1 auf gesperrtem Wikipedia-Holdout
0,838
reports/locked/results.json
Median-Klassifikationslatenz, 4 vCPUs, ohne GPU
19,9 ms
reports/locked/results.json
Off-Topic-AUROC auf Assistenten-Chat
0,961
reports/locked/results.json
komplettes Modell auf Disk, Encoder inklusive
47 MB
README.md

Jede Zahl stammt aus einer Datei im Repository – der Pfad steht darunter.

Das Problem

Ein Softmax-Klassifikator liefert immer ein Thema: Auf „I'm going to order pizza tonight“ antwortet auch das Modell unter ContextLens mit Books, 53,0 %. Im Gespräch ist das schlimmer als Schweigen, denn ein verirrtes Label lenkt das Thema. Und ein Modell, das nur auf Lexikontext ausgewählt wurde, kann die Rangliste anführen und trotzdem an den kurzen Fragen scheitern, die Menschen tatsächlich tippen.

Der Ansatz

Keiner der neun geprüften Datensätze deckte die 8 × 28-Taxonomie ab, also entstand ein Korpus aus 40.112 englischen Wikipedia-Passagen, gelabelt über Wikipedias eigenen Kategoriengraphen. Ein feinabgestimmter MiniLM-Encoder speist einen einzigen temperaturskalierten Softmax über die 28 Unterthemen; ein Mahalanobis-Distanz-Gate, eine Konfidenzschwelle von 50 % und ein fastText-Sprachgate entscheiden, wann die Antwort „uncertain“ oder „not English“ lautet. Nur sichere Nachrichten fließen ins Gesprächsthema: Es klingt ab, verfällt nach vier Runden ohne sichere Nachricht und wechselt seinen Schwerpunkt nach zwei übereinstimmenden Nachrichten, wodurch ein echter Themenwechsel etwa 0,6 Runden später erkannt wird. Jede Entscheidung fiel auf Entwicklungsdaten, echte Stack-Exchange-Fragen eingeschlossen; die finalen Werte stammen aus einem gesperrten Holdout, bewertet erst nach dem Fingerabdruck der Konfiguration.

Was gebaut ist

  1. Vergibt an 78,1 % des themenfremden Assistenten-Chats kein Thema und erkennt 96,7 % nicht englischer Sätze
  2. Nicht nur nach Wikipedia gewählt: mpnet-base, dort gleichauf, ist 4,9-mal langsamer und bei Fragen schwächer
  3. Gesperrtes Holdout, bewertet nach SHA-256-Freeze; es lief zweimal, beide Läufe sind samt Grund öffentlich
  4. In simulierten Gesprächen kapert ein einzelner Abstecher das Thema nur noch zu 10,4 % statt zu 48,8 %

Architektur

ContextLens — Die Laufzeit laut Repo-Diagramm: Sprachgate, feinabgestimmtes MiniLM, 28-Wege-Softmax und Mahalanobis-Gate, dann abklingender Tracker, Themen-Composer und Suche ohne API-Schlüssel.
Die Laufzeit laut Repo-Diagramm: Sprachgate, feinabgestimmtes MiniLM, 28-Wege-Softmax und Mahalanobis-Gate, dann abklingender Tracker, Themen-Composer und Suche ohne API-Schlüssel.

Echter CLI-Lauf der README-Demo: Roman, wissenschaftliche Methode und Evolution erhalten je Ober-, Unterthema und Konfidenz und ergeben „science books about biology“ für die Suche.

1 / 4
// Build-NotizenDas gesperrte Holdout, das ich zweimal laufen lassen musste – und warum beide Läufe öffentlich sindMein gesperrtes Testset lief zweimal: Ein Feld hielt 1.151 Fragen aus der Hauptkennzahl heraus. Wie ich die Daten reparierte, das Modell als unverändert nachwies und beide Läufe veröffentlichte.Zu den Build-Notizen