File size: 7,549 Bytes
c71b90b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# 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