Register → Blatt 04 / 04In Arbeit · M1 von M6
Quellenlage — Desinformation messen statt unterstellen.
- C#
- .NET 10
- Razor Pages
- EF Core
- PostgreSQL/SQLite
- Channels
- xUnit
- Docker
Ausgangslage
Wer koordinierte Desinformation bekämpfen will, greift schnell zu Werkzeugen, die etwas behaupten, was sie nicht wissen können — „das ist ein Bot“, „das ist KI-generiert“. Solche Urteile treffen regelmäßig die Falschen, zum Beispiel Menschen, die in einer Fremdsprache schreiben. Messbar ist dagegen, was tatsächlich in den Daten steht: wie ähnlich sich Texte sind, wie eng Beiträge zeitlich beieinanderliegen, welche Links geteilt werden, ob ein Bild eine gültige Herkunftssignatur trägt und ob es zu einer Behauptung bereits einen veröffentlichten Faktencheck gibt.
Lösung
Eine .NET-Web-Anwendung mit drei Modulen: A — Lagebild (Textähnlichkeit über SimHash, Kandidatenfilter über LSH, Ausbruchserkennung über Median und MAD, Cluster über Zusammenhangskomponenten), B — Herkunft (EXIF/XMP und C2PA-Signaturstatus, rein deterministisch), C — Behauptung (überprüfbare Aussagen und vorhandene Faktenchecks Dritter). Dazu sieben Regeln, die für jeden Commit gelten und den Zuschnitt erklären: keine Bot- oder KI-Behauptung, keine öffentliche Anschuldigung einzelner Konten (im Lagebild sind Konten per HMAC pseudonymisiert), kein Scraping gegen Plattform-AGB, rollierendes 7-Tage-Fenster mit Löschjob, Bilder nur im Arbeitsspeicher, jede Zahl aus einem reproduzierbaren Messlauf — fehlende Daten heißen „nicht feststellbar“, nie eine geschätzte Zahl. Technisch: framework-freie Domain ohne eine einzige NuGet-Abhängigkeit (ein Architekturtest hält das fest), Datenstrom als BackgroundService über System.Threading.Channels mit Backpressure und Wiederverbindung, EF Core mit SQLite lokal und PostgreSQL im Betrieb, Health-Check und Prometheus-Kennzahlen.
Meine Rolle
Eigenentwicklung von der Quellenrecherche bis zum Betrieb, testgetrieben. Schwellwerte werden gemessen, nicht geschätzt — die Ähnlichkeitsschwelle stammt aus einem Kalibrierungstest, nicht aus einer Annahme. Technische Entscheidungen samt Alternative und Begründung stehen im Repo, ebenso die Quellenrecherche mit Endpunkten, Bedingungen, Kontingenten und Datum — inklusive der Punkte, die sich nicht belegen ließen.
Ergebnis
Stand heute: Meilensteine M0 und M1 abgeschlossen. Der Rechenkern für Modul A steht mit 94 grünen Tests in der Domain — ohne eine einzige NuGet-Abhängigkeit. Die Ähnlichkeitsschwelle ist gemessen: wortgleiche Kopien liegen beim Hamming-Abstand 0 bis 10 (auch wenn Emoji, Links oder Breitzeichen als Umgehung eingestreut sind), eigenständige Formulierungen zum gleichen Thema beginnen bei 27 — die Schwelle steht mit Abstand zu beiden Seiten bei 12, und der Test schlägt fehl, sobald das nicht mehr gilt. Der LSH-Kandidatenfilter findet an dieser Schwelle 98,32 % der Paare und braucht dafür 7,6 % der Vergleiche, also Faktor 13,2 weniger Arbeit; die fehlenden 1,7 % sind ausgewiesen, statt „findet alle Kopien“ zu behaupten. Aktuell läuft M2 (Datenstrom, Speicherung, erstes Lagebild): die drei Seitentests für das Lagebild stehen bereits und sind rot — erst der Test, dann die Implementierung. Zahlen zu Durchsatz, Latenz und Speicherbedarf gibt es erst, wenn die Messläufe im Repo sie erzeugen.
Messwert 01 — Tests im Rechenkern
94 / 94
grün — die Domain kommt ohne eine einzige NuGet-Abhängigkeit aus, ein Architekturtest hält das fest
Messwert 02 — Kandidatenfilter (LSH)
98,32 %
gefundene Paare an der Ähnlichkeitsschwelle — mit 7,6 % der Vergleiche, also Faktor 13,2 weniger Arbeit
Fahrplan
Woran ich gerade arbeite. Modul-A-Rechenkern steht und ist gemessen; aktuell im Bau: Datenstrom, Speicherung und das erste Lagebild. Repository und Live-Demo folgen mit den nächsten Meilensteinen.
- M0Recherche, Repo-Gerüst, CI, Docker, Health-Check
- M1Modul-A-Rechenkern: Normalisierung, SimHash, Schwelle, LSH, Ausbruch, Cluster, Pseudonymisierung
- M2Datenstrom live, Speicherung, Löschjob, erstes Lagebild← hier stehe ich
- M3Modul B vollständig: EXIF, C2PA, Bericht
- M4Modul C vollständig: Extraktion, Faktencheck-Abgleich, Kostenzähler
- M5Betrieb: Messläufe, Kennzahlen, Deployment — danach Live-Demo
- M6Portfolio-Paket: Messprotokoll, Ethik-Dokument, Screenshots
Anlagen
A1 — Code
Das Repository ist noch nicht öffentlich: Es wird mit Meilenstein M2 veröffentlicht, sobald Datenstrom, Speicherung und das erste Lagebild laufen — die Live-Demo folgt mit M5. Zwischenstand, Code und Messläufe zeige ich gern im Gespräch.