Skip to content

Attribution par catégorie

Orientez les instances d'annotation vers les annotateurs qualifiés en fonction de leur expertise démontrée dans Potato. Configurez des règles d'attribution par catégorie et un filtrage par rôle.

L'attribution par catégorie associe automatiquement les annotateurs aux instances d'annotation selon l'expertise qu'ils ont démontrée. Les annotateurs sont évalués pendant les phases de formation sur des questions propres à chaque catégorie et ne reçoivent que des instances des catégories pour lesquelles ils se sont qualifiés.

Vue d'ensemble

Le système d'attribution par catégorie fonctionne ainsi :

  1. Étiquetage des données : les instances de vos fichiers de données portent une catégorie
  2. Évaluation en formation : les questions de formation portent elles aussi une catégorie
  3. Suivi des performances : le système suit la justesse par catégorie pendant la formation
  4. Qualification : les utilisateurs qui atteignent le seuil de justesse sont « qualifiés »
  5. Attribution : chaque utilisateur ne reçoit que des instances de ses catégories qualifiées

Configuration

Configuration de base

yaml
# Enable category-based assignment strategy
assignment_strategy: category_based
 
# Configure category key in item_properties
item_properties:
  id_key: id
  text_key: text
  category_key: category  # Field containing category
 
# Category assignment settings
category_assignment:
  enabled: true
  qualification:
    source: training      # Where qualification comes from
    threshold: 0.7        # 70% accuracy required
    min_questions: 2      # At least 2 questions per category
  fallback: uncategorized # What to do if user qualifies for nothing

Options de configuration

OptionTypeDéfautDescription
enabledbooléentrueActive ou désactive l'attribution par catégorie
qualification.sourcechaîne"training"Source : "training", "prestudy" ou "both"
qualification.thresholdflottant0.7Justesse minimale (0.0-1.0) pour se qualifier
qualification.min_questionsentier1Nombre minimal de questions par catégorie
fallbackchaîne"uncategorized"Comportement quand l'utilisateur ne se qualifie pas

Options de repli

  • uncategorized : attribuer les instances sans catégorie
  • random : attribuer au hasard parmi les instances restantes
  • none : n'attribuer aucune instance

Format des données

Données des instances

Ajoutez le champ de catégorie à vos fichiers de données :

json
{"id": "econ_001", "text": "Market analysis...", "category": "economics"}
{"id": "sci_001", "text": "Research findings...", "category": "science"}
{"id": "multi_001", "text": "Interdisciplinary...", "category": ["economics", "science"]}
{"id": "general_001", "text": "General content...", "category": null}

Données de formation

Les instances de formation doivent porter une catégorie :

json
{
  "training_instances": [
    {
      "id": "train_econ_1",
      "text": "Question about economic concepts...",
      "category": "economics",
      "correct_answers": {"topic": "Economics"},
      "explanation": "This is an economics topic because..."
    }
  ]
}

Fonctionnement de la qualification

Pendant la formation

Au fil des réponses aux questions de formation :

  1. Le système enregistre la catégorie de chaque question
  2. Pour chaque catégorie, il suit :
    • Le nombre total de questions traitées
    • Le nombre de bonnes réponses
    • La justesse (bonnes réponses / total)

À la fin de la formation

Quand un utilisateur valide la formation :

  1. La justesse est calculée pour chaque catégorie
  2. Les catégories qui atteignent à la fois le seuil ET le nombre minimal de questions sont ajoutées aux « catégories qualifiées »
  3. Les qualifications restent valables pour la session

Exemple

Avec un seuil de 0.7 (70 %) et min_questions à 2 :

CatégorieQuestionsCorrectesJustesseQualifié ?
Économie33100 %Oui
Science2150 %Non (sous le seuil)
Sport11100 %Non (sous min_questions)

L'utilisateur ne recevrait que les instances « Économie ».

Cas d'usage

Orientation vers les experts

Diriger les contenus spécialisés vers les annotateurs qualifiés :

  • Les textes médicaux vers les annotateurs ayant des connaissances médicales
  • Les documents juridiques vers ceux qui maîtrisent la terminologie du droit
  • Les contenus techniques vers ceux qui ont l'expertise correspondante

Contrôle de la qualité

Garantir la qualité en n'attribuant les contenus qu'à des personnes qualifiées :

  • Les annotateurs font la preuve de leur compétence avant de recevoir du vrai travail
  • Des seuils de qualité différents selon les types de contenu

Répartition de la charge

Répartir le travail selon l'expertise :

  • Les éléments les plus complexes vers les annotateurs experts
  • Les éléments généraux vers tous les annotateurs

Mode expertise dynamique

L'expertise dynamique permet une évaluation au fil de l'annotation, sans données de formation étiquetées à la main :

yaml
category_assignment:
  enabled: true
  dynamic:
    enabled: true
    agreement_method: majority_vote
    min_annotations_for_consensus: 2
    learning_rate: 0.1
    update_interval_seconds: 60
    base_probability: 0.1

Fonctionnement du mode dynamique

  1. État initial : tous les annotateurs démarrent avec une expertise neutre (0.5) dans toutes les catégories
  2. Attribution probabiliste : plus l'expertise est élevée dans une catégorie, plus la probabilité d'attribution l'est aussi
  3. Traitement en arrière-plan : le consensus est calculé périodiquement et les scores d'expertise sont mis à jour
  4. Mise à jour de l'expertise : les scores montent quand l'annotateur rejoint le consensus, et descendent quand il s'en écarte

Options de configuration

OptionTypeDéfautDescription
agreement_methodchaîne"majority_vote"Méthode de calcul du consensus
min_annotations_for_consensusentier2Nombre minimal d'annotations avant calcul
learning_rateflottant0.1Vitesse d'évolution des scores d'expertise
base_probabilityflottant0.1Probabilité minimale pour toute catégorie

Référence de l'API

Méthodes de TrainingState

python
# Record an answer for category tracking
training_state.record_category_answer(categories=['economics'], is_correct=True)
 
# Get score for a specific category
score = training_state.get_category_score('economics')
# Returns: {'correct': 3, 'total': 4, 'accuracy': 0.75}
 
# Get qualified categories based on threshold
qualified = training_state.get_qualified_categories(threshold=0.7, min_questions=2)

Méthodes de UserState

python
# Add a qualified category
user_state.add_qualified_category('economics', score=0.85)
 
# Check if user is qualified for a category
is_qualified = user_state.is_qualified_for_category('economics')
 
# Get all qualified categories
categories = user_state.get_qualified_categories()

Dépannage

Les utilisateurs ne reçoivent aucune instance

  1. Vérifiez que l'utilisateur a bien des catégories qualifiées (regardez ses résultats de formation)
  2. Reste-t-il des instances non annotées dans ces catégories ?
  3. Le paramètre fallback est-il réglé correctement ?

Les catégories ne sont pas suivies

  1. Vérifiez que category_key est défini dans item_properties
  2. Vérifiez que les instances de formation ont bien le champ category
  3. Vérifiez que category_assignment.enabled vaut true

Pour aller plus loin

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