カテゴリ割り当て
実証された専門知識に基づいてアノテーションアイテムをアノテーターにルーティングする。
カテゴリベースの割り当て
カテゴリベースの割り当ては、実証された専門知識に基づいてアノテーターとアノテーションインスタンスを自動的にマッチングします。アノテーターはトレーニングフェーズでカテゴリ固有の質問について評価され、資格を得たカテゴリのインスタンスのみを受け取ります。
概要
カテゴリベースの割り当てシステムは以下のように動作します:
- データタグ付け:データファイル内のインスタンスにカテゴリがタグ付けされる
- トレーニング評価:トレーニング問題にもカテゴリがタグ付けされる
- パフォーマンス追跡:システムがトレーニング中のカテゴリごとの精度を追跡する
- 資格認定:閾値精度を満たしたユーザーが「資格あり」となる
- 割り当て:ユーザーは資格のあるカテゴリのインスタンスのみを受け取る
設定
基本設定
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設定オプション
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | true | カテゴリ割り当ての有効/無効 |
qualification.source | string | "training" | ソース:"training"、"prestudy"、または"both" |
qualification.threshold | float | 0.7 | 資格に必要な最低精度(0.0-1.0) |
qualification.min_questions | integer | 1 | カテゴリあたりの最低問題数 |
fallback | string | "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..."
}
]
}資格認定の仕組み
トレーニング中
ユーザーがトレーニング問題に回答するにつれて:
- システムが各問題のカテゴリを記録する
- 各カテゴリについて以下を追跡する:
- 回答した問題の総数
- 正解数
- 精度(正解/総数)
トレーニング完了後
ユーザーがトレーニングに合格すると:
- 各カテゴリの精度が計算される
- 閾値と最低問題数の両方を満たすカテゴリが「資格認定カテゴリ」に追加される
- 資格はセッション中持続する
例
閾値が0.7(70%)で最低問題数が2の場合:
| カテゴリ | 問題数 | 正解 | 精度 | 資格あり? |
|---|---|---|---|---|
| 経済学 | 3 | 3 | 100% | はい |
| 科学 | 2 | 1 | 50% | いいえ(閾値以下) |
| スポーツ | 1 | 1 | 100% | いいえ(最低問題数以下) |
このユーザーは「経済学」のインスタンスのみを受け取ります。
ユースケース
エキスパートルーティング
専門的なコンテンツを資格のあるアノテーターにルーティングする:
- 医学知識を持つアノテーターに医療テキスト
- 法律用語を理解するアノテーターに法的文書
- 技術的な専門知識を持つアノテーターに技術コンテンツ
品質管理
資格のある個人にのみコンテンツを割り当てて品質を確保する:
- アノテーターは実際の作業を受ける前に能力を証明する
- コンテンツタイプごとに異なる品質閾値
ワークロード分散
専門知識に基づいて作業を分配する:
- 高複雑度のアイテムをエキスパートアノテーターに
- 一般的なアイテムをすべてのアノテーターに
動的エキスパートモード
動的エキスパートは、ゴールドラベル付きトレーニングデータなしで、アノテーション中にリアルタイムで評価を行います:
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動的モードの仕組み
- 初期状態:すべてのアノテーターはすべてのカテゴリに対して中立的な専門性(0.5)で開始
- 確率的割り当て:専門性が高いカテゴリほど割り当て確率が高い
- バックグラウンド処理:定期的にコンセンサスを計算し、専門性スコアを更新
- 専門性の更新:コンセンサスと一致するとスコアが上がり、不一致で下がる
設定オプション
| オプション | 型 | デフォルト | 説明 |
|---|---|---|---|
agreement_method | string | "majority_vote" | コンセンサスの計算方法 |
min_annotations_for_consensus | integer | 2 | 計算前の最低アノテーション数 |
learning_rate | float | 0.1 | 専門性スコアの変化速度 |
base_probability | float | 0.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()トラブルシューティング
ユーザーにインスタンスが割り当てられない
- ユーザーに資格認定カテゴリがあるか確認する(トレーニングパフォーマンスを確認)
- それらのカテゴリにまだアノテーションされていないインスタンスがあるか
fallbackが適切に設定されているか
カテゴリが追跡されていない
item_propertiesでcategory_keyが設定されていることを確認する- トレーニングインスタンスに
categoryフィールドがあることを確認する category_assignment.enabledがtrueであることを確認する
関連情報
- タスク割り当て - 一般的な割り当て戦略
- トレーニングフェーズ - トレーニングの設定
- 品質管理 - 注意力チェックとゴールドスタンダード
実装の詳細については、ソースドキュメントを参照してください。