Skip to content

Annotation d'événements

Créez des structures d'événements N-aires avec des déclencheurs et des arguments typés pour l'extraction d'information.

Annotation d'événements

L'annotation d'événements permet la création de structures d'événements N-aires pour les tâches d'extraction d'information. Les événements se composent d'un segment déclencheur (le mot ou la phrase indiquant l'événement) et de segments arguments (segments d'entités avec des rôles sémantiques typés).

Ce type d'annotation est couramment utilisé pour l'extraction d'information, la détection d'événements, l'étiquetage de rôles sémantiques et la construction de graphes de connaissances.

Configuration de base

L'annotation d'événements nécessite un schéma d'annotation de segments défini au préalable, qui fournit les segments d'entités utilisés comme déclencheurs et arguments.

yaml
annotation_schemes:
  # Step 1: Define entity spans
  - annotation_type: span
    name: entities
    description: "Label entities in the text"
    labels:
      - name: PERSON
        color: "#3b82f6"
      - name: ORGANIZATION
        color: "#10b981"
      - name: LOCATION
        color: "#f59e0b"
      - name: WEAPON
        color: "#ef4444"
      - name: EVENT_TRIGGER
        color: "#8b5cf6"
        tooltip: "Words indicating events"
 
  # Step 2: Define event types and arguments
  - annotation_type: event_annotation
    name: events
    description: "Annotate events with triggers and arguments"
    span_schema: entities
    event_types:
      - type: "ATTACK"
        color: "#dc2626"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "attacker"
            entity_types: ["PERSON", "ORGANIZATION"]
            required: true
          - role: "target"
            entity_types: ["PERSON", "ORGANIZATION", "LOCATION"]
            required: true
          - role: "weapon"
            entity_types: ["WEAPON"]
            required: false

Options de configuration

Types d'événements

Chaque type d'événement définit :

PropriétéTypeObligatoireDescription
typestringOuiNom du type d'événement (par ex. "ATTACK", "HIRE")
colorstringNonCouleur pour la visualisation (défaut : auto-attribuée)
trigger_labelslistNonÉtiquettes de segments autorisées comme déclencheurs (vide = tout segment)
argumentslistOuiListe des définitions d'arguments

Arguments

Chaque argument définit :

PropriétéTypeObligatoireDescription
rolestringOuiNom du rôle sémantique (par ex. "attacker", "target")
entity_typeslistNonÉtiquettes de segments autorisées pour ce rôle (vide = tout segment)
requiredbooleanNonSi cet argument doit être rempli (défaut : false)

Affichage visuel

yaml
visual_display:
  enabled: true           # Show arc visualization (default: true)
  arc_position: above     # Position of arcs: "above" (default)
  show_labels: true       # Show role labels on arcs (default: true)

Flux de travail d'utilisation

  1. Créer des segments d'entités : Annotez les segments d'entités avec l'outil d'annotation de segments (cliquez et glissez pour sélectionner du texte, puis choisissez une étiquette)
  2. Sélectionner le type d'événement : Cliquez sur un bouton de type d'événement (par ex. "ATTACK") pour entrer en mode de création d'événement
  3. Sélectionner le déclencheur : Cliquez sur un segment pour le définir comme déclencheur de l'événement. Si trigger_labels est configuré, seuls les segments avec des étiquettes correspondantes peuvent être sélectionnés
  4. Assigner les arguments : Pour chaque rôle d'argument, cliquez sur le bouton du rôle pour l'activer, puis cliquez sur un segment pour l'assigner. Les arguments obligatoires doivent être remplis avant que l'événement puisse être créé
  5. Créer l'événement : Une fois tous les arguments obligatoires remplis, cliquez sur "Créer l'événement" pour sauvegarder
  6. Voir les événements : Les événements créés apparaissent dans la section "Événements existants" avec leurs déclencheurs et arguments listés

Format de données

Entrée

L'annotation d'événements fonctionne avec tout format de données basé sur le texte :

json
[
  {
    "id": "event_1",
    "text": "John attacked the building with a rifle."
  }
]

Sortie

Les événements sont stockés avec la structure suivante :

json
{
  "event_annotations": [
    {
      "id": "event_abc123",
      "schema": "events",
      "event_type": "ATTACK",
      "trigger_span_id": "span_xyz789",
      "arguments": [
        {"role": "attacker", "span_id": "span_def456"},
        {"role": "target", "span_id": "span_ghi012"},
        {"role": "weapon", "span_id": "span_jkl345"}
      ],
      "properties": {
        "color": "#dc2626",
        "trigger_text": "attacked",
        "trigger_label": "EVENT_TRIGGER"
      }
    }
  ]
}

Affichage visuel

La visualisation en arc montre :

  • Un concentrateur (cercle plein) à la position du déclencheur
  • Des rayons (flèches) connectant à chaque argument
  • Des étiquettes de rôles sur chaque rayon
  • Les événements sont codés par couleur selon leur type

Les événements multiples sont empilés verticalement pour éviter les chevauchements.

Exemple complet

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Label entities in the text"
    labels:
      - name: PERSON
        color: "#3b82f6"
      - name: ORGANIZATION
        color: "#10b981"
      - name: LOCATION
        color: "#f59e0b"
      - name: WEAPON
        color: "#ef4444"
      - name: EVENT_TRIGGER
        color: "#8b5cf6"
 
  - annotation_type: event_annotation
    name: events
    description: "Annotate events"
    span_schema: entities
    event_types:
      - type: "ATTACK"
        color: "#dc2626"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "attacker"
            entity_types: ["PERSON", "ORGANIZATION"]
            required: true
          - role: "target"
            entity_types: ["PERSON", "ORGANIZATION", "LOCATION"]
            required: true
          - role: "weapon"
            entity_types: ["WEAPON"]
            required: false
 
      - type: "HIRE"
        color: "#2563eb"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "employer"
            entity_types: ["ORGANIZATION"]
            required: true
          - role: "employee"
            entity_types: ["PERSON"]
            required: true
 
      - type: "TRAVEL"
        color: "#059669"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "traveler"
            entity_types: ["PERSON"]
            required: true
          - role: "destination"
            entity_types: ["LOCATION"]
            required: true
          - role: "origin"
            entity_types: ["LOCATION"]
            required: false

Bonnes pratiques

  1. Utilisez des noms de types descriptifs - Choisissez des noms de types d'événements clairs et non ambigus qui reflètent la signification sémantique
  2. Contraignez les déclencheurs de manière appropriée - Utilisez trigger_labels pour limiter quels segments peuvent être des déclencheurs. Pour les événements basés sur des verbes, créez une étiquette "EVENT_TRIGGER" dédiée
  3. Équilibrez les arguments obligatoires et optionnels - Marquez les arguments principaux comme obligatoires, mais autorisez les arguments optionnels pour le contexte qui peut ne pas toujours être présent
  4. Utilisez les contraintes de types d'entités - Appliquez des contraintes sémantiques sur les arguments (par ex. un "attacker" devrait être une PERSON ou une ORGANIZATION)

Pour aller plus loin

Pour les détails d'implémentation, voir la documentation source.