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?

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ß-/Klein­schreibung 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:

  1. Tippfehler-Erkennung. Magnos Kober gegen ein bestehendes Magnus Kober ist einen einzelnen Buchstaben­tausch entfernt — der Treffer landet hier.
  2. Themen-Nachbarschaft. WCAG 2.2 gegen ein bestehendes WCAG-Kontrastregeln lä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äts­vorschläge

Weder exakter noch ähnlicher Treffer — Apparat schlägt vor, eine neue Entität anzulegen, mit einem aus der Sprach­erkennung abgeleiteten Typ-Vorschlag (PER/PERSONperson, LOC/GPEplace, ORGorganization). 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 Standard­sprache 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 Personen­notizen 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

Schwellwerte tunen

Im Normalfall reichen die Standard­werte. Wenn du sie ändern willst:

Umgebungs­variable Wirkung Standard
APPARAT_NER_ENDPOINT Adresse des Sprach­erkennungs-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, Sprach­erkennungs-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.