Skip to content

Comparaison par paires

Comparez des paires d'éléments pour l'évaluation de préférence et de qualité.

Comparaison par paires

La comparaison par paires permet aux annotateurs de comparer deux éléments côte à côte et d'indiquer leur préférence. Elle supporte deux modes :

  1. Mode binaire (par défaut) : Cliquez sur la tuile préférée (A ou B), avec bouton d'égalité optionnel
  2. Mode échelle : Utilisez un curseur pour évaluer à quel point une option est préférée par rapport à l'autre

Les cas d'utilisation courants incluent la comparaison de sorties de modèles, l'apprentissage de préférences pour le RLHF, la comparaison de qualité de traductions ou résumés, et les tests A/B.

Mode binaire

Le mode binaire affiche deux tuiles cliquables. Les annotateurs cliquent sur leur option préférée.

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: preference
    description: "Which response is better?"
    mode: binary
 
    # Data source - key in instance data containing items to compare
    items_key: "responses"
 
    # Display options
    show_labels: true
    labels:
      - "Response A"
      - "Response B"
 
    # Tie option
    allow_tie: true
    tie_label: "No preference"
 
    # Keyboard shortcuts
    sequential_key_binding: true
 
    # Validation
    label_requirement:
      required: true

Mode échelle

Le mode échelle affiche un curseur entre deux éléments, permettant aux annotateurs d'indiquer le degré de préférence.

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: preference_scale
    description: "Rate how much better A is than B"
    mode: scale
 
    items_key: "responses"
 
    labels:
      - "Response A"
      - "Response B"
 
    # Scale configuration
    scale:
      min: -3           # Negative = prefer left item (A)
      max: 3            # Positive = prefer right item (B)
      step: 1
      default: 0
 
      # Endpoint labels
      labels:
        min: "A is much better"
        max: "B is much better"
        center: "Equal"
 
    label_requirement:
      required: true

Format de données

Le schéma attend des données d'instance avec une liste d'éléments à comparer :

json
{"id": "1", "responses": ["Response A text", "Response B text"]}
{"id": "2", "responses": ["First option here", "Second option here"]}

La configuration items_key spécifie quel champ contient les éléments à comparer. Le champ doit contenir une liste d'au moins 2 éléments.

Raccourcis clavier

En mode binaire avec sequential_key_binding: true :

ToucheAction
1Sélectionner l'option A
2Sélectionner l'option B
0Sélectionner égalité/sans préférence (si allow_tie: true)

Le mode échelle utilise l'interaction par curseur.

Format de sortie

Mode binaire

json
{
  "preference": {
    "selection": "A"
  }
}

Avec égalité :

json
{
  "preference": {
    "selection": "tie"
  }
}

Mode échelle

Les valeurs négatives indiquent une préférence pour A, positives pour B, zéro pour l'égalité :

json
{
  "preference_scale": {
    "scale_value": "-2"
  }
}

Exemples

Comparaison binaire basique

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: quality
    description: "Which text is higher quality?"
    labels: ["Text A", "Text B"]
    allow_tie: true

Comparaison multi-aspects

Comparez sur plusieurs dimensions :

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: fluency
    description: "Which response is more fluent?"
    labels: ["Response A", "Response B"]
 
  - annotation_type: pairwise
    name: relevance
    description: "Which response is more relevant?"
    labels: ["Response A", "Response B"]
 
  - annotation_type: pairwise
    name: overall
    description: "Which response is better overall?"
    labels: ["Response A", "Response B"]
    allow_tie: true

Échelle de préférence avec plage personnalisée

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: sentiment_comparison
    description: "Compare the sentiment of these two statements"
    mode: scale
    labels: ["Statement A", "Statement B"]
    scale:
      min: -5
      max: 5
      step: 1
      labels:
        min: "A is much more positive"
        max: "B is much more positive"
        center: "Equal sentiment"

Collecte de préférences RLHF

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: overall
    description: "Overall, which response is better?"
    labels: ["Response A", "Response B"]
    allow_tie: true
    sequential_key_binding: true
 
  - annotation_type: multiselect
    name: criteria
    description: "What factors influenced your decision?"
    labels:
      - Accuracy
      - Helpfulness
      - Clarity
      - Safety
      - Completeness
 
  - annotation_type: text
    name: notes
    description: "Additional notes (optional)"
    textarea: true
    required: false

Style

L'annotation par paires utilise les variables CSS du système de thème. Ajoutez du CSS personnalisé pour la personnalisation des tuiles :

css
/* Make tiles taller */
.pairwise-tile {
  min-height: 200px;
}
 
/* Change selected tile highlight */
.pairwise-tile.selected {
  border-color: #10b981;
  background-color: rgba(16, 185, 129, 0.1);
}

Bonnes pratiques

  1. Utilisez des étiquettes claires et distinctes - les annotateurs devraient comprendre instantanément les options
  2. Considérez soigneusement les options d'égalité - parfois forcer un choix est approprié
  3. Utilisez les raccourcis clavier - accélère considérablement l'annotation
  4. Ajoutez des champs de justification - aide à comprendre le raisonnement et améliore la qualité des données
  5. Testez avec vos données - assurez-vous que l'affichage fonctionne bien avec la longueur de votre contenu

Pour aller plus loin

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