Skip to content

Liage de spans

Créez des relations typées et orientées entre deux spans de texte annotés dans Potato. Configurez types de liens, couleurs et liage bidirectionnel pour les tâches d'extraction de relations.

Nouveau en v2.1.0

Le liage de spans permet aux annotateurs de créer des relations typées entre des spans (segments de texte) déjà annotés. C'est utile pour les tâches d'extraction de relations où il faut identifier comment les entités se rapportent les unes aux autres, par exemple « PERSON works_for ORGANIZATION » ou « PERSON collaborates_with PERSON ».

Vue d'ensemble

La fonctionnalité de liage de spans offre :

  • Relations typées : définissez plusieurs types de liens avec des couleurs et des contraintes différentes
  • Liens orientés et non orientés : prise en charge des relations directionnelles et symétriques
  • Liens n-aires : créez des liens entre plusieurs spans (pas seulement des paires)
  • Affichage en arcs : voyez les relations dessinées en arcs colorés au-dessus du texte
  • Contraintes d'étiquettes : restreignez les étiquettes de spans pouvant servir de source ou de cible

Configuration

Pour utiliser le liage de spans, il vous faut deux schémas d'annotation :

  1. Un schéma span pour annoter les entités
  2. Un schéma span_link pour annoter les relations
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"

Options de configuration

Champs obligatoires

ChampDescription
annotation_typeDoit être "span_link"
nameIdentifiant unique du schéma
descriptionDescription affichée aux annotateurs
span_schemaNom du schéma d'annotation de spans à lier
link_typesTableau des définitions de types de liens

Options de type de lien

ChampTypeDescription
namestringObligatoire. Nom/libellé du type de lien
directedbooleanIndique si le lien est orienté. Défaut : false
colorstringCode couleur hexadécimal du lien
allowed_source_labelsarrayÉtiquettes de spans pouvant servir de source
allowed_target_labelsarrayÉtiquettes de spans pouvant servir de cible
max_spansintegerNombre maximum de spans pour ce type de lien (liens n-aires)

Options d'affichage visuel

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

Utilisation

Créer des spans

  1. Annotez d'abord le texte en choisissant des étiquettes de spans et en surlignant le texte
  2. Chaque span surligné devient disponible pour le liage

Créer des liens

  1. Choisissez un type de lien parmi les options proposées
  2. Cliquez sur les spans pour les ajouter au lien en cours (les spans retenus sont surlignés)
  3. Cliquez sur « Create Link » pour finaliser le lien
  4. Pour les liens orientés, le premier span retenu est la source et le dernier la cible

Consulter les liens

  • Les liens créés apparaissent dans la section « Existing Links »
  • Si l'affichage visuel est activé, des arcs sont tracés au-dessus du texte pour relier les spans liés
  • Les arcs sont colorés selon le type de lien

Supprimer des liens

  • Cliquez sur le bouton de suppression (x) à côté d'un lien dans la section « Existing Links »

Format de données

Données d'entrée

Données textuelles standard avec un champ identifiant et un champ texte :

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

Format de sortie

Les annotations contiennent à la fois les annotations de spans et les annotations de liens :

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"
    }
  ]
}

Contraintes d'étiquettes

Restreignez les étiquettes de spans autorisées à participer à chaque type de lien :

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

Quand une contrainte est violée, l'interface affiche un message d'erreur et empêche la création du lien.

Liens n-aires

Par défaut, un lien relie exactement 2 spans. Pour des relations impliquant davantage d'entités :

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

Exemple

Voir l'exemple complet et fonctionnel :

  • Configuration : project-hub/simple_examples/simple-span-linking/config.yaml
  • Données : project-hub/simple_examples/simple-span-linking/data.json

Pour l'exécuter :

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

Conseils

  1. Annotez les spans d'abord : créez bien les annotations de spans avant de tenter de les lier
  2. Servez-vous des couleurs : choisissez des couleurs distinctes pour les différents types de liens
  3. Réfléchissez à l'orientation : utilisez des liens orientés quand la relation a une direction claire
  4. Raccourcis clavier : les étiquettes de spans acceptent des raccourcis clavier (1, 2, 3...) pour annoter plus vite

Pour aller plus loin

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