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 :
- Étiquetage des données : les instances de vos fichiers de données portent une catégorie
- Évaluation en formation : les questions de formation portent elles aussi une catégorie
- Suivi des performances : le système suit la justesse par catégorie pendant la formation
- Qualification : les utilisateurs qui atteignent le seuil de justesse sont « qualifiés »
- Attribution : chaque utilisateur ne reçoit que des instances de ses catégories qualifiées
Configuration
Configuration de base
# 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 nothingOptions de configuration
| Option | Type | Défaut | Description |
|---|---|---|---|
enabled | booléen | true | Active ou désactive l'attribution par catégorie |
qualification.source | chaîne | "training" | Source : "training", "prestudy" ou "both" |
qualification.threshold | flottant | 0.7 | Justesse minimale (0.0-1.0) pour se qualifier |
qualification.min_questions | entier | 1 | Nombre minimal de questions par catégorie |
fallback | chaîne | "uncategorized" | Comportement quand l'utilisateur ne se qualifie pas |
Options de repli
uncategorized: attribuer les instances sans catégorierandom: attribuer au hasard parmi les instances restantesnone: n'attribuer aucune instance
Format des données
Données des instances
Ajoutez le champ de catégorie à vos fichiers de données :
{"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 :
{
"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 :
- Le système enregistre la catégorie de chaque question
- 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 :
- La justesse est calculée pour chaque catégorie
- Les catégories qui atteignent à la fois le seuil ET le nombre minimal de questions sont ajoutées aux « catégories qualifiées »
- Les qualifications restent valables pour la session
Exemple
Avec un seuil de 0.7 (70 %) et min_questions à 2 :
| Catégorie | Questions | Correctes | Justesse | Qualifié ? |
|---|---|---|---|---|
| Économie | 3 | 3 | 100 % | Oui |
| Science | 2 | 1 | 50 % | Non (sous le seuil) |
| Sport | 1 | 1 | 100 % | 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 :
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.1Fonctionnement du mode dynamique
- État initial : tous les annotateurs démarrent avec une expertise neutre (0.5) dans toutes les catégories
- Attribution probabiliste : plus l'expertise est élevée dans une catégorie, plus la probabilité d'attribution l'est aussi
- Traitement en arrière-plan : le consensus est calculé périodiquement et les scores d'expertise sont mis à jour
- Mise à jour de l'expertise : les scores montent quand l'annotateur rejoint le consensus, et descendent quand il s'en écarte
Options de configuration
| Option | Type | Défaut | Description |
|---|---|---|---|
agreement_method | chaîne | "majority_vote" | Méthode de calcul du consensus |
min_annotations_for_consensus | entier | 2 | Nombre minimal d'annotations avant calcul |
learning_rate | flottant | 0.1 | Vitesse d'évolution des scores d'expertise |
base_probability | flottant | 0.1 | Probabilité minimale pour toute catégorie |
Référence de l'API
Méthodes de TrainingState
# 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
# 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
- Vérifiez que l'utilisateur a bien des catégories qualifiées (regardez ses résultats de formation)
- Reste-t-il des instances non annotées dans ces catégories ?
- Le paramètre
fallbackest-il réglé correctement ?
Les catégories ne sont pas suivies
- Vérifiez que
category_keyest défini dansitem_properties - Vérifiez que les instances de formation ont bien le champ
category - Vérifiez que
category_assignment.enabledvauttrue
Pour aller plus loin
- Attribution des tâches - Stratégies d'attribution générales
- Phase de formation - Configuration de la formation
- Contrôle de la qualité - Contrôles d'attention et étalons
Pour les détails d'implémentation, consultez la documentation source.