Skip to content

Comparación por Pares

Compara pares de elementos para evaluación de preferencia y calidad.

Comparación por Pares

La comparación por pares permite a los anotadores comparar dos elementos lado a lado e indicar su preferencia. Soporta dos modos:

  1. Modo Binario (predeterminado): Haz clic en el mosaico preferido (A o B), con botón de empate opcional
  2. Modo Escala: Usa un deslizador para calificar cuánto se prefiere una opción sobre la otra

Los casos de uso comunes incluyen comparar salidas de modelos, aprendizaje de preferencias para RLHF, comparación de calidad de traducciones o resúmenes, y pruebas A/B.

Modo Binario

El modo binario muestra dos mosaicos en los que se puede hacer clic. Los anotadores hacen clic en su opción preferida.

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

Modo Escala

El modo escala muestra un deslizador entre dos elementos, permitiendo a los anotadores indicar el grado de preferencia.

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

Formato de Datos

El esquema espera datos de instancia con una lista de elementos para comparar:

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

La configuración items_key especifica qué campo contiene los elementos a comparar. El campo debe contener una lista con al menos 2 elementos.

Atajos de Teclado

En modo binario con sequential_key_binding: true:

TeclaAcción
1Seleccionar opción A
2Seleccionar opción B
0Seleccionar empate/sin preferencia (si allow_tie: true)

El modo escala usa interacción con deslizador.

Formato de Salida

Modo Binario

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

Con empate:

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

Modo Escala

Los valores negativos indican preferencia por A, positivos por B, cero para igual:

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

Ejemplos

Comparación Binaria Básica

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

Comparación Multi-Aspecto

Compara en múltiples dimensiones:

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

Escala de Preferencia con Rango Personalizado

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"

Recopilación de Preferencias 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

Estilos

La anotación por pares usa variables CSS del sistema de temas. Añade CSS personalizado para personalizar los mosaicos:

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);
}

Mejores Prácticas

  1. Usa etiquetas claras y distintas - los anotadores deben entender las opciones instantáneamente
  2. Considera las opciones de empate cuidadosamente - a veces forzar una elección es apropiado
  3. Usa atajos de teclado - acelera significativamente la anotación
  4. Añade campos de justificación - ayuda a entender el razonamiento y mejora la calidad de los datos
  5. Prueba con tus datos - asegúrate de que la visualización funcione bien con la longitud de tu contenido

Lectura Adicional

Para detalles de implementación, consulta la documentación fuente.