Skip to content

Phase de formation

Créez des phases de formation et de qualification dans Potato avec des questions d'exercice, des réponses étalons et des seuils de réussite pour certifier les annotateurs avant la tâche principale.

Potato 2.0 propose une phase de formation facultative qui permet de qualifier les annotateurs avant qu'ils n'abordent la tâche d'annotation principale. Les annotateurs répondent à des questions d'exercice dont la bonne réponse est connue et reçoivent un retour sur leurs résultats.

Comment la phase de formation filtre les annotateurs — s'exercer sur des éléments dont la réponse est connue ; seuls les annotateurs qualifiés accèdent à la vraie tâcheComment la phase de formation filtre les annotateurs

Cas d'usage

  • Vérifier que les annotateurs ont compris la tâche
  • Écarter les annotateurs peu fiables
  • Proposer un exercice guidé avant les vraies annotations
  • Recueillir des mesures de qualité de référence
  • Enseigner les consignes d'annotation par l'exemple

Fonctionnement

  1. Les annotateurs répondent à une série de questions de formation
  2. Ils reçoivent un retour immédiat sur chaque réponse
  3. La progression est suivie par rapport aux critères de réussite
  4. Seuls les annotateurs qui réussissent accèdent à la tâche principale

Configuration

Configuration de base

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment  # Which annotation scheme to train
 
    # Passing criteria
    passing_criteria:
      min_correct: 8  # Must get at least 8 correct
      total_questions: 10

Configuration complète

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment
 
    passing_criteria:
      # Different criteria options (choose one or combine)
      min_correct: 8
      require_all_correct: false
      max_mistakes: 3
      max_mistakes_per_question: 2
 
    # Allow retries
    retries:
      enabled: true
      max_retries: 3
 
    # Show explanations for incorrect answers
    show_explanations: true
 
    # Randomize question order
    randomize: true

Critères de réussite

Vous pouvez définir différents critères pour valider la phase de formation :

Nombre minimal de bonnes réponses

yaml
passing_criteria:
  min_correct: 8
  total_questions: 10

L'annotateur doit répondre correctement à au moins 8 questions sur 10.

Toutes les réponses correctes

yaml
passing_criteria:
  require_all_correct: true

L'annotateur doit répondre correctement à toutes les questions pour réussir.

Nombre maximal d'erreurs

yaml
passing_criteria:
  max_mistakes: 3

L'annotateur est disqualifié après 3 erreurs au total.

Nombre maximal d'erreurs par question

yaml
passing_criteria:
  max_mistakes_per_question: 2

L'annotateur est disqualifié après 2 erreurs sur une même question.

Critères combinés

yaml
passing_criteria:
  min_correct: 8
  max_mistakes_per_question: 3

Il faut 8 bonnes réponses ET ne pas se tromper plus de 3 fois sur une même question.

Format des données de formation

Les données de formation doivent contenir les bonnes réponses et, éventuellement, des explications :

json
[
  {
    "id": "train_1",
    "text": "I absolutely love this product! Best purchase ever!",
    "correct_answers": {
      "sentiment": "Positive"
    },
    "explanation": "This text expresses strong positive sentiment with words like 'love' and 'best'."
  },
  {
    "id": "train_2",
    "text": "This is the worst service I've ever experienced.",
    "correct_answers": {
      "sentiment": "Negative"
    },
    "explanation": "The words 'worst' and the overall complaint indicate negative sentiment."
  },
  {
    "id": "train_3",
    "text": "The package arrived on time.",
    "correct_answers": {
      "sentiment": "Neutral"
    },
    "explanation": "This is a factual statement without emotional indicators."
  }
]

Formation sur plusieurs schémas

Pour les tâches comportant plusieurs schémas d'annotation :

json
{
  "id": "train_1",
  "text": "Apple announced new iPhone features yesterday.",
  "correct_answers": {
    "sentiment": "Neutral",
    "topic": "Technology"
  },
  "explanation": {
    "sentiment": "This is a factual news statement.",
    "topic": "The text discusses Apple and iPhone, which are tech topics."
  }
}

