auto-sync: contextual-word-allocation 2026-04-07_12:36

This commit is contained in:
OpenClaw Bot 2026-04-07 12:36:35 +08:00
commit 48a7ea66d8
2 changed files with 176 additions and 0 deletions

111
SKILL.md Normal file
View File

@ -0,0 +1,111 @@
---
name: contextual-word-allocation
description: >
儿童教育游戏动画剧本的情境化选词工具。将词库Excel/列表)中的单词知识点,
按照故事情境而非词义类别分组分配至每个Unit的Lesson中
使每个Lesson的4个单词能自然地支撑一个贴近日常的小故事情境。
**触发场景:**
(1) 用户提供单词表(含单词/词性/词义和Unit故事背景设定
(2) 需要将词库拆分为每4词一组的情境化分配方案
(3) 需要给出情境名称≤6字和聚合理由
(4) 用户提到「情境化选词」「单词分配」「词库分组」「Lesson选词」
---
# 情境化选词工作流
## 核心概念
**情境化选词 ≠ 词义分类**
- ❌ 传统blue/red/yellow/pink → 【颜色】
- ✅ 情境化autumn/leaf/yellow/orange → 【秋季拾叶】(配秋天捡落叶做艺术品的故事)
词汇从属于情境,情境服务于故事,故事符合儿童日常体验。
## 输入规格
1. **词库文件**Excel/列表):包含 `单词 | 词性 | 词义 | 原始主题分类`
2. **Unit背景设定**每个Unit的故事一句话概要、关键剧情、出场角色
3. **分配规格**Units数量 × 5 Lessons/Unit × 4词/Lesson = 总词数
## 工作流程5步
### Step 1词库预处理
- 读取词库文件,提取全部词条(含词性,同词多词性视为独立词条)
- 统计虚词adv/pron/det/prep数量
- 验证:总词数 = Units × 5 × 4
### Step 2虚词规划
每Unit需含 **2-3个虚词**。先均衡分配虚词到各Unit再填充实词。
- 规划公式:虚词总数 / Units数 ≈ 每Unit虚词配额
- 调整原则与Unit故事情境自然契合的虚词优先分配如ago=「以前」适合「收到旧包裹」的情节)
- 记录虚词分配表后续Step 4严格遵守
### Step 3主题-Unit映射
对照Unit故事背景将词库中天然契合该Unit主题的词群预标注
- 扫描词义/原始主题找出与Unit场景强相关的词
- 避免强行「凑主题」——无强关联的词可放入暂空池(若有)
### Step 4逐Lesson分配核心步骤
每组4词需同时满足
1. **≥3词与本Lesson角色行为/话题强相关**第4词可为虚词或弱关联词
2. **4词共同指向同一个生活化情境**(可用一句话描述这个场景)
3. **虚词自然嵌入**,不显突兀
分配顺序建议:
1. 先锁定Lesson核心情境来自Unit故事
2. 找3个与情境强相关的实词
3. 从该Unit的虚词配额中选1个最契合的虚词补位
4. 若虚词已配完,可用弱关联实词补位
### Step 5全局验证
分配完成后必须执行:
- [ ] 总词条数 = 预期数(无遗漏)
- [ ] 无重复(每个词条仅出现一次)
- [ ] 每Unit虚词数量在2-3范围内
- [ ] 所有Unit虚词合计 = 词库虚词总数
## 输出格式
每个Lesson输出
```
| Lesson编号 | 情境名称≤6字 | 单词1(词性,词义) 单词2 单词3 单词4 | 聚合理由说明4词如何共同构建一个情境|
```
按Unit分组表格形式呈现。
## 质量标准
**好的情境聚合(符合以下特征):**
- 4词放在一起能在脑海中浮现一个具体场景画面
- 虚词的用法在情境里是自然的(孩子能感受到它的意思)
- 情境贴近5-9岁儿童日常符合「低风险高情绪」原则
- 4词组合能支撑完整的有故事感的Lesson剧本而非仅组成单一静态画面
- 名词和动词形成天然的动作链环如pencil/write/paper/eraser符合真实场景逻辑
## 强制选词规范(出现以下任一情况必须重新分组)
### 1. 词性/词义唯一性规则
- ❌ 同一Lesson中出现同一拼写但不同词性/词义的单词如answer(n,答复)和answer(v,回答)、phone(v,打电话)和phone(n,电话)
- ❌ 同一Lesson中出现同义词/近义词如apartment和flat、shop和store、go to bed和go to sleep、say/speak/talk同类动词并列不做同义词辨析
- ❌ 同一Lesson中同一单词多义多词性交替出现如try(n,尝试)和try(v,尝试)同时出现)
- ❌ 多义词未使用指定单一词义如lime使用"lime色"而非指定的"酸橙"词义)
### 2. 词义搭配规则
- ❌ Lesson内出现4个意义完全并列的同词性词如4个形容词、4个名词、3个动词并列禁止单纯词义分类聚合
- ❌ 词义可成对对应的词未成对出现如these和those、good和bad、smart和silly需成对出现方便区分教学
- ❌ 同组词汇不属于同一实际场景存在场景冲突如table tennis和tennis racket同组、armchair/bookcase/lamp搭配dining room而非living room
- ❌ 关联词汇无强逻辑联系如crocodile和evening同组但无"鳄鱼为夜行动物"的逻辑支撑)
- ❌ 中英词汇词性不对应如Chinese和English同组时一个是名词一个是形容词
### 3. 故事适配规则
- ❌ 4词仅能组成单一静态画面无法支撑有故事感的Lesson剧本
- ❌ 动词使用不符合语法规则如wear(v,穿着)一般现在时表日常穿着,未构建对应日常情境)
- ❌ 词汇选择不符合角色人设和剧情设计如速猴登场场景未使用motorbike相关词汇
- ❌ 出现干扰故事聚焦的无关词汇如不需要mother角色的故事中出现mother词汇
## 注意事项
- 同拼写不同词性/词义的词视为独立词条禁止放入同一Lesson
- 暂空池Unit若有用于放置其余Unit塞不下的词词汇选择灵活度最高
- 分配草稿完成后等待用户逐Unit微调不要急于输出剧本正文
- 所有分组需满足上述强制规范,如有违反必须重新调整

View File

@ -0,0 +1,65 @@
# 情境化选词工作示例
## 实际案例L1-S2 U17~U242026-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}"
```