Skip to content
Cette page n'est pas encore disponible dans votre langue. La version anglaise est affichée.

Span Linking

Crea relazioni tipizzate tra span di testo annotati.

Annotazione Span Linking

Novità nella v2.1.0

Lo span linking consente agli annotatori di creare relazioni tipizzate tra span (segmenti di testo) già annotati. Questo è utile per i compiti di estrazione delle relazioni in cui è necessario identificare come le entità si relazionano tra loro, come "PERSON works_for ORGANIZATION" o "PERSON collaborates_with PERSON".

Panoramica

La funzionalità di span linking fornisce:

  • Relazioni tipizzate: Definisci più tipi di link con colori e vincoli diversi
  • Link diretti e non diretti: Supporto per relazioni sia direzionali che simmetriche
  • Link N-ari: Crea link tra più span (non solo coppie)
  • Visualizzazione ad arco: Visualizza le relazioni come archi colorati sopra il testo
  • Vincoli sulle etichette: Limita quali etichette span possono essere sorgenti o destinazioni

Configurazione

Per usare lo span linking, hai bisogno di due schemi di annotazione:

  1. Uno schema span per annotare le entità
  2. Uno schema span_link per annotare le relazioni
yaml
annotation_schemes:
  # First, define the span schema for named entities
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - name: "PERSON"
        color: "#3b82f6"
      - name: "ORGANIZATION"
        color: "#22c55e"
      - name: "LOCATION"
        color: "#f59e0b"
    sequential_key_binding: true
 
  # Then, define the span_link schema for relationships
  - annotation_type: span_link
    name: relations
    description: "Annotate relationships between entities"
    span_schema: entities  # References the span schema above
    link_types:
      - name: "WORKS_FOR"
        directed: true
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["ORGANIZATION"]
        color: "#dc2626"
      - name: "COLLABORATES_WITH"
        directed: false
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["PERSON"]
        color: "#06b6d4"

Opzioni di configurazione

Campi obbligatori

CampoDescrizione
annotation_typeDeve essere "span_link"
nameIdentificatore univoco per lo schema
descriptionDescrizione mostrata agli annotatori
span_schemaNome dello schema di annotazione span da collegare
link_typesArray di definizioni dei tipi di link
CampoTipoDescrizione
namestringObbligatorio. Nome/etichetta per il tipo di link
directedbooleanSe il link è direzionale. Predefinito: false
colorstringCodice colore esadecimale per il link
allowed_source_labelsarrayEtichette span che possono essere la sorgente
allowed_target_labelsarrayEtichette span che possono essere la destinazione
max_spansintegerNumero massimo di span in questo tipo di link (per link N-ari)

Opzioni di visualizzazione

yaml
visual_display:
  enabled: true        # Show arc visualization
  arc_position: "above"  # Position of arcs
  show_labels: true    # Show link type labels on arcs

Utilizzo

Creazione di span

  1. Prima, annota il testo selezionando le etichette span ed evidenziando il testo
  2. Ogni span evidenziato diventa disponibile per il collegamento
  1. Seleziona un tipo di link tra le opzioni disponibili
  2. Fai clic sugli span per aggiungerli al link corrente (gli span selezionati vengono evidenziati)
  3. Fai clic su "Crea link" per finalizzare il link
  4. Per i link diretti, il primo span selezionato è la sorgente e l'ultimo è la destinazione
  • I link creati appaiono nella sezione "Link esistenti"
  • Se la visualizzazione è abilitata, gli archi vengono disegnati sopra il testo collegando gli span
  • Gli archi sono codificati a colori per tipo di link
  • Fai clic sul pulsante elimina (x) accanto a qualsiasi link nella sezione "Link esistenti"

Formato dei dati

Dati di input

Dati di testo standard con un campo ID e testo:

json
[
  {
    "id": "item_1",
    "text": "John Smith works at Google as a senior engineer."
  }
]

Formato di output

Le annotazioni includono sia le annotazioni span che le annotazioni di link:

json
{
  "id": "item_1",
  "text": "John Smith works at Google as a senior engineer.",
  "entities": [
    {"start": 0, "end": 10, "label": "PERSON", "text": "John Smith"},
    {"start": 20, "end": 26, "label": "ORGANIZATION", "text": "Google"}
  ],
  "relations": [
    {
      "link_type": "WORKS_FOR",
      "span_ids": ["span_abc123", "span_def456"],
      "direction": "directed"
    }
  ]
}

Vincoli sulle etichette

Limita quali etichette span possono partecipare a ogni tipo di link:

yaml
link_types:
  - name: "WORKS_FOR"
    directed: true
    allowed_source_labels: ["PERSON"]      # Only PERSON can be source
    allowed_target_labels: ["ORGANIZATION"]  # Only ORGANIZATION can be target

Quando i vincoli vengono violati, l'interfaccia mostra un messaggio di errore e impedisce la creazione del link.

Per impostazione predefinita, i link collegano esattamente 2 span. Per relazioni che coinvolgono più entità:

yaml
link_types:
  - name: "MEETING"
    directed: false
    max_spans: 5  # Allow up to 5 participants
    allowed_source_labels: ["PERSON"]
    allowed_target_labels: ["PERSON"]

Esempio

Consulta l'esempio funzionante completo in:

  • Config: project-hub/simple_examples/simple-span-linking/config.yaml
  • Dati: project-hub/simple_examples/simple-span-linking/data.json

Per eseguire:

bash
cd project-hub/simple_examples
python ../../potato/flask_server.py start simple-span-linking/config.yaml -p 9001

Suggerimenti

  1. Annota prima gli span: Assicurati di creare le annotazioni span prima di tentare di collegarli
  2. Usa i colori in modo efficace: Scegli colori distinti per diversi tipi di link
  3. Considera la direzione: Usa link diretti quando la relazione ha una direzione chiara
  4. Scorciatoie da tastiera: Le etichette span supportano scorciatoie da tastiera (1, 2, 3...) per un'annotazione più rapida

Ulteriori letture

Per i dettagli di implementazione, consulta la documentazione sorgente.