flowchart TD seiten["Seiten-XML: Text, Fußnoten, Abbildungen"] --> stanza["stanza.duckdb: Sätze, Tokens, Lemmata, Abhängigkeiten, Entitäten"] register["Register: Briefe, Parteien, Daten, Regesten"] --> sidecar["fql.duckdb: Briefe, Seiten, Sätze, Erwähnungen, Themen, Handlungen, Perioden, Verweise"] stanza --> sidecar modell["Modelllesungen: Themen, Handlungen"] --> sidecar
Datenmodell und Fehler
Was die Datenbanken einer Sammlung enthalten, wie gut ihre Schichten sind und welche Fehler jede Anfrageform zeigen kann
Eine PDAI-Sammlung hat drei Datenbanken übereinander: die Stanza-Datenbank der Sätze und Tokens, das Register und das FQL-Sidecar; jede Schicht hat gemessene Fehler, und jede Anfrageform erbt die Fehler der Schichten, die sie liest.
Drei Schichten
| Datei | Inhalt | Schlüssel |
|---|---|---|
<sammlung>_stanza.duckdb |
Sätze mit Sprachetikett, Tokens mit Form, Lemma, Wortart, Merkmalen und Kopf, Entitäten nach Typ | Satz = (doc_id, pidx, sent_idx); sent_idx beginnt auf jeder Seite neu |
<sammlung>.duckdb (Kármán) |
Das Register: Briefe, aufgelöste Parteien, Personen-, Orts- und Institutionsindex, Mappen | letter_id |
register/*.parquet (Euler) |
Das Register der Descriptio und die Textbände IVA 2–8 | letter_id |
<sammlung>_fql.duckdb |
Das Sidecar: alle FQL-Tabellen, mit Fundstelle in jeder Zeile | letter_id, Satzschlüssel |
status.json, quality/ |
Bereitschaft der Sammlung, Prüfberichte | — |
Das Sidecar wird mit fql_build.py gebaut (Stufen base, persons, segment, pages, text, mentions, regest, topics, acts, periods, refs, fts) und atomar veröffentlicht. Die Stufe refs schreibt fq_documents (Titel und Zitiergrundlage aus der Bibliographie der Sammlung oder dem Mappenblatt des Archivs) und fq_page_labels (die gedruckte Seitenzahl aus dem Kolumnentitel). Fehlt eine Angabe, bleibt sie leer und der Verweis nennt die Lücke.
Die Tabellen
Die Stanza-Datenbank <sammlung>_stanza.duckdb
| Tabelle | Kármán | Euler | Spalten |
|---|---|---|---|
stz_corpus_meta |
1 | 1 | built_at, collection, n_docs, n_pages, n_sentences, n_tokens, n_feats, elapsed_s, version |
stz_deps |
8.711.986 | 2.093.268 | doc_id, pidx, sent_idx, dep_tok, head_tok, deprel, dep_lemma, dep_upos, head_lemma, head_upos |
stz_docs |
1.066 | 8 | doc_id, n_pages, n_sentences, n_tokens, built_at |
stz_entities |
424.144 | 23.389 | doc_id, pidx, sent_idx, ent_no, ent_type, text |
stz_feats |
11.891.315 | 3.821.301 | doc_id, pidx, sent_idx, tid, feat, val |
stz_letter_map |
39.031 | — | doc_id, pidx, letter_nr, sender, recipient, date_when, language |
stz_pages |
38.197 | 5.829 | doc_id, pidx, primary_lang, n_sentences, n_tokens, n_math_inline, n_math_display |
stz_sentences |
663.972 | 153.669 | doc_id, pidx, sent_idx, lang, text |
stz_tokens |
8.711.986 | 2.093.268 | doc_id, pidx, sent_idx, tid, form, lemma, upos, xpos, head, deprel, is_math |
Das FQL-Sidecar <sammlung>_fql.duckdb
| Tabelle | Kármán | Euler | Spalten |
|---|---|---|---|
fq_acts |
5.121 | 2.142 | act_id, letter_id, act_type, agent, agent_id, addressee, addressee_id, beneficiary, beneficiary_id, object_kind, object, amount, currency, amount_text, quote, evidence, doc_id, pidx, sent_idx, model, instruction |
fq_build_meta |
11 | 14 | stage, built_at, model, instruction, n_rows, seconds, llm_calls, cached_calls, note |
fq_documents |
1.066 | 8 | doc_id, title, kind, citation, volume, section, source |
fq_entities |
23.219 | 322 | ent_id, kind, canonical, n_sent, n_received |
fq_figures |
0 | 90 | doc_id, pidx, ref, caption, description, letter_id |
fq_footnotes |
0 | 236 | doc_id, pidx, fn_no, text, letter_id |
fq_letter_entities |
78.266 | — | letter_id, ent_id, surface, kind |
fq_letter_pages |
39.318 | 1.019 | letter_id, doc_id, pidx, part, method |
fq_letter_period |
Sicht | Sicht | |
fq_letter_sentences |
684.471 | 13.683 | letter_id, doc_id, pidx, sent_idx, part, lang |
fq_letter_topics |
47.031 | 9.005 | letter_id, topic_id, top_id, n_tags |
fq_letters |
15.976 | 3.393 | letter_id, doc_id, letter_nr, sender_id, recipient_id, sender_raw, recipient_raw, sender, recipient, place, date_when, year, date_day, date_text, language, regest, regest_source, tags, pidx_from, pidx_to, basis, volume, edition_nr, register_nr, lost |
fq_llm_cache |
959 | 513 | key, stage, model, response, ms, prompt_tokens, eval_tokens, ts |
fq_mentions |
424.144 | 23.389 | doc_id, pidx, sent_idx, ent_no, ent_type, surface, ent_id, letter_id |
fq_page_labels |
38.213 | 6.369 | doc_id, pidx, label, method |
fq_paragraphs |
478.081 | 14.479 | doc_id, pidx, par_idx, kind, style, text, letter_id, par_key |
fq_periods |
3 | 5 | period_id, label, kind, date_from, date_to, region, source, status |
fq_segments |
— | 1.256 | doc_id, pidx, letter_nr, part, running_head |
fq_tag_topic |
11.097 | 3.257 | tag, topic_id |
fq_topics |
168 | 168 | topic_id, label, parent_id, description |
fq_variants |
23.240 | 641 | variant_norm, ent_id |
Gründe und Bericht
Jede Antwort einer Anfrage hat ein Argument; seine Fundstellen werden zu Gründen mit einer einheitlichen Adresse im Belegkörper: <sammlung>@<version>#<art>/<ort>. Die Version ist der Hash der Selbstbeschreibung der Sammlung (Baulog des Sidecars, Register, status.json, Zeilen der Indizes); ändert sich eine davon, ändert sich die Version, und jedes Urteil sagt, relativ zu welcher es gilt.
| Art | Ort | Auszug aus |
|---|---|---|
satz |
doc_id/pidx/sent_idx |
stz_sentences.text |
seite |
doc_id/pidx |
den Sätzen der Seite, sonst dem Seiten-XML |
brief |
letter_id |
fq_letters: Datum, Absender, Empfänger |
person |
ent_id |
fq_entities.canonical |
thema |
topic_id |
fq_topics.label |
tabelle |
Tabellenname | Zeilenzahl der Tabelle |
Der Auszug ist immer der Text des Körpers an dieser Adresse, nie die Lesung eines Modells; die Lesung steht daneben. Die Gründe stehen im Bericht famulus-enfolding/1 der Anfrage. Sein Schema ist development/famulus-proof/src/famulus_proof/entfaltung/schema/famulus-enfolding-1.schema.json; das Register der Belegkörper ist rules/bodies.yaml desselben Pakets.
Gemessene Güte der Schichten
Die folgenden Zahlen sind Messungen, keine Schätzungen. Drei Arten sind zu unterscheiden: Strukturprüfungen (ein Satz hat genau eine Wurzel; ein Brief hat eine aufgelöste Partei), Übereinstimmungen zweier unabhängiger Wege (das Sprachetikett gegen eine Abstimmung über Funktionswörter) und Stichproben mit gelesenem Urteil. Nur Stichproben messen Präzision.
Drei Befunde bestimmen die Grenzen der Anfragen am stärksten:
- Das Etikett
laist bei Kármán meist falsch. Von den entscheidbaren Sätzen mit Etikett Latein stimmen 4,7 % der Abstimmung zu; die meisten sind englisch. Diese Sätze wurden mit dem lateinischen Modell gelesen: Ihre Lemmata sind unbrauchbar und sie haben keine Entitäten. Bei Euler ist das Etikettlafür die Textbände IVA 2–8 überwiegend deutsch oder französisch, für die Briefe des Bands IVA 4 zu 72 % richtig. - 42 % der Kármán-Briefe haben keine aufgelöste Partei. Jede Zählung über Personen ist eine Untergrenze. Bei 1.525 dieser Briefe nennt die Mappe einen Korrespondenten; das ist eine mögliche zweite Quelle.
- Der Volltextindex nutzt englische Stoppwörter und Stammformen für alle Sprachen. Lateinische Funktionswörter wie et, non, in werden gestrichen; numerus, numeri und numerorum sind drei Suchbegriffe (280, 267 und 85 Absätze bei Euler). Der Lemmaweg findet numerus in 1.052 Sätzen, die Zeichenkette in 508.
Gemessen am 2026-10-01 mit scripts/fql_quality.py (nur lesend, jede Zahl aus einer Abfrage).
Sprachetikett der Sätze
Das Etikett wählt das Stanza-Modell. Eine Abstimmung über Funktionswörter (de, la, en, fr) prüft es unabhängig; sie entscheidet nur bei mindestens zwei Funktionswörtern mit klarem Vorsprung.
| Sammlung | Etikett | Sätze | entscheidbar | davon übereinstimmend | häufigste andere Stimme |
|---|---|---|---|---|---|
| Kármán (Korpus) | en |
414.820 | 49,4 % | 99,6 % | fr (440) |
| Kármán (Korpus) | de |
135.909 | 44,7 % | 96,8 % | en (1.613) |
| Kármán (Korpus) | la |
50.040 | 21,8 % | 4,7 % | en (8.269) |
| Kármán (Korpus) | fr |
43.111 | 45,6 % | 92,6 % | en (1.367) |
| Kármán (Briefe) | en |
427.842 | 49,0 % | 99,6 % | fr (445) |
| Kármán (Briefe) | de |
139.119 | 44,2 % | 96,7 % | en (1.654) |
| Kármán (Briefe) | la |
51.369 | 21,5 % | 4,7 % | en (8.404) |
| Kármán (Briefe) | fr |
44.206 | 45,5 % | 92,6 % | en (1.394) |
| Euler (Korpus) | la |
139.676 | 41,2 % | 14,2 % | de (32.894) |
| Euler (Korpus) | en |
7.521 | 59,8 % | 99,3 % | de (14) |
| Euler (Korpus) | de |
5.621 | 44,5 % | 95,4 % | en (55) |
| Euler (Korpus) | fr |
676 | 41,3 % | 85,3 % | en (35) |
| Euler (Briefe) | en |
6.416 | 58,7 % | 99,2 % | de (13) |
| Euler (Briefe) | de |
4.629 | 44,0 % | 95,2 % | la (48) |
| Euler (Briefe) | la |
2.137 | 40,0 % | 71,9 % | de (145) |
| Euler (Briefe) | fr |
334 | 21,6 % | 50,0 % | en (30) |
Briefe, Parteien, Daten, Zuordnung
| Messung | Kármán | Euler |
|---|---|---|
| Briefe | 15.976 | 3.393 |
| Absender nicht aufgelöst | 43,2 % | 0,0 % |
| Empfänger nicht aufgelöst | 56,8 % | 0,0 % |
| keine Partei aufgelöst | 42,4 % | 0,0 % |
| ohne Datum | 45,4 % | 2,0 % |
| nur Jahr | 3,0 % | 0,0 % |
| Seiten, die zwei Briefe teilen | 2,9 % | 0,0 % |
| Briefsätze auf geteilten Seiten | 6,0 % | 0,0 % |
| Briefe ohne Text | 0 | 3.197 |
| Namensformen, die mehrere Einträge treffen | 223 | 1 |
| Personennennungen mit Registerverknüpfung | 41,7 % | 15,3 % |
| Handlungen mit Satzbeleg | 59,4 % | 9,3 % |
| Geldhandlungen ohne Betrag | 44,9 % | 70,5 % |
| Briefe ohne Thema | 2,0 % | 17,8 % |
Stichproben: Präzision mit 95-%-Intervall (Wilson)
Gelesen von: agent (not owner-validated); Ziehung mit Seed 20261001 (scripts/fql_audit_sample.py). Eine Stichprobe dessen, was ein Filter liefert, misst Präzision, nicht Vollständigkeit.
| Stichprobe | Behauptung | n | richtig | Präzision | 95 % | nicht entscheidbar |
|---|---|---|---|---|---|---|
acts_karman |
the sentence expresses the act of this type, and agent and addressee are the right way round | 30 | 22 | 73,3 % | 55,6 % – 85,8 % | 0 |
acts_karman_handlung |
the act of this type with these roles is stated in the letter (the shown sentence may be a neighbour) | 30 | 27 | 90,0 % | 74,4 % – 96,5 % | 0 |
acts_regest_karman |
the regest states the act of this type | 30 | 28 | 93,3 % | 78,7 % – 98,2 % | 0 |
topics_karman |
the regest supports the assigned topic | 30 | 27 | 90,0 % | 74,4 % – 96,5 % | 0 |
mentions_karman |
the surface in the sentence denotes the register person it is linked to | 24 | 21 | 87,5 % | 69,0 % – 95,7 % | 6 |
promise_dep_karman |
the sentence states a promise made by its grammatical subject (lemma promise, VERB, nsubj + obj/ccomp/xcomp) | 30 | 25 | 83,3 % | 66,4 % – 92,7 % | 0 |
imperative_karman |
the sentence is an instruction or request addressed to the reader (not a salutation, quotation or fragment) | 30 | 4 | 13,3 % | 5,3 % – 29,7 % | 0 |
will_karman |
the sentence is a commitment by the writer to do something (I will / I shall + verb) | 30 | 12 | 40,0 % | 24,6 % – 57,7 % | 0 |
topics_euler |
the regest supports the assigned topic | 30 | 26 | 86,7 % | 70,3 % – 94,7 % | 0 |
mentions_karman_2 |
the surface in the sentence denotes the register person it is linked to | 20 | 16 | 80,0 % | 58,4 % – 91,9 % | 10 |
lemma_numerus_euler |
the token’s form is an inflected form of ‘numerus’ (lemma correct) | 30 | 30 | 100,0 % | 88,6 % – 100,0 % | 0 |
citations_hevelius |
the passage cites this letter or register entry (number, date and parties, or shelfmark), and the builder resolved it to the right one | 40 | 38 | 95,0 % | 83,5 % – 98,6 % | 0 |
Dependenzfilter am Beispiel promise (Kármán). Lemma + VERB: 137 Sätze; mit Subjekt und Objekt: 93; zusätzlich belebtes Subjekt: 80. Unter den 57 verworfenen Sätzen waren 29 echte Zusagen (passive and participle forms (‘has been promised’, ‘the promised copy’), subjects that are common nouns (‘Our Company has promised’), conjoined or coordinated predicates). Geschätzt: Lemma-Weg Präzision 80 %, Vollständigkeit 100 %; Dependenzweg Präzision 100 %, Vollständigkeit 73 % (real promises = 80 kept (precision 24/24 on the judged sample) + 29 read among the dropped = about 109; the unclear sentence and promise tagged NOUN are not counted).
Satzfilter-Rezepte über Stanza
| Rezept | Sammlung | Sätze | davon in Briefen | Briefe | ms |
|---|---|---|---|---|---|
| J1 · Zwei Lemmata im selben Satz | Kármán | 1.269 | 1.269 | 563 | 24.9 |
| J2 · Zwei Lemmata im Abstand von höchstens vier Wörtern | Kármán | 1.251 | 1.251 | 560 | 23.0 |
| J3 · Prädikat mit Subjekt und Objekt (Dependenz) | Kármán | 80 | 80 | 70 | 38.1 |
| J4 · Handelnder als grammatisches Subjekt eines Verbs | Kármán | 4 | 4 | 4 | 14.3 |
| J5 · Verneinte Sätze mit einem Lemma | Kármán | 7 | 7 | 7 | 43.4 |
| J6 · Zukunft in der ersten Person (Zusagen: ‘I will send’) | Kármán | 904 | 904 | 722 | 37.1 |
| J7 · Imperativ (Mood=Imp): Bitten und Anweisungen | Kármán | 17.295 | 17.295 | 5.192 | 116.3 |
| J8 · Frage (Satz endet auf Fragezeichen) | Kármán | 2.695 | 2.695 | 1.257 | 34.5 |
| J9 · Entität eines Typs und ein Lemma im selben Satz (Geld und zahlen) | Kármán | 37 | 37 | 35 | 15.9 |
| J10 · Personennamen (PERSON/PER) in Sätzen mit einem Lemma | Kármán | 99 | 99 | 99 | 13.9 |
| J11 · Lateinisches Lemma nur dort, wo das Etikett Latein ist | Euler | 962 | 250 | 76 | 41.5 |
| J12 · Satz mit Gleichung ausschließen (Mathematik-Token) | Euler | 313 | 69 | 32 | 50.7 |
J1 Zwei Lemmata im selben Satz (a = wind, b = tunnel)
SELECT DISTINCT a.doc_id, a.pidx, a.sent_idx FROM stz.stz_tokens a
JOIN stz.stz_tokens b ON b.doc_id = a.doc_id AND b.pidx = a.pidx AND b.sent_idx = a.sent_idx
WHERE a.lemma = $a AND b.lemma = $b AND a.upos IN ('NOUN','PROPN','VERB','ADJ') AND b.upos IN ('NOUN','PROPN','VERB','ADJ')J2 Zwei Lemmata im Abstand von höchstens vier Wörtern (a = wind, b = tunnel)
SELECT DISTINCT a.doc_id, a.pidx, a.sent_idx FROM stz.stz_tokens a
JOIN stz.stz_tokens b ON b.doc_id = a.doc_id AND b.pidx = a.pidx AND b.sent_idx = a.sent_idx AND abs(b.tid - a.tid) BETWEEN 1 AND 4
WHERE a.lemma = $a AND b.lemma = $bJ3 Prädikat mit Subjekt und Objekt (Dependenz) (verb = promise)
SELECT DISTINCT v.doc_id, v.pidx, v.sent_idx FROM stz.stz_tokens v
JOIN stz.stz_tokens s ON s.doc_id = v.doc_id AND s.pidx = v.pidx AND s.sent_idx = v.sent_idx AND s.head = v.tid AND s.deprel LIKE 'nsubj%'
JOIN stz.stz_tokens o ON o.doc_id = v.doc_id AND o.pidx = v.pidx AND o.sent_idx = v.sent_idx AND o.head = v.tid AND o.deprel IN ('obj','ccomp','xcomp','iobj')
WHERE v.lemma = $verb AND v.upos = 'VERB'
AND ((s.upos = 'PRON' AND s.lemma IN ('I','you','he','she','we','they','who','one')) OR s.upos = 'PROPN')J4 Handelnder als grammatisches Subjekt eines Verbs (actor = Putnam, verb = send)
SELECT DISTINCT v.doc_id, v.pidx, v.sent_idx FROM stz.stz_tokens v
JOIN stz.stz_tokens s ON s.doc_id = v.doc_id AND s.pidx = v.pidx AND s.sent_idx = v.sent_idx AND s.head = v.tid AND s.deprel LIKE 'nsubj%'
WHERE v.lemma = $verb AND v.upos = 'VERB' AND s.form = $actorJ5 Verneinte Sätze mit einem Lemma (lemma = grant)
SELECT DISTINCT t.doc_id, t.pidx, t.sent_idx FROM stz.stz_tokens t
WHERE t.lemma = $lemma AND EXISTS (SELECT 1 FROM stz.stz_tokens n WHERE n.doc_id = t.doc_id AND n.pidx = t.pidx AND n.sent_idx = t.sent_idx
AND n.head = t.tid AND n.deprel = 'advmod' AND lower(n.form) IN ('not','never','no','n''t'))J6 Zukunft in der ersten Person (Zusagen: 'I will send')
SELECT DISTINCT v.doc_id, v.pidx, v.sent_idx FROM stz.stz_tokens v
JOIN stz.stz_tokens s ON s.doc_id = v.doc_id AND s.pidx = v.pidx AND s.sent_idx = v.sent_idx AND s.head = v.tid AND s.deprel LIKE 'nsubj%' AND s.lemma = 'I'
JOIN stz.stz_tokens m ON m.doc_id = v.doc_id AND m.pidx = v.pidx AND m.sent_idx = v.sent_idx AND m.head = v.tid AND m.deprel = 'aux' AND lower(m.form) IN ('will','shall','''ll')
WHERE v.upos = 'VERB'J7 Imperativ (Mood=Imp): Bitten und Anweisungen
SELECT DISTINCT t.doc_id, t.pidx, t.sent_idx FROM stz.stz_tokens t
JOIN stz.stz_feats f ON f.doc_id = t.doc_id AND f.pidx = t.pidx AND f.sent_idx = t.sent_idx AND f.tid = t.tid AND f.feat = 'Mood' AND f.val = 'Imp'
WHERE t.upos = 'VERB' AND t.deprel = 'root'J8 Frage (Satz endet auf Fragezeichen)
SELECT doc_id, pidx, sent_idx FROM (SELECT doc_id, pidx, sent_idx, arg_max(form, tid) AS f FROM stz.stz_tokens GROUP BY 1,2,3) WHERE f = '?'J9 Entität eines Typs und ein Lemma im selben Satz (Geld und zahlen) (lemma = pay)
SELECT DISTINCT e.doc_id, e.pidx, e.sent_idx FROM stz.stz_entities e
JOIN stz.stz_tokens t ON t.doc_id = e.doc_id AND t.pidx = e.pidx AND t.sent_idx = e.sent_idx
WHERE e.ent_type IN ('MONEY') AND t.lemma = $lemma AND t.upos = 'VERB'J10 Personennamen (PERSON/PER) in Sätzen mit einem Lemma (lemma = thank)
SELECT DISTINCT e.doc_id, e.pidx, e.sent_idx FROM stz.stz_entities e
JOIN stz.stz_tokens t ON t.doc_id = e.doc_id AND t.pidx = e.pidx AND t.sent_idx = e.sent_idx
WHERE e.ent_type IN ('PERSON','PER') AND t.lemma = $lemma AND t.upos = 'VERB'J11 Lateinisches Lemma nur dort, wo das Etikett Latein ist (lemma = numerus)
SELECT DISTINCT t.doc_id, t.pidx, t.sent_idx FROM stz.stz_tokens t
JOIN stz.stz_sentences s ON s.doc_id = t.doc_id AND s.pidx = t.pidx AND s.sent_idx = t.sent_idx
WHERE t.lemma = $lemma AND s.lang = 'la' AND NOT t.is_mathJ12 Satz mit Gleichung ausschließen (Mathematik-Token) (lemma = numerus)
SELECT DISTINCT t.doc_id, t.pidx, t.sent_idx FROM stz.stz_tokens t
WHERE t.lemma = $lemma AND NOT EXISTS (SELECT 1 FROM stz.stz_tokens m WHERE m.doc_id = t.doc_id AND m.pidx = t.pidx
AND m.sent_idx = t.sent_idx AND m.is_math)Anfragen über die Satzstruktur
Die Stanza-Datenbank erlaubt Filter, die über Wörter hinausgehen: zwei Lemmata im selben Satz oder in kurzem Abstand, ein Prädikat mit Subjekt und Objekt, Verneinung, Zeit und Modus, Fragen, eine Entität eines Typs neben einem Lemma. Die Rezepte J1–J12 oben sind ausgeführt; ihre Präzision ist für drei von ihnen gelesen:
- Zusagen über das Lemma promise (J3): Der Lemmaweg (VERB) liefert 137 Sätze, geschätzt 80 % davon echte Zusagen. Der Abhängigkeitsweg mit belebtem Subjekt liefert 80 Sätze, in der Stichprobe alle richtig, aber er verfehlt etwa ein Viertel der Zusagen: Passiv („has been promised“), Partizip („the promised copy“), Subjekte, die Substantive sind („Our Company has promised“).
- Imperativ als Bitte (J7): 13 % Präzision. Der Imperativ trifft vor allem Darstellungsformen von Manuskripten („Let us consider“, „Assume“), Tabellenzeilen und Fragmente. Ohne Einschränkung auf Briefe und eine Anrede taugt er nicht als Filter für Bitten.
- „I will / I shall“ als Zusage (J6): 40 % Präzision. Ankündigungen des Textes („I shall restrict myself …“), höfliche Bitten („I shall appreciate …“) und Voraussagen sind keine Zusagen.
Daraus folgt für die Formen: Satzfilter sind gute Zeugen für das Vorkommen eines Wortes in einer bestimmten Funktion, schlechte für Sprechhandlungen. Die Handlungen der Formen E1–E8 kommen deshalb aus einer Lesung des Modells mit gemessener Präzision, nicht aus einem Satzfilter; ein Satzfilter kann als zweiter, unabhängiger Zeuge dienen.
Fehler jeder Form
Jede Form erbt die Fehler der Schichten, die sie liest. error_model.yaml nennt sie, mit der Richtung (übersehen, falsch gefunden, verschoben) und mit der Art der Zahl, die die Form liefert: exakt, Untergrenze, Obergrenze, Schätzung, Beleg. Die Begründung macht aus jeder Fehlerart eine kritische Frage.
Fehlerarten
| Code | Fehlerart | Richtung | Schicht | Wirkung |
|---|---|---|---|---|
OCR |
Lesefehler der Texterkennung | both | text | Falsch gelesene Zeichen verändern Wortformen. Die Suche nach der richtigen Form verfehlt den Satz (FN); eine falsch gelesene Form trifft einen fremden Namen (FP). |
SEG |
Zuordnung von Seiten und Sätzen zu Briefen | both | text | Ein Brief ist eine Seitenspanne. Auf einer Seite, die zwei Briefe teilt, gehören Sätze zum Nachbarbrief; ein Satz wird dann zweimal gezählt oder dem falschen Brief belegt. |
COV |
Abdeckung des Bestands | FN | register | Was das Sidecar nicht enthält, kann keine Form finden. Eine leere Antwort heißt dann nicht, dass es das Gesuchte nicht gibt. |
PARTY |
Absender oder Empfänger nicht aufgelöst | FN | register | Das Register nennt bei manchen Briefen keine Partei. Jeder Filter auf eine Person lässt diese Briefe aus; Zählungen sind Untergrenzen. |
LINK |
Verknüpfung mit dem Register (Namensauflösung) | both | register | Eine Namensform wird einer Person des Registers zugeordnet. Gleiche Familiennamen verschiedener Personen verschmelzen (FP); eine nicht verzeichnete Schreibweise bleibt ungebunden (FN). |
NER |
Fehler der Namenserkennung | both | stanza | Spanne oder Typ falsch, Name übersehen. Die Typsysteme der Sprachmodelle unterscheiden sich (PERSON, PER), und für Latein gibt es keine Namenserkennung. |
LANG |
Falsches Sprachetikett (falsches Stanza-Modell) | both | stanza | Das Etikett eines Satzes wählt das Modell. Ein englischer Satz mit Etikett Latein wird mit dem lateinischen Modell gelesen; Lemma, Wortart und Entitäten sind dann Unsinn oder fehlen. |
LEMMA |
Lemma- und Wortartfehler | both | stanza | Falsche Grundform (problema zu problemus) oder falsche Wortart. Ein Lemmafilter verfehlt dann den Satz oder trifft eine fremde Wortform. |
PARSE |
Fehler der Abhängigkeitsanalyse | both | stanza | Falsche Köpfe und Relationen. Filter über Subjekt, Objekt oder Verneinung verlieren Sätze mit anderer Struktur (Passiv, Koordination) oder behalten Sätze mit übertragener Bedeutung. |
SENT |
Satzgrenzen und Satzeinheiten | both | stanza | Briefzeilen, Anreden und Tabellenzeilen sind eigene Sätze; ein Satz über einen Seitenumbruch ist in zwei geschnitten. Satzweise Filter sehen nur eine Hälfte. |
DATE |
Datum fehlt oder ist grob | FN | register | Briefe ohne Datum fallen aus jedem Zeit- und Periodenfilter; Jahresangaben ohne Monat und Tag fallen aus Filtern auf Monat oder Tag. |
TOPIC |
Thema durch das Modell zugeordnet | both | llm | Ein Schlagwort des Regests wird einem Thema zugeordnet; falsche Zuordnung (FP) oder kein Thema (FN). |
ACT |
Handlung durch das Modell gelesen | both | llm | Art (Bitte, Zusage, Zahlung), Rollen (wer an wen) oder Gegenstand falsch gelesen; eine Handlung übersehen. Das Modell liest meist das Regest, selten den Satz. |
LOCUS |
Belegsatz nicht der Satz der Handlung | FP | llm | Die Handlung stimmt für den Brief, der angezeigte Satz ist aber ein Nachbarsatz (Einleitung, Listenrest). Der Beleg trägt die Handlung dann nicht. |
PERIOD |
Periodengrenzen nicht bestätigt | bias | register | Kriegs- und Friedenszeiten sind konventionelle Grenzen mit dem Status proposed; Briefe nahe der Grenze und Briefe ohne Datum sind unsicher oder fehlen. |
BIND |
Bindung der Parameter | both | harness | Das Modell bindet einen Namen an die falsche Person oder bei doppelten Registereinträgen an einen der beiden. |
FORM |
Wahl der Anfrageform | both | harness | Die Frage wird einer Form zugeordnet, die etwas Verwandtes beantwortet. Die Wahl wurde nur an Fragen des Katalogautors gemessen. |
POST |
Formulierung der Antwort | bias | harness | Die Antwort fasst höchstens vierzig Zeilen zusammen und kann eine Untergrenze als Gesamtzahl sprechen. |
COUNT |
Zählmodus und Doppelzählung | bias | register | Ob Briefe, Sätze oder Erwähnungen gezählt werden, bestimmt die Zahl; ein Satz in zwei Briefen oder ein doppelter Registereintrag zählt doppelt. |
FTS |
Volltextsuche (BM25) über Wortformen | both | text | Der Index nutzt englische Stoppwörter und englische Stammformen für alle Sprachen. Flexionsformen sind verschiedene Suchbegriffe; lateinische Funktionswörter wie et, non, in werden als Stoppwörter gestrichen. |
MATH |
Formeln als Namen oder Wörter erkannt | FP | stanza | In mathematischen Texten werden Formeln als Personen, Orte oder Wörter erkannt und gezählt. |
ZERO |
Leere Antwort ist keine Verneinung | FN | harness | Die Null einer Zählung bedeutet nur, dass das Sidecar nichts enthält. Jede der anderen Fehlerarten kann sie erzeugen. |
CITE |
Anführung eines Briefs durch das Modell gelesen | both | llm | Das Modell liest aus einer Anmerkung oder einem Absatz, welchen Brief die Herausgeber anführen; der Bau löst Datum, Parteien und Nummer gegen Register und Briefe auf. Eine falsch gelesene oder falsch aufgelöste Anführung hängt die Stelle an einen fremden Brief (FP); eine übersehene fehlt (FN). |
SCAN |
Kommentarseiten nicht gescannt | FN | text | Von den Essays und Einleitungen fehlen Seiten (Tome I und Tome II, aufgeführt in completeness.md der Sammlung). Was dort steht, findet keine Form. |
Fehlerarten je Form
| Form | Fehlerarten (wichtigste zuerst) | Zahlen sind | Wie der Fehler aussieht |
|---|---|---|---|
| A1 Bestand der Sammlung | COV PARTY SEG |
exakt | Zählt, was das Sidecar enthält. Fehlende Texte erscheinen als kleinere Zahl, nicht als Fehlermeldung. |
| A2 Briefe pro Jahr | DATE PARTY COV |
Untergrenze | Briefe ohne Datum fehlen in jedem Jahr; mit Personenfilter fehlen zusätzlich Briefe ohne aufgelöste Partei. |
| A3 Briefe in einem Zeitraum | DATE PARTY COV |
Untergrenze | Wie A2; ein Zeitraum aus Tagen verlangt zudem ein Tagesdatum, Jahresangaben fallen heraus. |
| A4 Text eines Briefs | SEG OCR COV |
Beleg | Zeigt die Absätze der Seitenspanne; auf einer geteilten Seite stehen auch Absätze des Nachbarbriefs. |
| A5 Daten eines Briefs | DATE PARTY |
exakt | Gibt die Registerangaben wieder; ein Fehler liegt im Register, nicht in der Abfrage. |
| B1 Person im Register | LINK COV |
Schätzung | Sucht Namensformen im Register; verschiedene Personen mit gleichem Familiennamen und nicht verzeichnete Schreibweisen. |
| B2 Briefe von und an eine Person | PARTY LINK DATE |
Untergrenze | Briefe ohne aufgelöste Partei fehlen; bei zwei Personen gleichen Namens werden ihre Briefe vermischt. |
| B3 Wer schrieb von einem Ort | PARTY COV LINK |
Untergrenze | Der Ort wird als Teilzeichenkette der Registerangabe gesucht (ein kurzer Name trifft auch längere Ortsnamen, FP); andere Schreibweisen desselben Ortes fehlen (FN). |
| B4 Orte, von denen jemand schrieb | PARTY LINK COV |
Untergrenze | Nur Briefe mit Ortsangabe und aufgelöster Person gehen in die Liste ein. |
| B5 Häufigst genannte Namen (NER) | NER LANG LINK SENT MATH |
Schätzung | Zählt Erwähnungen, nicht Personen. Lateinische Sätze haben keine Entitäten, und Sätze mit falschem Etikett verlieren sie. |
| B6 Wer nennt eine Person, mit Beleg | NER LINK LANG OCR SENT |
Beleg | Die Belegsätze sind echte Sätze des Textes; ein Teil der Verknüpfungen ist falsch oder aus dem Satz nicht entscheidbar (Stichprobe), und es fehlen Briefe, in denen der Name nicht erkannt oder nicht verknüpft wurde. |
| B7 Wer wird zusammen mit einer Person genannt | NER LINK COUNT SENT |
Schätzung | Zählt Briefe, in denen beide Namen erkannt wurden; was ein Brief zweimal nennt, zählt einmal. |
| B8 Institutionen in Briefen | NER LINK COV |
Schätzung | Institutionen nur dort, wo die Namenserkennung ORG oder ein Registereintrag vorliegt; Abkürzungen und Firmennamen als Personen verwechselt. |
| B9 Genannte Geldbeträge (NER), mit Beleg | NER LANG OCR |
Untergrenze | Nur Beträge, die als MONEY erkannt wurden; Beträge als bloße Zahl (CARDINAL) fehlen. |
| C1 Briefpartner einer Person | PARTY LINK COUNT |
Untergrenze | Die Zahl der Partner und Briefe ist eine Untergrenze; verschmolzene Namen senken sie, nicht verknüpfte Namensformen heben sie. |
| C2 Briefe zwischen zwei Personen | PARTY LINK ZERO |
Untergrenze | Null Briefe heißt keine registrierten Briefe zwischen beiden, nicht, dass sie sich nicht schrieben. |
| C3 Wer schrieb an eine Person | PARTY LINK |
Untergrenze | Absender ohne aufgelöste Partei fehlen. |
| C4 An wen schrieb eine Person | PARTY LINK |
Untergrenze | Empfänger ohne aufgelöste Partei fehlen. |
| C5 Chronik eines Briefwechsels | PARTY DATE LINK |
Untergrenze | Die Chronik zeigt nur Briefe mit beiden Parteien; undatierte stehen am Ende. |
| C6 Absendeorte eines Briefwechsels | PARTY COV |
Untergrenze | Nur Briefe mit Ortsangabe. |
| C7 Pausen im Briefwechsel | DATE PARTY ZERO |
Obergrenze | Fehlende oder undatierte Briefe erzeugen scheinbare Pausen; die Pausenlänge ist eine Obergrenze. |
| C8 Korrespondenznetz einer Person | PARTY LINK |
Untergrenze | Kanten nur zwischen aufgelösten Parteien; ein verschmolzener Name verbindet fremde Netze. |
| C9 Gemeinsame Briefpartner | PARTY LINK ZERO |
Untergrenze | Null gemeinsame Partner kann an nicht aufgelösten Briefen liegen. |
| C10 Erster und letzter Brief | DATE PARTY |
Untergrenze | Der erste datierte Brief; ein undatierter früherer Brief wird nicht gefunden. |
| D1 Worüber X an Y schrieb (Themen) | TOPIC PARTY LINK |
Schätzung | Themen aus dem Regest durch das Modell; Briefe ohne Thema fehlen, einzelne Zuordnungen sind falsch. |
| D2 Worüber X an Y schrieb (Regesten) | PARTY LINK |
Beleg | Zeigt Regesten des Herausgebers; Fehler liegen nur in der Auswahl der Briefe, nicht im Inhalt. |
| D3 Wer schrieb an X über ein Thema | TOPIC PARTY LINK |
Schätzung | Briefe ohne Thema oder mit falschem Thema; Briefe ohne aufgelöste Partei fehlen. |
| D4 Themenverteilung | TOPIC PARTY COV |
Schätzung | Anteile über Briefe mit Thema; Euler hat für etwa jeden sechsten Brief kein Thema. |
| D5 Wandel der Themen über die Jahre | TOPIC DATE COUNT |
Schätzung | Der Verlauf über die Jahre zählt nur datierte Briefe mit Thema; Jahre mit wenigen Briefen schwanken stark. |
| D6 Erstes Auftreten eines Themas | TOPIC DATE |
Untergrenze | Das früheste datierte Auftreten; ein früher undatierter Brief oder ein falsch zugeordnetes Thema verschiebt es. |
| D7 Suche in den Regesten (BM25) | FTS PARTY |
Schätzung | Stoppwörter und englische Stammformen; eine Flexionsform findet die anderen Formen nicht. |
| D8 Suche im Brieftext (BM25) | FTS OCR SEG LANG |
Schätzung | Sucht Wortformen im OCR-Text; Schreibvarianten und Lesefehler verfehlen den Absatz, lateinische Stoppwörter werden gestrichen. |
| E1 Wer bat X um etwas | ACT LOCUS PARTY LINK |
Schätzung | Die Handlung wurde vom Modell gelesen, meist aus dem Regest; Rollen können vertauscht, die Art falsch sein. |
| E2 Wer bat X um finanzielle Unterstützung | ACT LOCUS LINK PARTY |
Schätzung | Gehaltsforderungen und Rechnungen werden als Bitte um Geld gelesen (FP); Bitten ohne Regestnennung fehlen. |
| E3 Welche Beträge X zusagte | ACT LOCUS COV |
Untergrenze | Bei einem großen Teil der Geldhandlungen fehlt der Betrag; es zählen nur Zusagen mit gelesenem Betrag. |
| E4 Empfehlungen | ACT LINK |
Schätzung | Technische Vorschläge werden bisweilen als Empfehlung gelesen; Empfehlungen von Personen in anderer Wortwahl fehlen. |
| E5 Bitten um Bücher und Publikationen | ACT LINK |
Schätzung | Bitten um Sonderdrucke und Bücher sind stabil; Wünsche in Nebensätzen fehlen. |
| E6 Geldbeträge über die Zeit | ACT DATE COUNT |
Untergrenze | Summiert nur Beträge, die gelesen wurden und ein Datum haben; Währungen werden nicht umgerechnet. |
| E7 Handlungen in einem Brief | ACT LOCUS SEG |
Schätzung | Alle Handlungen eines Briefs; auf geteilten Seiten gehört der Belegsatz bisweilen zum Nachbarbrief. |
| E8 Handlungsprofil einer Person | ACT LINK COUNT |
Schätzung | Die Verteilung der Handlungsarten folgt dem Modell; seltene Arten haben kleine Zahlen. |
| F1 Briefe in Kriegs- und Friedenszeiten | PERIOD DATE PARTY |
Untergrenze | Briefe ohne Datum sind keiner Periode zuzuordnen; die Grenzen sind noch nicht bestätigt. |
| F2 Themen in Krieg und Frieden | PERIOD DATE TOPIC |
Schätzung | Zwei Unsicherheiten verbinden sich: Periodengrenze und Themenzuordnung. |
| F3 Handlungen in Krieg und Frieden | PERIOD DATE ACT |
Schätzung | Periodengrenze und Handlungsart; seltene Handlungen je Periode sind zu klein für Vergleiche. |
| F4 Zeitreihe mit Kriegsperioden | PERIOD DATE |
Untergrenze | Die Zeitreihe zählt datierte Briefe; die Kriegsbalken sind konventionelle Grenzen. |
| F5 Briefe nach Monaten | DATE |
Untergrenze | Nur Briefe mit Tagesdatum (date_day); Angaben nur mit Monat oder Jahr fehlen, bei Karman fast die Hälfte der Briefe. |
| G1 Sprachen der Briefe | LANG COUNT |
Schätzung | Zählt Sätze nach Etikett; mit falschem Etikett wächst die Zahl der lateinischen Sätze. |
| G2 Belege eines Wortes (Lemma) | LEMMA LANG SENT OCR SEG MATH |
Schätzung | Die Grundform findet Flexionsformen (hoher Gewinn gegenüber der Zeichenkette); es fehlen Sätze mit falscher Grundform oder falschem Modell. |
| G3 Mathematische Passagen und Formeln | MATH OCR SEG |
Schätzung | Zählt Absätze mit Gleichungen oder Dollarzeichen; Formeln im Fließtext ohne Zeichen fehlen. |
| G4 Fußnoten und Anmerkungen | COV |
exakt | Karman hat keine Fußnoten im Sidecar; ein leeres Ergebnis gilt nur für das Sidecar. |
| G5 Abbildungen in Briefen | COV |
exakt | Abbildungen nur dort, wo die OCR sie als Figur ausgezeichnet hat. |
| H1 Vergleich zweier Sammlungen | COV COUNT |
Schätzung | Zwei Sammlungen mit verschiedener Grundlage (Registerbriefe, Volltext); die Zahlen sind nur im Verhältnis zum Bestand vergleichbar. |
| H2 Bitte und Antwort | ACT LOCUS PARTY |
Schätzung | Verbindet zwei gelesene Handlungen über Personen und Zeit; ein Fehler in einer der beiden bricht die Antwort. |
| H3 Worüber Bittsteller sonst schrieben | ACT TOPIC PARTY |
Schätzung | Handlung und Thema sind beide modellgelesen; die Fehler multiplizieren sich. |
| I1 Erschließungsgrad | COV |
exakt | Zeigt, wo Lücken sind; selbst frei von Inferenz. |
| I2 Tabellen der Sammlung | COV |
exakt | Nennt vorhandene Tabellen; sagt nichts über ihre Qualität. |
| I3 Bauprotokoll der Erschließung | — | exakt | Gibt das Protokoll des Aufbaus wieder. |
| K1 Was die Edition über einen Gegenstand sagt | SCAN FTS OCR |
Beleg | Findet Stellen der Herausgeber, deren Text die Suchwörter enthält; ungescannte Kommentarseiten und andere Wortformen fehlen. |
| K2 Was die Edition zu einem Brief sagt | CITE SCAN OCR |
Untergrenze | Zeigt die Stellen, die den Brief nach der Lesung des Modells anführen; eine Anführung ohne Datum oder Namen wird nicht aufgelöst. |
| K3 Kommentar zum Briefwechsel zweier Personen | CITE LINK SCAN |
Untergrenze | Stellen, die Briefe zwischen beiden Personen anführen; Briefe mit nicht aufgelöster Partei fehlen. |
| K4 Welche Briefe ein Kapitel anführt | CITE SCAN |
Untergrenze | Die Briefe, die ein Abschnitt anführt; auf fehlenden Seiten des Abschnitts angeführte Briefe fehlen. |
| K5 Im Register verzeichnete, nicht edierte Briefe | COV SEG PARTY |
Untergrenze | Registereinträge ohne zugeordneten edierten Text; ein edierter Brief, dessen Registereintrag nicht gefunden wurde, lässt seinen Eintrag hier fälschlich erscheinen. |