# 情境化选词工作示例

## 实际案例：L1-S2 U17~U24（2026-04-03）

### 基本参数
- 词库：160词条（含虚词18个）
- 分配目标：8 Units × 5 Lessons × 4词 = 160词
- 虚词分布：U17×2, U18×2, U19×2, U20×3, U21×2, U22×2, U23×3, U24×2 = 18 ✓

### 虚词统计与分配示例

词库中共18个虚词（adv/pron/det/prep）：

| 虚词 | 词性 | 词义 | 分配Unit | 分配理由 |
|------|------|------|---------|---------|
| ago | adv | 以前 | U17-L1 | 包裹数年前寄出，ago天然嵌入「时间跨越」情境 |
| home | adv | 回家/在家 | U17-L4 | 速猴行为神秘，主角回home，自然收尾 |
| early | adv | 早地 | U18-L1 | 上学场景，early早起天然匹配 |
| now | adv | 现在 | U18-L3 | 课堂进行中，now强调当下 |
| again | adv | 再一次 | U19-L2 | 再试一次完成任务，again语义完全贴合 |
| like | prep | 像 | U19-L3 | 打比方情境，like作比喻连接词 |
| a lot | adv | 非常 | U20-L3 | 乒乓球a lot地弹跳，副词修饰动作 |
| many | det | 许多 | U20-L1 | 运动会many项目，限定词描述规模 |
| very | adv | 非常 | U20-L1 | 运动会very exciting，强调程度 |
| some | det | 一些 | U21-L1 | 迷路学者ask有没有some水 |
| these | det | 这些 | U21-L2 | 搭基地时「把these材料add进去」 |
| a lot of | det | 大量的 | U22-L1 | 速猴备好a lot of糖果诱惑孩子 |
| a lot | pron | 大量 | U22-L4 | 蜡烛仪式，a lot of children聚集 |
| lots | adv | 非常 | U23-L1 | 假镇长发布lots of奇怪命令 |
| lots | pron | 大量 | U23-L3 | 还有lots of证据要查 |
| really | adv | 真正地 | U23-L2 | 「这person really是镇长吗？」 |
| one | det | 一个 | U24-L4 | one by one分配任务 |
| those | det | 那些 | U24-L3 | those圆球机器人所需的零件 |

### 词库预处理脚本参考

读取Excel词库时的Python核心逻辑：
```python
import openpyxl
wb = openpyxl.load_workbook('wordlist.xlsx')
ws = wb['单词表']
words = []
for row in ws.iter_rows(min_row=2, values_only=True):
    word, pos, meaning, theme = row[1], row[2], row[3], row[4]
    if word:
        words.append((word, pos, meaning, theme))
virtual = [(w,p,m,t) for w,p,m,t in words if p in ('adv','pron','det','prep')]
```

### 验证脚本参考

```python
used = {}
def assign(word, pos, unit, lesson):
    key = (word, pos)
    if key in used:
        print(f"DUPLICATE [{unit}-{lesson}]: {word}({pos}) -- already in {used[key]}")
        return False
    used[key] = f"{unit}-{lesson}"
    return True

# 分配完成后验证
remaining = ALL_WORDS_SET - set(used.keys())
assert len(remaining) == 0, f"Missing words: {remaining}"
```
