Skip to content

Fase de Entrenamiento

Entrena y califica anotadores con preguntas de práctica antes de la tarea principal.

Fase de Entrenamiento

Potato 2.0 incluye una fase de entrenamiento opcional que ayuda a calificar a los anotadores antes de que comiencen la tarea principal de anotación. Los anotadores responden preguntas de práctica con respuestas correctas conocidas y reciben retroalimentación sobre su desempeño.

Casos de Uso

  • Asegurar que los anotadores entiendan la tarea
  • Filtrar anotadores de baja calidad
  • Proporcionar práctica guiada antes de las anotaciones reales
  • Recopilar métricas de calidad base
  • Enseñar directrices de anotación a través de ejemplos

Cómo Funciona

  1. Los anotadores completan un conjunto de preguntas de entrenamiento
  2. Reciben retroalimentación inmediata sobre cada respuesta
  3. Se rastrea el progreso contra los criterios de aprobación
  4. Solo los anotadores que aprueban pueden continuar a la tarea principal

Configuración

Configuración Básica

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment  # Which annotation scheme to train
 
    # Passing criteria
    passing_criteria:
      min_correct: 8  # Must get at least 8 correct
      total_questions: 10

Configuración Completa

yaml
phases:
  training:
    enabled: true
    data_file: "data/training_data.json"
    schema_name: sentiment
 
    passing_criteria:
      # Different criteria options (choose one or combine)
      min_correct: 8
      require_all_correct: false
      max_mistakes: 3
      max_mistakes_per_question: 2
 
    # Allow retries
    retries:
      enabled: true
      max_retries: 3
 
    # Show explanations for incorrect answers
    show_explanations: true
 
    # Randomize question order
    randomize: true

Criterios de Aprobación

Puedes establecer varios criterios para aprobar la fase de entrenamiento:

Mínimo Correcto

yaml
passing_criteria:
  min_correct: 8
  total_questions: 10

El anotador debe responder correctamente al menos 8 de 10 preguntas.

Requerir Todo Correcto

yaml
passing_criteria:
  require_all_correct: true

El anotador debe responder correctamente cada pregunta para aprobar.

Máximo de Errores

yaml
passing_criteria:
  max_mistakes: 3

El anotador es descalificado después de 3 errores totales.

Máximo de Errores por Pregunta

yaml
passing_criteria:
  max_mistakes_per_question: 2

El anotador es descalificado después de 2 errores en cualquier pregunta individual.

Criterios Combinados

yaml
passing_criteria:
  min_correct: 8
  max_mistakes_per_question: 3

Debe obtener 8 correctas Y no fallar ninguna pregunta individual más de 3 veces.

Formato de Datos de Entrenamiento

Los datos de entrenamiento deben incluir respuestas correctas y explicaciones opcionales:

json
[
  {
    "id": "train_1",
    "text": "I absolutely love this product! Best purchase ever!",
    "correct_answers": {
      "sentiment": "Positive"
    },
    "explanation": "This text expresses strong positive sentiment with words like 'love' and 'best'."
  },
  {
    "id": "train_2",
    "text": "This is the worst service I've ever experienced.",
    "correct_answers": {
      "sentiment": "Negative"
    },
    "explanation": "The words 'worst' and the overall complaint indicate negative sentiment."
  },
  {
    "id": "train_3",
    "text": "The package arrived on time.",
    "correct_answers": {
      "sentiment": "Neutral"
    },
    "explanation": "This is a factual statement without emotional indicators."
  }
]

Entrenamiento con Múltiples Esquemas

Para tareas con múltiples esquemas de anotación:

json
{
  "id": "train_1",
  "text": "Apple announced new iPhone features yesterday.",
  "correct_answers": {
    "sentiment": "Neutral",
    "topic": "Technology"
  },
  "explanation": {
    "sentiment": "This is a factual news statement.",
    "topic": "The text discusses Apple and iPhone, which are tech topics."
  }
}

Experiencia del Usuario

Flujo de Entrenamiento

  1. El usuario ve el indicador "Training Phase"
  2. Se muestra la pregunta con el formulario de anotación
  3. El usuario envía su respuesta
  4. Se muestra retroalimentación inmediata:
    • Correcto: Marca verde, continúa al siguiente
    • Incorrecto: X roja, se muestra explicación, opción de reintento

