🧪 Diese Plattform befindet sich in der Beta-Phase. Funktionen können sich ändern und es können Fehler auftreten. Danke für dein Feedback!
Systemdesign, Datenpipeline und Implementierungsdetails.
┌──────────────────────────────────────────────────────────────┐ │ TellDear Architecture │ ├──────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ ┌──────────────┐ ┌───────────────────┐ │ │ │ Browser │───▶│ PHP Router │───▶│ Page Controllers │ │ │ │ (UI) │◀───│ (Clean URL) │◀───│ (index, aspect, │ │ │ └─────────┘ └──────────────┘ │ analyze, graph) │ │ │ │ └────────┬──────────┘ │ │ │ │ │ │ │ ┌─────────────────────────────┤ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────┐ ┌──────────────┐ ┌───────────────────────┐ │ │ │ JSON │ │ Taxonomy │ │ Graph Renderer │ │ │ │ API │ │ Parser │ │ (D3.js compatible) │ │ │ └────┬────┘ └──────┬───────┘ └───────────────────────┘ │ │ │ │ │ │ │ ▼ │ │ │ ┌───────────────────────┐ │ │ │ │ Data Layer │ │ │ │ │ ┌─────────────────┐ │ │ │ │ │ │taxonomy_init.json│ │ Nodes, Edges, Classes │ │ │ │ ├─────────────────┤ │ │ │ │ │ │ aid_lf.json │ │ Verification Steps │ │ │ │ ├─────────────────┤ │ │ │ │ │ │ ontology.pro │ │ Prolog Knowledge Base │ │ │ │ └─────────────────┘ │ │ │ │ └───────────────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────────────────────────┐ │ │ │ Analyzer Engine │ │ │ │ ┌──────────┐ ┌────────────────┐ │ │ │ │ │ Heuristic│ │ Claude API │ │ │ │ │ │ (client) │ │ (server-side) │ │ │ │ │ └──────────┘ └────────────────┘ │ │ │ └──────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────┘
Der primäre Datenspeicher mit allen Graph-Knoten und -Kanten. Jeder Knoten hat:
{
"id": "confirmation_bias", // eindeutiger Bezeichner (snake_case)
"label": "Confirmation Bias", // lesbarer Name
"class": "bias", // Knotentyp (bestimmt die Dimension)
"description": "The tendency...", // Definition
"fol_pattern": "..." // optionale Formel in Prädikatenlogik erster Stufe
}
Das Atomic Instruction Dataset mit binären Verifikationsschritten für jeden Aspekt:
{
"id": "ad_hominem",
"name": "Ad Hominem",
"dimension": "d1_logical_fallacies",
"category": "informal_fallacies",
"verification_steps": [
{"step": 1, "question": "Does the argument attack a person...?", "type": "binary"},
{"step": 2, "question": "Is the personal attribute relevant...?", "type": "binary"},
{"step": 3, "question": "Does it conclude the claim is false...?", "type": "binary"}
],
"fol_pattern": "∀x(Person(x) ∧ HasFlaw(x) ⇒ Invalid(Claim(x)))",
"smt_expected": "standoff"
}
Eine parallele Darstellung in Prolog für symbolisches Schlussfolgern. Enthält dieselben taxonomischen Beziehungen wie die JSON-Daten, aber in einer für logische Programmierabfragen geeigneten Form. Kann mit SWI-Prolog für Inferenz und Konsistenzprüfung geladen werden.
TaxonomyParser.phpZentrale Graph-Engine. Lädt taxonomy_init.json + aid_lf.json in eine In-Memory-Adjazenzliste.
GraphRenderer.php
Transformiert den Graphen in D3.js-kompatibles JSON ({nodes, links}). Übernimmt Farbzuordnung nach Knotenklasse und Label-Generierung.
Analyzer.phpServerseitiger Textanalysator. Sendet die Verifikationsschritte jedes Aspekts als Batch an die LLM-API, parst Antworten und aggregiert Konfidenzwerte. Fällt auf heuristischen Modus zurück, wenn kein API-Key konfiguriert ist.
Layout.phpGemeinsame UI-Komponenten: HTML-Head mit Tailwind CSS, Navigation, Footer, klassenspezifische Badges und Relationstyp-Badges.
Die 5-stufige Analysepipeline verarbeitet Text durch zunehmend tiefgehende Analyse:
Segmentiert Eingabetext in elementare Diskurseinheiten (EDUs). Jeder Satz wird als Behauptung, Prämisse, Widerlegung oder Aussage klassifiziert – mittels Schlüsselwort-Indikatoren und LLM-Klassifikation.
Bildet rhetorische Relationen zwischen EDUs ab: welche Prämissen welche Behauptungen stützen, welche Aussagen welche Argumente widerlegen. Erstellt einen Argumentgraphen.
Übersetzt natürlichsprachliche Argumente in Formeln der Prädikatenlogik erster Stufe. Nutzt optional den Z3-SMT-Solver zur formalen Gültigkeitsprüfung. Erkennt strukturelle Musterverletzungen.
Prüft alle Aspekte gegen den Text. Für jeden Aspekt werden binäre Verifikationsschritte ausgewertet. Frühzeitiger Abbruch: wenn Schritt 1 = „nein", werden die restlichen Schritte übersprungen. Konfidenz = Anteil der „ja"-Antworten.
Dedupliziert überlappende Erkennungen, sortiert nach Konfidenz, gruppiert nach Dimension und vergibt Schweregrad. Erzeugt den finalen Analysebericht.
Alle Daten sind über eine REST-ähnliche JSON-API zugänglich:
| Endpoint | Methode | Beschreibung |
|---|---|---|
| /api?action=graph | GET | D3.js-Graph (Knoten + Kanten) |
| /api?action=node&id=X | GET | Einzelner Knoten mit Relationen, Kindern, AID-Daten |
| /api?action=search&q=X | GET | Fuzzy-Suche über alle Aspekte |
| /api?action=dimensions | GET | Alle Aspekte gruppiert nach Dimension |
| /api?action=tree | GET | Vollständiger hierarchischer Baum |
| /api?action=analyze | POST | Tiefgehende Textanalyse (Authentifizierung erforderlich) |