Skip to content

Comparaison par paires

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

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.