Visualización de Retroalimentación

Cuando un anotador responde incorrectamente:

  • Se resalta la respuesta correcta
  • Se muestra la explicación proporcionada
  • Aparece el botón de reintento (si los reintentos están habilitados)
  • Se muestra el progreso hacia los criterios de aprobación

Monitoreo del Administrador

Rastrea el rendimiento del entrenamiento en el panel de administración:

  • Tasas de finalización
  • Promedio de respuestas correctas
  • Tasas de aprobación/rechazo
  • Tiempo dedicado al entrenamiento
  • Precisión por pregunta

Accede a través de endpoints de API /admin:

text
GET /api/admin/training/stats
GET /api/admin/training/user/{user_id}

Ejemplo: Entrenamiento de Análisis de Sentimiento

yaml
task_name: "Sentiment Analysis"
task_dir: "."
port: 8000
 
# Main annotation data
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
 
# Training phase configuration
phases:
  training:
    enabled: true
    data_file: "data/training_questions.json"
    schema_name: sentiment
 
    passing_criteria:
      min_correct: 8
      total_questions: 10
      max_mistakes_per_question: 2
 
    retries:
      enabled: true
      max_retries: 3
 
    show_explanations: true
    randomize: true
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

Ejemplo: Entrenamiento de NER

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - Person
      - Organization
      - Location
      - Date
 
phases:
  training:
    enabled: true
    data_file: "data/ner_training.json"
    schema_name: entities
 
    passing_criteria:
      min_correct: 7
      total_questions: 10
 
    show_explanations: true

Datos de entrenamiento para anotación de span:

json
{
  "id": "train_1",
  "text": "Tim Cook announced that Apple will open a new store in New York on March 15.",
  "correct_answers": {
    "entities": [
      {"start": 0, "end": 8, "label": "Person"},
      {"start": 24, "end": 29, "label": "Organization"},
      {"start": 54, "end": 62, "label": "Location"},
      {"start": 66, "end": 74, "label": "Date"}
    ]
  },
  "explanation": "Tim Cook is a Person, Apple is an Organization, New York is a Location, and March 15 is a Date."
}

Mejores Prácticas

1. Empieza Simple

Comienza con ejemplos sencillos antes de introducir casos límite:

json
[
  {"text": "I love this!", "correct_answers": {"sentiment": "Positive"}},
  {"text": "I hate this!", "correct_answers": {"sentiment": "Negative"}},
  {"text": "It arrived yesterday.", "correct_answers": {"sentiment": "Neutral"}}
]

2. Cubre Todas las Etiquetas

Asegúrate de que el entrenamiento incluya ejemplos de cada etiqueta posible:

json
[
  {"correct_answers": {"sentiment": "Positive"}},
  {"correct_answers": {"sentiment": "Negative"}},
  {"correct_answers": {"sentiment": "Neutral"}}
]

3. Escribe Explicaciones Claras

Las explicaciones deben enseñar las directrices de anotación:

json
{
  "explanation": "While this text mentions a problem, the overall tone is constructive and the reviewer expresses satisfaction with the resolution. This makes it Positive rather than Negative."
}

4. Establece Criterios Razonables

No exijas perfección innecesariamente:

yaml
# Too strict - may lose good annotators
passing_criteria:
  require_all_correct: true
 
# Better - allows for learning
passing_criteria:
  min_correct: 8
  total_questions: 10

5. Incluye Casos Límite

Agrega ejemplos difíciles para preparar a los anotadores:

json
{
  "text": "Not bad at all, I guess it could be worse.",
  "correct_answers": {"sentiment": "Neutral"},
  "explanation": "Despite negative words like 'not bad' and 'worse', this is actually a lukewarm endorsement - neutral rather than positive or negative."
}

Integración con Flujos de Trabajo

El entrenamiento se integra con flujos de trabajo multifase:

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
 
  annotation:
    # Main task - always enabled
    enabled: true
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

Consideraciones de Rendimiento

  • Los datos de entrenamiento se cargan al inicio
  • El progreso se almacena en memoria por sesión
  • Impacto mínimo en el rendimiento de la anotación principal
  • Considera separar entrenamientos complejos en múltiples fases

Lectura Adicional

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