# QuestionDatabase 高品質化ガイドライン > 国語・数学の高品質化経験に基づく標準手順 --- ## 1. 概要 ### 1.1 目的 - 問題データの品質向上(重複削除、フォーマット統一、難易度調整) - 各ジャンルの高品質な問題セットを作成 - LLMを活用した効率的な編集作業 - Gemini APIによる学術的整合性チェック ### 1.2 対象ファイル ``` knowledge/v1.8.1/ ├── jp/JP01-JP06.json (国語: 6ファイル) ├── math/MA01-MA10.json (数学: 10ファイル) ├── sci/SC01-SC10.json (理科: 10ファイル) └── soc/SO01-SO10.json (社会: 10ファイル) ``` --- ## 2. 品質基準 ### 2.1 問題数 - **目標**: 各ファイル100問 - 不足分は対応する教材(`knowledge/*.md`)から新規作成 ### 2.2 難易度分布(3:5:2) | 難易度 | 割合 | 問題数 | 基準 | |--------|------|--------|------| | 基本 | 30% | 30問 | 小学校レベル、日常的な内容 | | 標準 | 50% | 50問 | 中学校レベル、応用的な理解が必要 | | 応用 | 20% | 20問 | 高校レベル以上、発展的な内容 | ### 2.3 フォーマット統一 ```json { "answer_id": "xx_001", "answer": "解答(ふりがな)", "question_hint": "「〇〇___」の漢字", "difficulty": "基本|標準|応用", "source_context": "完全な文(マークダウンなし)" } ``` #### フィールド規則 | フィールド | 規則 | |-----------|------| | answer_id | `{category}_{3桁連番}` (例: jp_001, ma_001) | | answer | 解答文字列(ふりがなは括弧内に) | | question_hint | 穴埋め形式「〇〇___」、末尾に「の漢字」等の指示 | | difficulty | 基本/標準/応用 の3択 | | source_context | 完全な文、マークダウン記号なし | --- ## 3. 高品質化手順 ### Phase 1: 現状分析 ```python # 1. 問題数確認 len(questions) # 2. 重複確認(解答の正規化) def normalize(answer): # ふりがな除去して比較 return re.sub(r'[((][^))]+[))]', '', answer) # 3. フォーマット不整合確認 # - question_hint形式 # - マークダウン残存 # - source_context切れ ``` ### Phase 2: 重複統合 1. 同一解答の問題をグループ化 2. 最良のquestion_hintを選定 3. 1問に統合、残りを削除 **選定基準**: - 文脈が明確 - 穴埋め位置が適切 - source_contextが完全 ### Phase 3: 新規問題作成 1. 対応する教材(`knowledge/*.md`)を参照 2. 教材から問題素材を抽出 3. フォーマットに従って問題化 **優先素材**: - 同訓異字・同音異義語(国語) - 公式・定理の応用(数学) - 実験・観察の考察(理科) - 年号・人物・地理(社会) ### Phase 4: 難易度調整 ```python # 現状カウント counts = {"基本": 0, "標準": 0, "応用": 0} # 目標: 30:50:20 target = {"基本": 30, "標準": 50, "応用": 20} # 差分を計算し調整 ``` ### Phase 5: ID再割り当て・保存 ```python # 連番割り当て for i, q in enumerate(questions, 1): q["answer_id"] = f"{prefix}_{i:03d}" # JSON保存 with open(path, 'w', encoding='utf-8') as f: json.dump(questions, f, ensure_ascii=False, indent=2) ``` --- ## 4. 品質チェックリスト ### 必須チェック - [ ] 問題数 = 100問 - [ ] 重複なし(100ユニーク解答) - [ ] answer_id連番(xx_001〜xx_100) - [ ] 難易度分布: 30:50:20 - [ ] JSON構文正常 ### フォーマットチェック - [ ] question_hint: 「〇〇___」形式 - [ ] answer: 適切な形式 - [ ] source_context: マークダウンなし - [ ] 全フィールド存在 ### 内容チェック - [ ] 問題として成立している - [ ] 解答が一意に定まる - [ ] 難易度が適切 --- ## 5. カテゴリ別注意点 ### 国語(JP01-JP06) | カテゴリ | 内容 | 教材 | |---------|------|------| | JP01 | 漢字の読み書き | japanese.md | | JP02 | 語彙・慣用句 | japanese.md | | JP03 | 文法 | japanese.md | | JP04 | 敬語 | japanese.md | | JP05 | 文学史 | japanese.md | | JP06 | 作文・表現 | japanese.md | **注意**: 同訓異字・同音異義語は文脈で区別できるようにする ### 数学(MA01-MA10) | カテゴリ | 内容 | 問題数 | |---------|------|--------| | MA01 | 四則演算・計算の基礎 | 40問 | | MA02 | 単位換算・速さ | 40問 | | MA03 | 円周率・面積 | 40問 | | MA04 | 比例・割合 | 40問 | | MA05 | 濃度・食塩水 | 40問 | | MA06 | 方程式 | 40問 | | MA07 | 図形・体積 | 40問 | | MA08 | 時間計算 | 40問 | | MA09 | 旅人算・追いかけ算 | 40問 | | MA10 | 応用問題・複合問題 | 40問 | **重要(中学受験向け)**: - ★ 方程式(xを使った式)は絶対に使わない ★ - 特殊算による解法(つるかめ算、旅人算、仕事算、ニュートン算など) - 計算の工夫(分配法則、逆算、比の利用) - 線分図、面積図、ダイヤグラムによる解法 - 和差算、消去算、比と割合の考え方 ### 理科(SC01-SC10) **注意**: 単位は正確に記述 ### 社会(SO01-SO10) **注意**: 年号・人名の表記を統一 --- ## 6. JP01高品質化の実績 ### Before - 問題数: 103問 - ユニーク解答: 39種類(重複率62%) - フォーマット: 3パターン混在 - マークダウン残存あり ### After - 問題数: 100問 - ユニーク解答: 100種類(重複0%) - フォーマット: 統一済み - 難易度: 30:50:20 ### 作業内容 1. 103問 → 29問に統合(重複削除) 2. japanese.mdから71問新規作成 3. 難易度を3:5:2に調整 4. フォーマット統一・マークダウン除去 --- ## 7. Gemini API添削 ### 7.1 目的 - SUBAGENT高品質化後の学術的整合性チェック - source_context、answer、question_hintの整合性確保 - 教科固有のルール適用(数学の方程式排除など) ### 7.2 使用方法 ```bash # スクリプト実行 GEMINI_API_KEY=xxxxx python scripts/review_math_with_gemini.py knowledge/v1.8.1/math/MA01.json ``` ### 7.3 添削スクリプト | ファイル | 説明 | |---------|------| | `scripts/review_math_with_gemini.py` | 数学用Gemini添削スクリプト | ### 7.4 添削基準 **共通基準**: - answerが学術的に正確か - question_hintが問題として適切か - source_contextが解法・背景として正しいか **数学固有基準**: - 方程式(x=〜)を使わない - 特殊算・計算の工夫で解法を説明 - 中学受験向けの難易度設定 ### 7.5 使用モデル | モデル | 用途 | |--------|------| | gemini-3-pro-preview | 高精度な添削(推奨) | ### 7.6 注意事項 - APIレート制限に注意(30秒間隔推奨) - 1ファイル(40問)= 1回のAPI呼び出し - レスポンスがemptyの場合は再試行 --- ## 8. 参照ファイル | ファイル | 用途 | |---------|------| | `knowledge/japanese.md` | 国語問題の素材 | | `knowledge/science.md` | 理科問題の素材 | | `knowledge/social.md` | 社会問題の素材 | | `knowledge/v1.8.1/**/*.json` | 編集対象ファイル | --- **最終更新**: 2025-12-23