Skip to content

Asignación por Categoría

Dirige elementos de anotación a anotadores según su experiencia demostrada.

Asignación Basada en Categorías

La asignación basada en categorías empareja automáticamente a los anotadores con instancias de anotación según su experiencia demostrada. Los anotadores son evaluados durante las fases de capacitación en preguntas específicas por categoría y solo reciben instancias de las categorías para las que se han calificado.

Descripción General

El sistema de asignación basado en categorías funciona de la siguiente manera:

  1. Etiquetado de datos: Las instancias en tus archivos de datos están etiquetadas con categorías
  2. Evaluación de capacitación: Las preguntas de capacitación también están etiquetadas con categorías
  3. Seguimiento de rendimiento: El sistema rastrea la precisión por categoría durante la capacitación
  4. Calificación: Los usuarios que alcanzan el umbral de precisión están "calificados"
  5. Asignación: Los usuarios solo reciben instancias de sus categorías calificadas

Configuración

Configuración Básica

yaml
# Enable category-based assignment strategy
assignment_strategy: category_based
 
# Configure category key in item_properties
item_properties:
  id_key: id
  text_key: text
  category_key: category  # Field containing category
 
# Category assignment settings
category_assignment:
  enabled: true
  qualification:
    source: training      # Where qualification comes from
    threshold: 0.7        # 70% accuracy required
    min_questions: 2      # At least 2 questions per category
  fallback: uncategorized # What to do if user qualifies for nothing

Opciones de Configuración

OpciónTipoPredeterminadoDescripción
enabledbooleantrueHabilitar/deshabilitar la asignación por categoría
qualification.sourcestring"training"Fuente: "training", "prestudy" o "both"
qualification.thresholdfloat0.7Precisión mínima (0.0-1.0) para calificar
qualification.min_questionsinteger1Preguntas mínimas por categoría
fallbackstring"uncategorized"Comportamiento cuando el usuario no califica

Opciones de Respaldo

  • uncategorized: Asignar instancias que no tienen categoría
  • random: Asignar aleatoriamente de todas las instancias restantes
  • none: No asignar ninguna instancia

Formato de Datos

Datos de Instancia

Incluye el campo de categoría en tus archivos de datos:

json
{"id": "econ_001", "text": "Market analysis...", "category": "economics"}
{"id": "sci_001", "text": "Research findings...", "category": "science"}
{"id": "multi_001", "text": "Interdisciplinary...", "category": ["economics", "science"]}
{"id": "general_001", "text": "General content...", "category": null}

Datos de Capacitación

Las instancias de capacitación deben incluir categorías:

json
{
  "training_instances": [
    {
      "id": "train_econ_1",
      "text": "Question about economic concepts...",
      "category": "economics",
      "correct_answers": {"topic": "Economics"},
      "explanation": "This is an economics topic because..."
    }
  ]
}

Cómo Funciona la Calificación

Durante la Capacitación

A medida que los usuarios responden preguntas de capacitación:

  1. El sistema registra la categoría de cada pregunta
  2. Para cada categoría, rastrea:
    • Total de preguntas respondidas
    • Número de respuestas correctas
    • Precisión (correctas / total)

Después de Completar la Capacitación

Cuando un usuario aprueba la capacitación:

  1. Se calcula la precisión para cada categoría
  2. Las categorías que cumplen tanto el umbral como las preguntas mínimas se agregan a las "categorías calificadas"
  3. Las calificaciones persisten durante la sesión

Ejemplo

Si el umbral es 0.7 (70%) y las preguntas mínimas son 2:

CategoríaPreguntasCorrectasPrecisión¿Calificado?
Economía33100%
Ciencia2150%No (por debajo del umbral)
Deportes11100%No (por debajo de preguntas mínimas)

El usuario solo recibiría instancias de "Economía".

Casos de Uso

Enrutamiento de Expertos

Dirige contenido especializado a anotadores calificados:

  • Textos médicos a anotadores con conocimiento médico
  • Documentos legales a quienes entienden terminología legal
  • Contenido técnico a quienes tienen experiencia técnica

Control de Calidad

Asegura la calidad asignando contenido solo a personas calificadas:

  • Los anotadores demuestran competencia antes de recibir trabajo real
  • Diferentes umbrales de calidad para diferentes tipos de contenido

Distribución de Carga de Trabajo

Distribuye el trabajo según la experiencia:

  • Elementos de alta complejidad a anotadores expertos
  • Elementos generales a todos los anotadores

Modo de Experiencia Dinámica

La experiencia dinámica permite la evaluación en tiempo real durante la anotación sin datos de capacitación etiquetados como gold:

yaml
category_assignment:
  enabled: true
  dynamic:
    enabled: true
    agreement_method: majority_vote
    min_annotations_for_consensus: 2
    learning_rate: 0.1
    update_interval_seconds: 60
    base_probability: 0.1

Cómo Funciona el Modo Dinámico

  1. Estado inicial: Todos los anotadores comienzan con experiencia neutral (0.5) para todas las categorías
  2. Asignación probabilística: Las categorías con mayor experiencia tienen mayor probabilidad de asignación
  3. Procesamiento en segundo plano: Calcula periódicamente el consenso y actualiza las puntuaciones de experiencia
  4. Actualizaciones de experiencia: Las puntuaciones aumentan al coincidir con el consenso y disminuyen al discrepar

Opciones de Configuración

OpciónTipoPredeterminadoDescripción
agreement_methodstring"majority_vote"Cómo calcular el consenso
min_annotations_for_consensusinteger2Anotaciones mínimas antes de calcular
learning_ratefloat0.1Qué tan rápido cambian las puntuaciones de experiencia
base_probabilityfloat0.1Probabilidad mínima para cualquier categoría

Referencia de la API

Métodos de TrainingState

python
# Record an answer for category tracking
training_state.record_category_answer(categories=['economics'], is_correct=True)
 
# Get score for a specific category
score = training_state.get_category_score('economics')
# Returns: {'correct': 3, 'total': 4, 'accuracy': 0.75}
 
# Get qualified categories based on threshold
qualified = training_state.get_qualified_categories(threshold=0.7, min_questions=2)

Métodos de UserState

python
# Add a qualified category
user_state.add_qualified_category('economics', score=0.85)
 
# Check if user is qualified for a category
is_qualified = user_state.is_qualified_for_category('economics')
 
# Get all qualified categories
categories = user_state.get_qualified_categories()

Solución de Problemas

Los Usuarios No Reciben Instancias Asignadas

  1. Verifica si el usuario tiene categorías calificadas (revisa el rendimiento de capacitación)
  2. ¿Hay instancias en esas categorías que no hayan sido anotadas?
  3. ¿Está fallback configurado apropiadamente?

Las Categorías No Se Rastrean

  1. Verifica que category_key esté configurado en item_properties
  2. Las instancias de capacitación tienen el campo category
  3. category_assignment.enabled es true

Lecturas Adicionales

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