Expérience utilisateur

Déroulement de la formation

  1. L'utilisateur voit un indicateur « Phase de formation »
  2. La question s'affiche avec le formulaire d'annotation
  3. L'utilisateur soumet sa réponse
  4. Le retour est affiché immédiatement :
    • Bonne réponse : coche verte, passage à la suivante
    • Mauvaise réponse : croix rouge, explication affichée, possibilité de réessayer

Affichage du retour

Quand un annotateur se trompe :

  • La bonne réponse est mise en évidence
  • L'explication fournie est affichée
  • Un bouton pour réessayer apparaît (si les nouvelles tentatives sont activées)
  • La progression vers les critères de réussite est affichée

Suivi côté administration

Suivez les résultats de la formation dans le tableau de bord d'administration :

  • Taux d'achèvement
  • Nombre moyen de bonnes réponses
  • Taux de réussite et d'échec
  • Temps passé sur la formation
  • Justesse par question

Accès via les points de terminaison de l'API /admin :

text
GET /api/admin/training/stats
GET /api/admin/training/user/{user_id}

Exemple : formation à l'analyse de sentiment

yaml
task_name: "Sentiment Analysis"
task_dir: "."
port: 8000
 
# Main annotation data
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
 
# Training phase configuration
phases:
  training:
 
 
 
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

Exemple : formation à la reconnaissance d'entités nommées

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - Person
      - Organization
      - Location
      - Date
 
phases:
  training:
 
 

Données de formation pour l'annotation d'empans :

json
{
  "id": "train_1",
  "text": "Tim Cook announced that Apple will open a new store in New York on March 15.",
  "correct_answers": {
    "entities": [
      {"start": 0, "end": 8, "label": "Person"},
      {"start": 24, "end": 29, "label": "Organization"},
      {"start": 54, "end": 62, "label": "Location"},
      {"start": 66, "end": 74, "label": "Date"}
    ]
  },
  "explanation": "Tim Cook is a Person, Apple is an Organization, New York is a Location, and March 15 is a Date."
}

Bonnes pratiques

1. Commencer simple

Commencez par des exemples francs avant d'introduire les cas limites :

json
[
  {"text": "I love this!", "correct_answers": {"sentiment": "Positive"}},
  {"text": "I hate this!", "correct_answers": {"sentiment": "Negative"}},
  {"text": "It arrived yesterday.", "correct_answers": {"sentiment": "Neutral"}}
]

2. Couvrir toutes les étiquettes

Veillez à ce que la formation contienne des exemples de chaque étiquette possible :

json
[
  {"correct_answers": {"sentiment": "Positive"}},
  {"correct_answers": {"sentiment": "Negative"}},
  {"correct_answers": {"sentiment": "Neutral"}}
]

3. Rédiger des explications claires

Les explications doivent enseigner les consignes d'annotation :

json
{
  "explanation": "While this text mentions a problem, the overall tone is constructive and the reviewer expresses satisfaction with the resolution. This makes it Positive rather than Negative."
}

4. Fixer des critères raisonnables

N'exigez pas la perfection sans raison :

yaml
# Too strict - may lose good annotators
passing_criteria:
  require_all_correct: true
 
# Better - allows for learning
passing_criteria:
  min_correct: 8
  total_questions: 10

5. Inclure des cas limites

Ajoutez des exemples délicats pour préparer les annotateurs :

json
{
  "text": "Not bad at all, I guess it could be worse.",
  "correct_answers": {"sentiment": "Neutral"},
  "explanation": "Despite negative words like 'not bad' and 'worse', this is actually a lukewarm endorsement - neutral rather than positive or negative."
}

Intégration aux flux de travail

La formation s'intègre aux flux de travail multi-phases :

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
 
  annotation:
    # Main task - always enabled
    enabled: true
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

Performances

  • Les données de formation sont chargées au démarrage
  • La progression est conservée en mémoire, par session
  • L'impact sur les performances de l'annotation principale est négligeable
  • Pour une formation complexe, envisagez de la répartir sur plusieurs phases

Pour aller plus loin

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