Skip to content

Ordonnancement par diversité

Réordonnez les instances d'annotation dans Potato avec un score de diversité fondé sur les plongements, pour couvrir tout le jeu de données et limiter la redondance dans les grands corpus non étiquetés.

L'ordonnancement par diversité s'appuie sur des plongements sentence-transformer pour regrouper les éléments proches, puis tire les éléments à tour de rôle dans des grappes différentes. Les annotateurs voient ainsi des contenus variés plutôt qu'une suite d'éléments semblables.

Intérêt

  • Moins de fatigue chez les annotateurs, qui échappent aux contenus répétitifs
  • Meilleure qualité d'annotation grâce à la variété des contextes
  • Couverture plus rapide de l'ensemble de l'espace thématique

Démarrage rapide

yaml
assignment_strategy: diversity_clustering
 
diversity_ordering:
  enabled: true
  prefill_count: 100

Fonctionnement

  1. Démarrage : les N premiers éléments sont plongés avec sentence-transformers puis regroupés par k-moyennes
  2. Attribution : les éléments sont tirés à tour de rôle dans les différentes grappes
  3. Annotation : les nouveaux éléments sont plongés de façon asynchrone au fur et à mesure qu'ils sont annotés
  4. Regroupement : quand un utilisateur a vu au moins un élément de chaque grappe, le système reconstruit les grappes

Configuration

yaml
diversity_ordering:
  enabled: true
 
  # Sentence-transformer model
  model_name: "all-MiniLM-L6-v2"
 
  # Clustering parameters
  num_clusters: 10
  items_per_cluster: 20
  auto_clusters: true           # Auto-calculate based on data size
 
  # Prefill on startup
  prefill_count: 100
  batch_size: 32
 
  # Re-clustering behavior
  recluster_threshold: 1.0      # Recluster when all clusters sampled
 
  # Order preservation
  preserve_visited: true
 
  # AI integration
  trigger_ai_prefetch: true

Référence de configuration

OptionTypeDéfautDescription
enabledbooléenfalseActive l'ordonnancement par diversité
model_namechaîne"all-MiniLM-L6-v2"Modèle sentence-transformers
num_clustersentier10Nombre de grappes (si auto_clusters=false)
items_per_clusterentier20Taille de grappe visée (si auto_clusters=true)
auto_clustersbooléentrueCalcule automatiquement le nombre de grappes
prefill_countentier100Éléments à plonger au démarrage
batch_sizeentier32Taille de lot pour le calcul des plongements
recluster_thresholdflottant1.0Fraction des grappes à échantillonner avant regroupement
preserve_visitedbooléentrueLaisse en place les éléments déjà vus ou passés
trigger_ai_prefetchbooléentrueDéclenche le cache IA après réordonnancement

Prérequis

bash
pip install sentence-transformers scikit-learn

Ce sont des dépendances optionnelles. À défaut, la fonctionnalité est désactivée avec un avertissement.

Performances

  • Démarrage : environ 10 secondes pour 100 éléments, environ 30 secondes pour 500 éléments (au premier lancement ; ensuite en cache)
  • Mémoire : environ 1,5 Ko par élément (all-MiniLM-L6-v2), environ 15 Mo pour 10 000 éléments
  • Cache : les plongements sont écrits sur disque dans .diversity_cache/

Articulation avec les autres fonctionnalités

  • Support IA : avec trigger_ai_prefetch: true, les indices IA des éléments réordonnés sont préchargés automatiquement
  • Apprentissage actif : les deux se combinent en commençant par le regroupement par diversité pour la couverture initiale, puis en basculant sur l'apprentissage actif
  • Conservation de l'ordre : avec preserve_visited: true, les éléments déjà vus gardent leur position

Exemple complet

yaml
annotation_task_name: "Diversity Ordering Test"
 
assignment_strategy: diversity_clustering
 
diversity_ordering:
  enabled: true
  model_name: "all-MiniLM-L6-v2"
  num_clusters: 5
  auto_clusters: false
  prefill_count: 100
  batch_size: 16
  recluster_threshold: 1.0
  preserve_visited: true
 
annotation_schemes:
  - annotation_type: radio
    name: topic
    description: "What is the main topic of this text?"
    labels:
      - name: Sports
      - name: Technology
      - name: Food
      - name: Travel
      - name: Health

Pour aller plus loin

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