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 :
- Un schéma
spanpour annoter les entités - Un schéma
span_linkpour annoter les relations
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
| Champ | Description |
|---|---|
annotation_type | Doit être "span_link" |
name | Identifiant unique du schéma |
description | Description affichée aux annotateurs |
span_schema | Nom du schéma d'annotation de spans à lier |
link_types | Tableau des définitions de types de liens |
Options de type de lien
| Champ | Type | Description |
|---|---|---|
name | string | Obligatoire. Nom/libellé du type de lien |
directed | boolean | Indique si le lien est orienté. Défaut : false |
color | string | Code couleur hexadécimal du lien |
allowed_source_labels | array | Étiquettes de spans pouvant servir de source |
allowed_target_labels | array | Étiquettes de spans pouvant servir de cible |
max_spans | integer | Nombre maximum de spans pour ce type de lien (liens n-aires) |
Options d'affichage visuel
visual_display:
enabled: true # Show arc visualization
arc_position: "above" # Position of arcs
show_labels: true # Show link type labels on arcsUtilisation
Créer des spans
- Annotez d'abord le texte en choisissant des étiquettes de spans et en surlignant le texte
- Chaque span surligné devient disponible pour le liage
Créer des liens
- Choisissez un type de lien parmi les options proposées
- Cliquez sur les spans pour les ajouter au lien en cours (les spans retenus sont surlignés)
- Cliquez sur « Create Link » pour finaliser le lien
- 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 :
[
{
"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 :
{
"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 :
link_types:
- name: "WORKS_FOR"
directed: true
allowed_source_labels: ["PERSON"] # Only PERSON can be source
allowed_target_labels: ["ORGANIZATION"] # Only ORGANIZATION can be targetQuand 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 :
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 :
cd project-hub/simple_examples
python ../../potato/flask_server.py start simple-span-linking/config.yaml -p 9001Conseils
- Annotez les spans d'abord : créez bien les annotations de spans avant de tenter de les lier
- Servez-vous des couleurs : choisissez des couleurs distinctes pour les différents types de liens
- Réfléchissez à l'orientation : utilisez des liens orientés quand la relation a une direction claire
- Raccourcis clavier : les étiquettes de spans acceptent des raccourcis clavier (1, 2, 3...) pour annoter plus vite
Pour aller plus loin
- Annotation de spans - Annotation de spans de base
- Configuration de l'interface - Personnalisez couleurs et affichage
Pour les détails d'implémentation, voir la documentation source.