ner suggest
ner suggest startet eine Vorschlagsrunde für eine bestehende Entität: liest deren Body, lässt darin enthaltene Personen, Orte und Organisationen erkennen, gleicht sie gegen den Vault ab und gibt dir die Vorschläge im Terminal aus. Was du davon übernimmst, entscheidest du selbst — die Annahme passiert über entity link oder entity new.
In der späteren Web-Oberfläche läuft dieselbe Mechanik im Editor mit, jeweils während du tippst. Im CLI ist es der manuelle Auslöser pro Entität.
Wofür ist das?
- Eine Entität gezielt aufräumen. Du hast eine ältere Notiz, in der du diverse Personen und Orte erwähnst, ohne sie zu verlinken. Ein Aufruf zeigt dir die offenen Stellen.
- Einen Befund reproduzieren. Im Editor ist ein Vorschlag aufgetaucht, du willst ihn im Terminal nachvollziehen oder skripten.
- Vorschläge auf der Kommandozeile. Solange noch keine Web-Oberfläche existiert, ist das Kommando der direkte Zugriff auf die Schreibassistenz.
Aufruf
apparat ner suggest <entity-id> [--vault=<vault>]
Das Argument <entity-id> ist die NanoID der Entität, die analysiert werden soll. Die --vault-Option folgt dem üblichen Apparat-Pattern: registrierter Vault-Name, absoluter oder relativer Pfad, oder Auto-Detection aus dem aktuellen Verzeichnis.
Drei Klassen Vorschläge
Jeder erkannte Name landet in einer von drei Schubladen:
Bekannte Treffer
Der erkannte Name passt exakt auf den Titel einer existierenden Entität (Groß-/Kleinschreibung wird ignoriert). Apparat schlägt vor, an dieser Stelle einen Link zu setzen.
Known matches (link existing entity): - "Maria Beispiel" (×2, PER) → V1StGXRa Maria Beispiel [person]
×2 heißt: der Name tritt zweimal im Body auf. Du verlinkst entweder beide Stellen oder keine.
Nahe Übereinstimmungen
Kein exakter Treffer, aber eine ähnliche Entität existiert. Apparat probiert dafür zwei Pfade nacheinander:
- Tippfehler-Erkennung.
Magnos Kobergegen ein bestehendesMagnus Koberist einen einzelnen Buchstabentausch entfernt — der Treffer landet hier. - Themen-Nachbarschaft.
WCAG 2.2gegen ein bestehendesWCAG-Kontrastregelnlässt sich buchstabenmäßig nicht aufeinander schieben, aber thematisch sehr wohl. Diese Stufe greift, wenn die erste keinen Treffer hatte.
Übersicht der Verfahren in Ähnlichkeit.
Near matches (review and link if appropriate): - "Magnos Kober" (×1, PER) ≈ MgKb19Yz Magnus Kober [person] (distance 0.083) - "WCAG 2.2" (×1, MISC) ≈ Wc2KrAa1 WCAG-Kontrastregeln [concept] (distance 0.182)
Niedrigere Distanz = näher dran.
Neue Entitätsvorschläge
Weder exakter noch ähnlicher Treffer — Apparat schlägt vor, eine neue Entität anzulegen, mit einem aus der Spracherkennung abgeleiteten Typ-Vorschlag (PER/PERSON → person, LOC/GPE → place, ORG → organization). Andere Labels (MISC, DATE, EVENT) bekommen den Platzhalter <type> — den wählst du dann selbst.
New entity proposals:
- "Anna Schmidt" (×1, PER)
apparat entity new person --title="Anna Schmidt"
- "Konferenz" (×1, MISC)
apparat entity new <type> --title="Konferenz"
Die zweite Zeile pro Vorschlag ist dein Copy-Paste-Befehl. Du kopierst sie in die Shell, wenn du den Vorschlag annehmen willst.
Beispielausgabe
$ apparat ner suggest KoNf3R3n --vault=recherche
Vault "Recherche" — NER suggestions for KoNf3R3n:
Known matches (link existing entity):
- "Maria Beispiel" (×1, PER) → V1StGXRa Maria Beispiel [person]
New entity proposals:
- "Anna Schmidt" (×1, PER)
apparat entity new person --title="Anna Schmidt"
- "Konferenz" (×1, MISC)
apparat entity new <type> --title="Konferenz"
Sprache
Die Sprache der Erkennung wird aus dem language-Feld der analysierten Entität abgeleitet (siehe Tags und Typen). Fehlt das Feld, greift die Standardsprache der Installation (in der Default-Konfiguration de). Out-of-the-box unterstützt Apparat Deutsch und Englisch; andere Sprachen erfordern ein angepasstes Image.
Self-Referenzen werden ignoriert
Wenn der Body einer Entität ihren eigenen Titel enthält — typisch bei Personennotizen mit # Maria Beispiel als Überschrift — würde der naive Vergleich die Entität sich selbst vorschlagen. Apparat filtert die analysierte Entität deshalb aus den Kandidatenlisten heraus. Eine andere Entität mit demselben Titel (zwei Personen gleichen Namens) bleibt sichtbar und erscheint als bekannter Treffer.
Edge-Cases
- Entität ohne Body. Apparat antwortet mit „has no body text — nothing to analyse." und Exit 0. Der Spracherkennungs-Dienst wird gar nicht erst angefragt.
- Asset statt Entität. Asset-NanoIDs werden mit Exit 1 abgelehnt — Vorschläge brauchen einen Body, den nur Entitäten haben.
- Unbekannte NanoID. Exit 1 mit der entsprechenden Fehlermeldung.
- Spracherkennungs-Dienst unerreichbar. Exit 1 mit dem Hinweis,
apparat ner pingzur Diagnose zu nutzen. Apparat schreibt nichts und unternimmt keinen weiteren Versuch. - Embedding-Dienst unerreichbar. Die Themen-Nachbarschafts-Treffer fallen aus; bekannte Treffer und neue Vorschläge werden trotzdem angezeigt. Apparat fällt schrittweise zurück, statt komplett auszufallen — Designprinzip aus den Schichten.
Schwellwerte tunen
Im Normalfall reichen die Standardwerte. Wenn du sie ändern willst:
| Umgebungsvariable | Wirkung | Standard |
|---|---|---|
APPARAT_NER_ENDPOINT |
Adresse des Spracherkennungs-Dienstes. | http://ner:8000 (im Container) |
APPARAT_NER_TIMEOUT |
Timeout pro Anfrage in Sekunden. | 10 |
APPARAT_NER_LEXICAL_THRESHOLD |
Wie weit darf eine Tippfehler-Variante vom existierenden Titel weg sein, um als naher Treffer zu gelten? | 0,25 |
APPARAT_NER_SIMILARITY_THRESHOLD |
Wie weit darf ein Themen-Nachbar vom existierenden Titel weg sein? | 0,35 |
Mehr Hintergrund zur Einstellung in der Ähnlichkeits-Übersicht.
Exit-Codes
| Code | Bedeutung |
|---|---|
| 0 | Lauf erfolgreich abgeschlossen. Auch wenn keine Namen erkannt wurden oder die Entität keinen Body hat — beides sind valide Zustände. |
| 1 | Vault- oder Entitäts-Auflösung gescheitert, Asset-NanoID statt Entität, Spracherkennungs-Dienst unerreichbar oder ein anderer korrigierbarer Fehler. |
Was du in der Ausgabe siehst, ist Vorschlag — Annahme oder Ablehnung passieren über entity link bzw. entity new. Vorschläge werden bei jedem Aufruf neu berechnet, nicht persistiert.