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_propertiescategory_keyが設定されていることを確認する
  2. トレーニングインスタンスにcategoryフィールドがあることを確認する
  3. category_assignment.enabledtrueであることを確認する

関連情報

実装の詳細については、ソースドキュメントを参照してください。