Skip to content

分類分配

根據標註者展示的專業能力將標註項目路由給標註者。

基於分類的分配根據標註者展示的專業能力自動將標註實例匹配給標註者。標註者在培訓階段接受特定類別問題的評估,只會收到他們已獲資格的類別的實例。

概述

基於分類的分配系統工作流程如下:

  1. 資料標記:資料檔案中的實例被標記了類別
  2. 培訓評估:培訓問題也被標記了類別
  3. 表現追蹤:系統在培訓期間追蹤每個類別的準確率
  4. 資格認定:達到準確率閾值的使用者被"認定合格"
  5. 分配:使用者只會收到他們合格類別的實例

配置

基本設定

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

配置選項

選項類型預設值描述
enabledbooleantrue啟用/停用分類分配
qualification.sourcestring"training"來源:"training"、"prestudy" 或 "both"
qualification.thresholdfloat0.7認定合格的最低準確率(0.0-1.0)
qualification.min_questionsinteger1每個類別的最少問題數
fallbackstring"uncategorized"使用者未獲得任何資格時的行為

回退選項

  • uncategorized:分配沒有類別的實例
  • random:從所有剩餘實例中隨機分配
  • none:不分配任何實例

資料格式

實例資料

在資料檔案中包含類別欄位:

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}

培訓資料

培訓實例應包含類別:

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..."
    }
  ]
}

資格認定工作原理

培訓期間

當用戶回答培訓問題時:

  1. 系統記錄每個問題的類別
  2. 對於每個類別,追蹤:
    • 已回答的總問題數
    • 正確回答的數量
    • 準確率(正確/總數)

培訓完成後

當用戶通過培訓時:

  1. 計算每個類別的準確率
  2. 同時滿足閾值和最少問題數的類別被新增到"合格類別"
  3. 資格在會話期間持續有效

示例

如果閾值為 0.7(70%)且最少問題數為 2:

類別問題數正確準確率是否合格?
經濟學33100%
科學2150%否(低於閾值)
體育11100%否(低於最少問題數)

使用者只會收到"經濟學"實例。

用例

專家路由

將專業內容路由給合格的標註者:

  • 醫療文本給具有醫學知識的標註者
  • 法律檔案給理解法律術語的人
  • 技術內容給具有技術專長的人

品質控制

通過只將內容分配給合格個人來確保品質:

  • 標註者在接收真實工作前證明能力
  • 不同內容類型有不同的品質閾值

工作量分配

根據專業能力分配工作:

  • 高複雜度項目給專家標註者
  • 通用項目給所有標註者

動態專業模式

動態專業模式在標註過程中實現即時評估,無需金標準培訓資料:

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

動態模式工作原理

  1. 初始狀態:所有標註者對所有類別的初始專業度為中性(0.5)
  2. 機率分配:專業度較高的類別有更高的分配機率
  3. 後臺處理:定期計算共識並更新專業度分數
  4. 專業度更新:與共識一致時分數提高,不一致時降低

配置選項

選項類型預設值描述
agreement_methodstring"majority_vote"如何計算共識
min_annotations_for_consensusinteger2計算前的最少標註數
learning_ratefloat0.1專業度分數變化的速度
base_probabilityfloat0.1任何類別的最低機率

API 參考

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)

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()

故障排除

使用者未被分配實例

  1. 檢查使用者是否有合格類別(審查培訓表現)
  2. 這些類別中是否有未標註的實例?
  3. fallback 是否設定正確?

類別未被追蹤

  1. 驗證 item_properties 中是否設定了 category_key
  2. 培訓實例是否有 category 欄位
  3. category_assignment.enabled 是否為 true

延伸閱讀

有關實現細節,請參閱原始碼文件