auto-sync: contextual-word-allocation 2026-04-07_14:45

This commit is contained in:
OpenClaw Bot 2026-04-07 14:45:33 +08:00
commit 1ced106d76
2 changed files with 177 additions and 0 deletions

112
SKILL.md Normal file
View File

@ -0,0 +1,112 @@
---
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应分配的虚词数量使各Unit的虚词密度尽量均衡避免虚词在靠后Unit中扎堆。
- **规划公式**:虚词总数 / Units数 ≈ 每Unit虚词配额可允许±1的浮动但不得有Unit为0或过度集中
- **调整原则**在满足均衡分布的前提下与Unit故事情境自然契合的虚词优先分配如ago=「以前」适合「收到旧包裹」的情节)
- 提前制作虚词分配表后续Step 4严格遵守不得在实词分配阶段随意调换虚词所属Unit
### 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虚词数量符合Step 2规划的配额无大幅偏差
- [ ] 所有Unit虚词合计 = 词库虚词总数
## 输出格式
每个Lesson输出
```
| Lesson编号 | 情境名称≤6字 | 单词1(词性,词义) 单词2 单词3 单词4 | 聚合理由说明4词如何共同构建一个情境|
```
按Unit分组表格形式呈现。
## 质量标准
**好的情境聚合(符合以下特征):**
- 4词放在一起能在脑海中浮现一个具体场景画面
- 虚词的用法在情境里是自然的(孩子能感受到它的意思)
- 情境贴近5-9岁儿童日常符合「低风险高情绪」原则
- 4词组合能支撑完整的有故事感的Lesson剧本而非仅组成单一静态画面
- 名词和动词形成天然的动作链环如pencil/write/paper/eraser符合真实场景逻辑
## 强制选词规范(在开始分组前必须熟知并遵守,违反任一条则该分组无效)
> 以下规范在 **Step 4 逐Lesson分配之前**必须牢记,用于指导分组决策,而非在完成后再做纠错。
### 1. 词性/词义唯一性规则
- **禁止**同一Lesson中出现同一拼写但不同词性/词义的单词(如 answer(n,答复) 与 answer(v,回答) 必须分属不同Lessonphone(v,打电话) 与 phone(n,电话) 必须分属不同Lesson
- **禁止**同一Lesson中出现同义词或近义词不在Lesson内做同义词辨析如 apartment 与 flat、shop 与 store、go to bed 与 go to sleep 必须分属不同Lesson
- **禁止**同一Lesson中出现可触发同词多义联想的搭配如 try(n,尝试) 所在Lesson的情境中禁止出现「try again」等会触发动词 try 用法的搭配该Lesson内 try 必须全程作名词)
- **必须**使用词库中为该词条指定的单一词义(如 lime 只能用「酸橙」词义,禁止构建「青绿色」相关情境)
### 2. 词义搭配规则
- **禁止**同一Lesson中出现3个及以上意义完全并列的同词性词如3-4个并列形容词、3个并列动词、4个并列同类名词纯词义分类聚合不是情境化
- **必须**让语义可成对对应的词成对出现在同一Lesson如 these/those、good/bad、clever/silly 等语义对立词对须放在同一Lesson方便教学时区分词义
- **必须**确保同一Lesson中的词属于同一真实场景禁止场景冲突如 tennis racket 只能与 tennis 相关场景同组,禁止与 table tennis 同组armchair/bookcase/lamp 必须搭配 living room禁止搭配 dining room
- **必须**确保同一Lesson中有强关联逻辑的词对其关联性在现实中成立如 crocodile 与 evening 同组须先确认「鳄鱼为夜行动物、evening时更活跃」的逻辑成立方可保留
### 3. 故事适配规则
- **必须**确保4词组合能支撑一个有故事感的Lesson剧本——4词共同指向一个有行动、有情绪、有情节推进的场景禁止4词仅组成一幅静止画面
- **必须**在为含动词的Lesson构建情境时考虑该动词以一般现在时呈现的用法动词教学通常以一般现在时出现若该动词的一般现在时表达的是某人的日常习惯或状态如 wear 的一般现在时表示「某人通常穿着什么」),则情境须对应构建为描述日常习惯的场景
- **必须**根据故事背景和角色人设选词如速猴登场的Lesson须包含 motorbike 等符合角色特征的词汇)
- **禁止**引入会干扰当前故事聚焦的无关词汇(如在无需母亲角色出场的故事单元中,禁止将 mother 放入该Unit的任一Lesson
## 注意事项
- 同拼写不同词性/词义的词视为独立词条禁止放入同一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}"
```