From 21e7f295dd3eebee8d3c747ac99644061a0639c4 Mon Sep 17 00:00:00 2001 From: xiaoyan-bot Date: Fri, 10 Apr 2026 15:54:52 +0800 Subject: [PATCH] auto-sync: unit_challenge 2026-04-10_15:54 --- core/unit_challenge_core/SKILL.md | 30 +++ master/unit_challenge_master/SKILL.md | 71 ++++++ .../listening/L1/listening-drag/SKILL.md | 111 ++++++++ .../listening-drag/references/ability_tags.md | 33 +++ .../references/difficulty_mapping.md | 15 ++ .../references/l1_word_list.json | 1 + .../scripts/generate_listening_drag.py | 240 ++++++++++++++++++ .../L1/listening_picture_selection/SKILL.md | 80 ++++++ .../listening/L2/listening-choicePic/SKILL.md | 112 ++++++++ .../references/ability_tags.md | 28 ++ .../references/difficulty_mapping.md | 15 ++ .../references/l1_word_list.json | 1 + .../scripts/generate_listening_choicePic.py | 178 +++++++++++++ .../listening/L2/listening_form_fill/SKILL.md | 79 ++++++ .../L2/listening_info_match/SKILL.md | 82 ++++++ .../L2/listening_long_conversation/SKILL.md | 83 ++++++ .../L2/listening_short_conversation/SKILL.md | 84 ++++++ questions/reading/reading_cloze/SKILL.md | 81 ++++++ questions/reading/reading_info_match/SKILL.md | 80 ++++++ .../reading/reading_long_passage/SKILL.md | 82 ++++++ questions/reading/reading_open_fill/SKILL.md | 80 ++++++ .../reading/reading_paragraph_match/SKILL.md | 80 ++++++ .../speaking/L1/speaking_pic_qa/SKILL.md | 94 +++++++ .../L2/speaking_topic_discussion/SKILL.md | 76 ++++++ .../common/speaking_daily_qa/SKILL.md | 81 ++++++ .../writing/writing_email_reply/SKILL.md | 87 +++++++ .../writing/writing_picture_writing/SKILL.md | 79 ++++++ 27 files changed, 2063 insertions(+) create mode 100644 core/unit_challenge_core/SKILL.md create mode 100644 master/unit_challenge_master/SKILL.md create mode 100644 questions/listening/L1/listening-drag/SKILL.md create mode 100644 questions/listening/L1/listening-drag/references/ability_tags.md create mode 100644 questions/listening/L1/listening-drag/references/difficulty_mapping.md create mode 100644 questions/listening/L1/listening-drag/references/l1_word_list.json create mode 100755 questions/listening/L1/listening-drag/scripts/generate_listening_drag.py create mode 100644 questions/listening/L1/listening_picture_selection/SKILL.md create mode 100644 questions/listening/L2/listening-choicePic/SKILL.md create mode 100644 questions/listening/L2/listening-choicePic/references/ability_tags.md create mode 100644 questions/listening/L2/listening-choicePic/references/difficulty_mapping.md create mode 100644 questions/listening/L2/listening-choicePic/references/l1_word_list.json create mode 100755 questions/listening/L2/listening-choicePic/scripts/generate_listening_choicePic.py create mode 100644 questions/listening/L2/listening_form_fill/SKILL.md create mode 100644 questions/listening/L2/listening_info_match/SKILL.md create mode 100644 questions/listening/L2/listening_long_conversation/SKILL.md create mode 100644 questions/listening/L2/listening_short_conversation/SKILL.md create mode 100644 questions/reading/reading_cloze/SKILL.md create mode 100644 questions/reading/reading_info_match/SKILL.md create mode 100644 questions/reading/reading_long_passage/SKILL.md create mode 100644 questions/reading/reading_open_fill/SKILL.md create mode 100644 questions/reading/reading_paragraph_match/SKILL.md create mode 100644 questions/speaking/L1/speaking_pic_qa/SKILL.md create mode 100644 questions/speaking/L2/speaking_topic_discussion/SKILL.md create mode 100644 questions/speaking/common/speaking_daily_qa/SKILL.md create mode 100644 questions/writing/writing_email_reply/SKILL.md create mode 100644 questions/writing/writing_picture_writing/SKILL.md diff --git a/core/unit_challenge_core/SKILL.md b/core/unit_challenge_core/SKILL.md new file mode 100644 index 0000000..7dc3292 --- /dev/null +++ b/core/unit_challenge_core/SKILL.md @@ -0,0 +1,30 @@ +--- +name: unit_challenge_core +description: 单元挑战核心层(永久固定,无重大升级不改动),存储所有题型共用的全局规则、通用资源、通用能力,所有题型Skill统一引用,无重复资源存储。 +--- +# Unit Challenge Core 单元挑战核心层(永久固定) +## 核心定位 +所有单元挑战题型的公共依赖层,统一存储所有共用资源和能力,避免重复开发、重复存储,改动一次全题型生效。 +## 通用资源(统一存储,全局唯一) +| 资源类型 | 内容 | 存储路径 | 复用说明 | +|---------|------|----------|----------| +| 全局规则 | 全题型阶段归属规则、能力标签分级规则、输出格式规范、解析标准模板、校验规则 | `/root/.openclaw/workspace-xiaoyan/MEMORY.md` | 所有题型统一引用,规则更新仅需修改此处 | +| 词库资源 | L1共享词库(980词)、L2共享词库(1470词)、超纲词黑名单 | `/root/.openclaw/workspace-xiaoyan/business_knowledge/` | 所有题型统一引用,词库更新仅需修改此处 | +| 通用模板 | 各题型输出模板、解析模板、评分标准模板 | `/root/.openclaw/workspace-xiaoyan/business_knowledge/templates/` | 所有题型统一引用,模板更新仅需修改此处 | +| 版本配置 | 各题型Skill版本号、规则迭代记录 | `/root/.openclaw/workspace-xiaoyan/business_knowledge/version/` | 统一管理版本,可回溯历史版本 | +## 通用能力(统一实现,全局调用) +所有能力已封装为通用接口,各题型Skill直接调用,无需单独开发: +1. **超纲校验接口**:输入单词列表,返回是否超纲、超纲词列表 +2. **格式校验接口**:输入题目内容+题型,返回是否符合格式规范、错误位置 +3. **难度校验接口**:输入题目内容+难度等级,返回是否符合难度要求、问题点 +4. **去重校验接口**:输入题包知识点列表,返回是否有重复知识点、重复位置 +5. **质量评分接口**:输入题目内容+题型,返回0-100分质量评分、扣分点 +6. **多维表入库接口**:输入题目内容+题型,自动入库到互动知识库对应表格 +## 对接规则(当前配置) +- ✅ 暂不对接其他外部系统(CMS/教研系统等) +- ✅ 所有输出仅支持本地文件、飞书多维表两种形式 +- ✅ 所有数据存储在当前工作区内,不对外传输 +## 改动规则 +- 非重大规则升级/词库全量更新,禁止修改本层内容 +- 单个题型调优仅修改对应题型Skill,不得改动核心层 +- 核心层修改前必须经过业务负责人审批 diff --git a/master/unit_challenge_master/SKILL.md b/master/unit_challenge_master/SKILL.md new file mode 100644 index 0000000..baca30c --- /dev/null +++ b/master/unit_challenge_master/SKILL.md @@ -0,0 +1,71 @@ +--- +name: unit_challenge_master +description: 单元挑战总控调度大脑,统一接收所有单元挑战生产需求,自动调度对应阶段、对应题型的技能执行生产,支持自定义题包组合、批量生产、质量校验、版本管理。触发关键词:单元挑战、出题、生成题包、听力题、阅读题、口语题、写作题、题包组合 +--- +# Unit Challenge Master 单元挑战总控Skill +## 核心功能 +作为所有单元挑战题型的唯一对外入口,统一处理用户出题需求,自动完成「需求解析→阶段校验→题型调度→质量校验→结果输出」全流程,支持单题型生产和多题型自定义组合题包生产。 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 题型要求 | ✅ | `听力拖拽题5道+阅读完形填空3道` 或 `L1单元测试题包1套` | 支持两种格式:(1) 明确指定题型+题量;(2) 预制题包模板(L1单元测试/L2单元测试/专项练习等) | +| 难度等级 | ✅ | `A级`/`L1第2阶段`/`Starters 2` | 难度等级或对应阶段 | +| 场景要求 | 🟢 | `场景为校园生活` | 指定题目整体场景,不指定则自动匹配知识点 | +| 知识点范围 | 🟢 | `限定S0-U0-L1单元知识点` | 指定知识点范围,不指定则自动匹配难度对应知识点 | +| 输出格式 | 🟢 | `多维表入库格式`/`教研文档格式` | 输出格式,默认教研文档格式 | +## 调度逻辑(自动执行,无需人工干预) +### 步骤1:需求解析 +自动识别用户需求中的:阶段归属(L1/L2)、题型列表、题量、难度、场景要求 +### 步骤2:合法性校验 +- 校验阶段与题型匹配:比如L1阶段需求不能生产L2专属题型 +- 校验难度与阶段匹配:比如L1阶段难度不能超过Starters 3 +- 校验知识点范围合规:知识点必须属于对应阶段词库 +### 步骤3:任务分发 +- L1阶段需求→分发到L1执行器,调用对应L1专属/共用题型技能 +- L2阶段需求→分发到L2执行器,调用对应L2专属/共用题型技能 +- 多题型组合需求→按题型分别分发,并行生产 +### 步骤4:质量校验(自动执行) +所有生成的题目自动经过三层质量校验: +1. 超纲校验:所有词汇必须属于对应阶段词库 +2. 格式校验:符合对应题型输出规范 +3. 难度校验:听力文本长度/选项复杂度等符合难度要求 +4. 去重校验:同一题包内知识点不重复考察 +### 步骤5:结果输出 +按照要求格式输出,支持: +- 教研文档格式:带解析、能力项、评分标准 +- 多维表入库格式:直接对接互动知识库多维表自动入库 +- 批量导出格式:导出为JSON/Excel格式 +## 内置模块(全部启用) +### 1. 自定义题包组合模块 +支持任意题型组合,示例需求: +- `生成一套L1单元测试题:听力拖拽题3道+听力选图题3道+口语看图回答2道+口语日常回答2道` +- `生成一套L2专项练习题:阅读完形填空5道+写作邮件回复2道+听力长对话3道` +### 2. 版本管理模块 +- 所有题型Skill带版本号,生产题目时自动标注使用的规则版本 +- 支持回溯历史版本生产题目,规则迭代不影响历史题目回溯 +### 3. 批量生产模块 +- 支持一次性生成最多100道题的题包 +- 自动知识点去重,同一知识点在同一题包中最多出现2次 +### 4. 质量评分模块 +- 每道题自动评分(0-100分),低于80分的题目自动拦截重生成 +- 评分维度:词汇难度匹配度、干扰项合理性、格式合规性、逻辑通顺度 +## 输出规范 +统一输出格式: +``` +📦 题包基本信息 +- 阶段:[L1/L2] +- 难度:[难度等级] +- 总题量:[X]道 +- 题型分布:[题型1:X道, 题型2:X道...] +- 生产时间:[YYYY-MM-DD HH:MM] +- 规则版本:[vX.X] +--- +【题目内容】 +[各题型题目按顺序排列] +--- +✅ 质量校验结果 +- 超纲校验:通过/未通过 +- 格式校验:通过/未通过 +- 去重校验:通过/未通过 +- 平均分:[X]分 +``` diff --git a/questions/listening/L1/listening-drag/SKILL.md b/questions/listening/L1/listening-drag/SKILL.md new file mode 100644 index 0000000..a410f1c --- /dev/null +++ b/questions/listening/L1/listening-drag/SKILL.md @@ -0,0 +1,111 @@ +--- +name: listening-drag +description: K12英语听力拖拽题(Listening Drag & Drop)标准化设计、生产、审校工具。别名:听力Part1图片连线、听力Part1人物匹配,三者为同一题型。使用场景:(1) 根据给定知识点、难度等级、人名列表生成符合教研规范的听力拖拽题;(2) 校验听力拖拽题的格式、难度匹配、内容合规性;(3) 批量生产听力拖拽题内容。触发关键词:听力拖拽题、listening drag、拖拽题生产、听力Part1图片连线、听力Part1人物匹配、人物匹配题生产、图片连线题设计 +--- +# Listening Drag 听力拖拽题生产技能 +## 核心功能 +标准化生成符合L1 6个阶段要求的听力拖拽题【阶段归属:L1专属】,自动绑定对应能力标签,支持批量生产与合规校验。 +## 难度对应关系(已适配新的阶段划分) +| 原难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|------------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 强视觉特征,简单句,低干扰 | +| B级 | L1 第3-4阶段 | Starters 3 | 细节特征,复合句,中干扰 | +| C级 | L1 第5-6阶段 | Movers 1 | 状态动作,描述性语言,高干扰 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 情境推断,隐含逻辑,极高干扰 | +## 题型别名说明 +听力拖拽题 = 听力Part1图片连线 = 听力Part1人物匹配,三者为同一题型,规则完全通用。 +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:基础语境理解(场景/物品/动作识别)、多模态信息匹配、注意力分配 +2. 每道小题对应专属能力标签(与教研部统一定义的45个能力tag一一对应): + - Q1:显性事实理解(关键词识别) + - Q2:显性事实理解(关键词识别) + - Q3:多信息整合 + - Q4:干扰抑制 / 语用推断(否定与纠错) +3. 生产时自动根据题目类型填充对应能力标签,无需手动配置 +## 生产流程 +1. 接收输入参数:{knowledge_module}(知识点列表)、{difficulty}(难度等级A/B/C/D)、{name_list}(人名列表)、{name_list_shuffle}(打乱后的人名列表) +2. 读取共享L1词库(路径:`business_knowledge/L1_word_list.json`),优先使用库中词汇,超纲词汇自动拦截提示 +3. 按难度对应关系校验阶段匹配性,超纲内容自动提示 +4. 生成符合难度要求的听力文本、图片描述、任务描述、答案、能力项 +5. 自动执行4层校验:词汇超纲校验、格式合规性校验、难度匹配校验、内容逻辑校验 +6. 输出标准格式的题目内容 +## 脚本使用说明 +执行`scripts/generate_listening_drag.py`即可完成自动化生产: +```bash +python scripts/generate_listening_drag.py \ + --knowledge "blue adj. 蓝色的;red adj. 红色的;green adj. 绿色的" \ + --difficulty "A" \ + --names "Peter,Sue,Julia,Dan,May" \ + --shuffled_names "Julia,Sue,May,Peter,Dan" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库中,禁止使用超纲词汇,无需单独传入或保存词表文件。 +## 输出格式规范 +严格按照以下格式输出,禁止添加额外解释内容: +``` +【听力文本】 +(对话要求自然日常,避免统一使用祈使句,可使用陈述句、疑问句等多种形式,示例参考:) +One - +Girl: Look! The girl with the red shirt is happy. +Boy: Yes. That’s Julia. +Two - +Girl: Who is the girl in the yellow skirt? +Boy: That’s Sue. +Three - +Girl: The girl with the blue watch is pretty. +Boy: That’s May. +Four - +Girl: Is the boy in the white shirt Dan? +Boy: No, sorry. That’s Peter. + +(通用规则:Q4必须包含纠错/否定逻辑,如No, sorry/I mean等表述) + +【图片描述】 +风格: 卡通,简单线条 +场景:[场景名称] + [人物描述] - [动作/特征] ; + [人物描述] - [动作/特征] ; + [人物描述] - [动作/特征] ; + [人物描述] - [动作/特征] ; + [人物描述] - [动作/特征] 。 +【人物顺序】 +[按图片P1-P5顺序排列的人名列表,例如:['Kim', 'Bill', 'Sue', 'Nick', 'Mary']] +【选项排序】 +[打乱后的选项人名列表,与输入的shuffled_names一致,例如:['Bill', 'Mary', 'Nick', 'Kim', 'Sue']] +【任务描述】 +You will hear [角色1] and [角色2] talking about xxx. Drag the names to the correct people. + +【选项数量】 +5 + +【答案】 +[4个答案索引,逗号分隔,例如03,01,00,04] + +【能力项】 +题目1 - 显性事实理解(关键词识别)- [该题考察的核心知识点关键词,例如:blue T-shirt] +题目2 - 显性事实理解(关键词识别)- [该题考察的核心知识点关键词,例如:red dress] +题目3 - 多信息整合 - [该题考察的组合知识点,例如:pink hairband + white skirt] +题目4 - 干扰抑制 / 语用推断(否定与纠错)- [该题考察的核心知识点,例如:green cap] +``` +## 校验规则 +自动校验不通过时直接返回错误原因: +1. 难度匹配错误:知识点超出对应阶段大纲范围 +2. 格式错误:缺少必填字段或格式不符合规范 +3. 逻辑错误:听力文本与图片描述不对应、答案错误 +## 题目解析规则(标准化输出) +### 通用规范 +1. 结构固定:能力点说明 + 做题技巧 + 正向鼓励 +2. 长度控制:80-100字,中文为主,核心关键词可标注英文 +3. 语气正向:避免负面表述,突出技巧可复制性 +### 结构模板 +> ✅ 本题考察【对应能力标签】能力。听的时候抓住人物的关键特征「核心关键词」,对应到正确人名即可。记住这个小技巧,下次碰到这类题就能快速做对哦😉 +### 题型示例 +``` +【题目1】 +【听力文本】 +Daisy: Look! The boy in the blue shirt is eating cake. +Jim: Yes. That’s Peter. +【能力项】 +题目1 - 显性事实理解(关键词识别)- blue shirt +【解析】 +✅ 本题考察【显性事实理解(关键词识别)】能力。听的时候抓住关键特征`blue shirt`,对应穿蓝色衬衫的男孩就是Peter,直接匹配即可。记住抓关键特征就能快速做对哦😉 +``` diff --git a/questions/listening/L1/listening-drag/references/ability_tags.md b/questions/listening/L1/listening-drag/references/ability_tags.md new file mode 100644 index 0000000..d5fe6ea --- /dev/null +++ b/questions/listening/L1/listening-drag/references/ability_tags.md @@ -0,0 +1,33 @@ +# 听力拖拽题能力标签对应表 +## 题型所属分类 +听力拖拽题 = 听力Part1图片连线 = 听力Part1人物匹配 = L1 - Movers - 听力 Part1 人物匹配,三者为完全等价的同一题型,规则通用。 +## 题型固定绑定核心能力标签(与45个能力tag一一对应) +| 能力标签ID(预留) | 能力标签名称 | 能力描述 | +|--------------------|--------------|----------| +| TAG_LISTEN_001 | 基础语境理解 | 场景/物品/动作识别,结合听觉和视觉信息完成人物匹配 | +| TAG_LISTEN_002 | 多模态信息匹配 | 同步处理音频输入与图片视觉信息 | +| TAG_LISTEN_003 | 注意力分配 | 同时处理多组人物特征信息,排除无关干扰 | +## 小题专属能力标签(与教研统一定义对齐) +| 题号 | 能力标签ID(预留) | 能力标签名称 | 能力描述 | +|------|--------------------|--------------|----------| +| Q1 | TAG_LISTEN_004 | 显性事实理解 | 关键词识别,直接抓取听力中的核心名词/形容词 | +| Q2 | TAG_LISTEN_004 | 显性事实理解 | 关键词识别,直接抓取听力中的核心名词/形容词 | +| Q3 | TAG_LISTEN_005 | 多信息整合 | 结合2条及以上特征信息从干扰组中筛选正确答案 | +| Q4 | TAG_LISTEN_006 / TAG_LISTEN_007 | 干扰抑制 / 语用推断 | 多信息筛选排除干扰项/理解对话中的否定、纠错逻辑 | +--- +## 全题型能力标签映射参考表(官方统一) +| 题型分类 | 能力标签 | +|----------|----------| +| L1 - Starters - 听力 Part1 图片连线 | 显性事实理解(关键词识别);基础语境理解(场景/物品/动作识别) | +| L1 - Starters - 听力 Part2 信息填写 | 显性细节理解(数字/时间/地点) | +| L1 - Starters - 听力 Part3 三选一图片选择 | 显性事实理解(单句信息点抓取) | +| L1 - Starters - 听力 Part4 涂色+位置 | 显性事实理解(关键词识别) | +| L1 - Movers - 听力 Part1 人物匹配(本技能对应题型) | 基础语境理解(场景/物品/动作识别) | +| L1 - Movers - 听力 Part2 表格填写 | 显性细节理解(数字/时间/地点);干扰抑制(多信息筛选) | +| L1 - Movers - 听力 Part3 星期活动匹配 | 目的/偏好识别(显性to/for/like) | +| L1 - Movers - 听力 Part4 三选一 | 同义替换识别(词/短语级);目的/偏好识别(显性to/for/like) | +| L1 - Movers(高阶) - 听力 Flyers Part2 表格填写 | 干扰抑制(多信息筛选) | +| L1 - Movers(高阶) - 听力 Flyers Part3 长对话选择 | 多句保持(信息整合) | +| L1 - Movers(高阶) - 听力 Flyers Part4 三选一 | 语用推断(否定与纠错) | +| L1 - Movers(高阶) - 听力 Flyers Part5 信息匹配 | 目的/偏好识别(显性to/for/like) | +| L1 - Movers(高阶) - 听力 KET Part3 长对话选择 | 情绪/态度理解 | diff --git a/questions/listening/L1/listening-drag/references/difficulty_mapping.md b/questions/listening/L1/listening-drag/references/difficulty_mapping.md new file mode 100644 index 0000000..765afa0 --- /dev/null +++ b/questions/listening/L1/listening-drag/references/difficulty_mapping.md @@ -0,0 +1,15 @@ +# 听力拖拽题难度对应表 +## ABCD等级与L1阶段、剑桥考试对应关系 +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 适用学生水平 | +|----------|------------|------------------|--------------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 入门级,接触英语1-2个月 | +| B级 | L1 第3-4阶段 | Starters 3 | 入门级,接触英语3-4个月 | +| C级 | L1 第5-6阶段 | Movers 1 | 进阶级,接触英语5-6个月 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 进阶级,接触英语7-8个月 | +## 各难度生产约束规则 +| 难度等级 | 单句最大单词数 | 词汇范围限制 | 干扰项差异要求 | +|----------|----------------|--------------|----------------| +| A级 | ≤5个单词 | 仅允许L1第1-2单元大纲词汇 | 差异非常明显(颜色/大类别区分) | +| B级 | ≤8个单词 | 仅允许L1第3-4单元大纲词汇 | 差异为细节(花纹/方位区分) | +| C级 | ≤12个单词 | 允许L1全阶段大纲词汇 | 差异为动作/状态(表情/动作区分) | +| D级 | ≤15个单词 | 允许L1+L2前2单元大纲词汇 | 差异为逻辑推断(因果/情境区分) | diff --git a/questions/listening/L1/listening-drag/references/l1_word_list.json b/questions/listening/L1/listening-drag/references/l1_word_list.json new file mode 100644 index 0000000..bb68948 --- /dev/null +++ b/questions/listening/L1/listening-drag/references/l1_word_list.json @@ -0,0 +1 @@ +{"update_time": "2026-03-26", "total_count": 980, "words": [{"word": "red", "pos": "adj", "meaning": "红色的", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "hat", "pos": "n", "meaning": "帽子", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "blue", "pos": "adj", "meaning": "蓝的", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "bag", "pos": "n", "meaning": "袋,包", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "orange", "pos": "adj", "meaning": "橙色的", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "green", "pos": "adj", "meaning": "绿色的", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "dress", "pos": "n", "meaning": "连衣裙", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "there", "pos": "adv", "meaning": "那里", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "put", "pos": "v", "meaning": "放", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "purple", "pos": "adj", "meaning": "紫色的", "level": "LV1(上)", "unit": "S0-U0-L5", "difficulty": 1, "enabled": true}, {"word": "give", "pos": "v", "meaning": "给", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "water", "pos": "n", "meaning": "水", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "here", "pos": "adv", "meaning": "在这里", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "dirty", "pos": "adj", "meaning": "肮脏的", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "clean", "pos": "v", "meaning": "清洁", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "pink", "pos": "adj", "meaning": "粉红色的", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "get", "pos": "v", "meaning": "收到", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "wall", "pos": "n", "meaning": "墙", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "table", "pos": "n", "meaning": "桌子", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "floor", "pos": "n", "meaning": "地板", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "hand", "pos": "n", "meaning": "手", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "foot", "pos": "n", "meaning": "脚", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "black", "pos": "adj", "meaning": "黑的", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "tomato", "pos": "n", "meaning": "西红柿", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "fish", "pos": "n", "meaning": "鱼", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "chicken", "pos": "n", "meaning": "鸡肉", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "nose", "pos": "n", "meaning": "鼻子", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "eye", "pos": "n", "meaning": "眼睛", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "brown", "pos": "adj", "meaning": "棕色的", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "yellow", "pos": "adj", "meaning": "黄色的", "level": "LV1(上)", "unit": "S1-U1-L5", "difficulty": 1, "enabled": true}, {"word": "white", "pos": "adj", "meaning": "白色的", "level": "LV1(上)", "unit": "S1-U1-L5", "difficulty": 1, "enabled": true}, {"word": "go", "pos": "v", "meaning": "去,走", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "dog", "pos": "n", "meaning": "狗", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "come", "pos": "v", "meaning": "来", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "cat", "pos": "n", "meaning": "猫", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "pie", "pos": "n", "meaning": "馅饼", "level": "LV1(上)", "unit": "S1-U2-L2", "difficulty": 1, "enabled": true}, {"word": "can", "pos": "v", "meaning": "能,会", "level": "LV1(上)", "unit": "S1-U2-L4", "difficulty": 1, "enabled": true}, {"word": "open", "pos": "v", "meaning": "打开", "level": "LV1(上)", "unit": "S1-U2-L5", "difficulty": 1, "enabled": true}, {"word": "happy", "pos": "adj", "meaning": "快乐的", "level": "LV1(上)", "unit": "S1-U2-L5", "difficulty": 1, "enabled": true}, {"word": "see", "pos": "v", "meaning": "看见", "level": "LV1(上)", "unit": "S1-U3-L1", "difficulty": 1, "enabled": true}, {"word": "1", "pos": "num", "meaning": "1", "level": "LV1(上)", "unit": "S1-U3-L1", "difficulty": 1, "enabled": true}, {"word": "paper", "pos": "n", "meaning": "纸", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "book", "pos": "n", "meaning": "书", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "3", "pos": "num", "meaning": "3", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "2", "pos": "num", "meaning": "2", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "pen", "pos": "n", "meaning": "钢笔", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "box", "pos": "n", "meaning": "盒子", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "4", "pos": "num", "meaning": "4", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "6", "pos": "num", "meaning": "6", "level": "LV1(上)", "unit": "S1-U3-L4", "difficulty": 1, "enabled": true}, {"word": "5", "pos": "num", "meaning": "5", "level": "LV1(上)", "unit": "S1-U3-L4", "difficulty": 1, "enabled": true}, {"word": "sing", "pos": "v", "meaning": "唱", "level": "LV1(上)", "unit": "S1-U4-L1", "difficulty": 1, "enabled": true}, {"word": "eat", "pos": "v", "meaning": "吃", "level": "LV1(上)", "unit": "S1-U4-L2", "difficulty": 1, "enabled": true}, {"word": "7", "pos": "num", "meaning": "7", "level": "LV1(上)", "unit": "S1-U4-L2", "difficulty": 1, "enabled": true}, {"word": "rug", "pos": "n", "meaning": "小地毯", "level": "LV1(上)", "unit": "S1-U4-L3", "difficulty": 1, "enabled": true}, {"word": "door", "pos": "n", "meaning": " 门", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "bed", "pos": "n", "meaning": "床", "level": "LV1(上)", "unit": "S1-U4-L3", "difficulty": 1, "enabled": true}, {"word": "9", "pos": "num", "meaning": "9", "level": "LV1(上)", "unit": "S1-U4-L4", "difficulty": 1, "enabled": true}, {"word": "8", "pos": "num", "meaning": "8", "level": "LV1(上)", "unit": "S1-U4-L4", "difficulty": 1, "enabled": true}, {"word": "10", "pos": "num", "meaning": "10", "level": "LV1(上)", "unit": "S1-U4-L5", "difficulty": 1, "enabled": true}, {"word": "zoo", "pos": "n", "meaning": "动物园", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "zebra", "pos": "n", "meaning": "斑马", "level": "LV1(上)", "unit": "S1-U7-L2", "difficulty": 1, "enabled": true}, {"word": "young", "pos": "adj", "meaning": "年轻的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "year", "pos": "n", "meaning": "年", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "write", "pos": "v", "meaning": "写", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "woman", "pos": "n", "meaning": "女人", "level": "LV1(上)", "unit": "S1-U5-L1", "difficulty": 1, "enabled": true}, {"word": "window", "pos": "n", "meaning": "窗户", "level": "LV1(上)", "unit": "S1-U12-L4", "difficulty": 1, "enabled": true}, {"word": "warm", "pos": "adj", "meaning": "温暖的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "want", "pos": "v", "meaning": "想要", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "walk", "pos": "v", "meaning": "走", "level": "LV1(上)", "unit": "S1-U7-L2", "difficulty": 1, "enabled": true}, {"word": "very", "pos": "adv", "meaning": "非常", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "under", "pos": "prep", "meaning": "在...下面", "level": "LV1(上)", "unit": "S2-U14-L5", "difficulty": 1, "enabled": true}, {"word": "try", "pos": "n", "meaning": "尝试", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "try", "pos": "v", "meaning": "尝试", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "tree", "pos": "n", "meaning": "树", "level": "LV1(上)", "unit": "S1-U7-L1", "difficulty": 1, "enabled": true}, {"word": "train", "pos": "n", "meaning": "火车", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "too", "pos": "adv", "meaning": "也", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "tomorrow", "pos": "adv", "meaning": "明天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "tomorrow", "pos": "n", "meaning": "明天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "today", "pos": "adv", "meaning": "今天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "today", "pos": "n", "meaning": "今天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "tiger", "pos": "n", "meaning": "老虎", "level": "LV1(上)", "unit": "S1-U5-L3", "difficulty": 1, "enabled": true}, {"word": "those", "pos": "det", "meaning": "那些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "those", "pos": "pron", "meaning": "那些", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "this", "pos": "det", "meaning": "这个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "this", "pos": "pron", "meaning": "这个", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "these", "pos": "det", "meaning": "这些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "these", "pos": "pron", "meaning": "这些", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "that", "pos": "det", "meaning": "那个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "that", "pos": "pron", "meaning": "那个", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "tell", "pos": "v", "meaning": "告诉", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "teacher", "pos": "n", "meaning": "老师", "level": "LV1(上)", "unit": "S2-U14-L2", "difficulty": 1, "enabled": true}, {"word": "talk", "pos": "v", "meaning": "说话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "swim", "pos": "v", "meaning": "游泳", "level": "LV1(上)", "unit": "S1-U11-L5", "difficulty": 1, "enabled": true}, {"word": "sun", "pos": "n", "meaning": "太阳", "level": "LV1(上)", "unit": "S1-U8-L2", "difficulty": 1, "enabled": true}, {"word": "study", "pos": "v", "meaning": "学习", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "student", "pos": "n", "meaning": "学生", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "speak", "pos": "v", "meaning": "说", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "some", "pos": "det", "meaning": "一些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sofa", "pos": "n", "meaning": "沙发", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sock", "pos": "n", "meaning": "袜子", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "small", "pos": "adj", "meaning": "小的", "level": "LV1(上)", "unit": "S1-U9-L1", "difficulty": 1, "enabled": true}, {"word": "sleep", "pos": "v", "meaning": "睡觉", "level": "LV1(上)", "unit": "S1-U7-L4", "difficulty": 1, "enabled": true}, {"word": "skirt", "pos": "n", "meaning": "裙子", "level": "LV1(上)", "unit": "S1-U9-L4", "difficulty": 1, "enabled": true}, {"word": "sit", "pos": "v", "meaning": "坐下", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "sister", "pos": "n", "meaning": "姐姐、妹妹", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "short", "pos": "adj", "meaning": "短的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "shoe", "pos": "n", "meaning": "鞋", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "shirt", "pos": "n", "meaning": "衬衫", "level": "LV1(上)", "unit": "S1-U9-L1", "difficulty": 1, "enabled": true}, {"word": "ship", "pos": "n", "meaning": "船", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sheep", "pos": "n", "meaning": "绵羊", "level": "LV1(上)", "unit": "S1-U5-L3", "difficulty": 1, "enabled": true}, {"word": "school", "pos": "n", "meaning": "学校", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "say", "pos": "v", "meaning": "说", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sad", "pos": "adj", "meaning": "悲伤的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "run", "pos": "v", "meaning": "跑", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "ruler", "pos": "n", "meaning": "尺子", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "room", "pos": "n", "meaning": "房间", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "rice", "pos": "n", "meaning": "米饭", "level": "LV1(上)", "unit": "S1-U6-L4", "difficulty": 1, "enabled": true}, {"word": "read", "pos": "v", "meaning": "阅读", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "radio", "pos": "n", "meaning": "收音机", "level": "LV1(上)", "unit": "S1-U9-L2", "difficulty": 1, "enabled": true}, {"word": "potato", "pos": "n", "meaning": "土豆", "level": "LV1(上)", "unit": "S1-U7-L3", "difficulty": 1, "enabled": true}, {"word": "play", "pos": "v", "meaning": "玩", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "plane", "pos": "n", "meaning": "飞机", "level": "LV1(上)", "unit": "S1-U8-L3", "difficulty": 1, "enabled": true}, {"word": "pig", "pos": "n", "meaning": "猪", "level": "LV1(上)", "unit": "S1-U7-L4", "difficulty": 1, "enabled": true}, {"word": "phone", "pos": "n", "meaning": "电话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "phone", "pos": "v", "meaning": "给…...打电话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "people", "pos": "n", "meaning": "人", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "pencil", "pos": "n", "meaning": "铅笔", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "pea", "pos": "n", "meaning": "豌豆", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "PE", "pos": "n", "meaning": "体育", "level": "LV1(上)", "unit": "S1-U10-L4", "difficulty": 1, "enabled": true}, {"word": "paper", "pos": "adj", "meaning": "纸质的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "paint", "pos": "n", "meaning": "绘画颜料", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "paint", "pos": "v", "meaning": "(用颜料)绘画", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "orange", "pos": "n", "meaning": "橙子", "level": "LV1(上)", "unit": "S1-U10-L3", "difficulty": 1, "enabled": true}, {"word": "open", "pos": "adj", "meaning": "开着的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "one", "pos": "det", "meaning": "一个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "one", "pos": "pron", "meaning": "一个人(或物)", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "old", "pos": "adj", "meaning": "年老的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "now", "pos": "adv", "meaning": "现在", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "night", "pos": "n", "meaning": "夜晚", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "nice", "pos": "adj", "meaning": "好的", "level": "LV1(上)", "unit": "S1-U6-L3", "difficulty": 1, "enabled": true}, {"word": "new", "pos": "adj", "meaning": "新的", "level": "LV1(上)", "unit": "S1-U9-L2", "difficulty": 1, "enabled": true}, {"word": "mum", "pos": "n", "meaning": "妈妈", "level": "LV1(上)", "unit": "S1-U8-L4", "difficulty": 1, "enabled": true}, {"word": "mouth", "pos": "n", "meaning": "嘴巴", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "mother", "pos": "n", "meaning": "母亲", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "morning", "pos": "n", "meaning": "早上", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "month", "pos": "n", "meaning": "月", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "monkey", "pos": "n", "meaning": "猴子", "level": "LV1(上)", "unit": "S1-U7-L1", "difficulty": 1, "enabled": true}, {"word": "minute", "pos": "n", "meaning": "分钟", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "mine", "pos": "pron", "meaning": "我的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "milk", "pos": "n", "meaning": "牛奶", "level": "LV1(上)", "unit": "S1-U5-L2", "difficulty": 1, "enabled": true}, {"word": "men", "pos": "n", "meaning": "男人(man 的复数)", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "meat", "pos": "n", "meaning": "肉类", "level": "LV1(上)", "unit": "S1-U10-L3", "difficulty": 1, "enabled": true}, {"word": "me", "pos": "pron", "meaning": "我", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "mat", "pos": "n", "meaning": "地垫", "level": "LV1(上)", "unit": "S2-U14-L4", "difficulty": 1, "enabled": true}, {"word": "many", "pos": "det", "meaning": "许多", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "man", "pos": "n", "meaning": "男人", "level": "LV1(上)", "unit": "S1-U5-L1", "difficulty": 1, "enabled": true}, {"word": "make", "pos": "v", "meaning": "制造", "level": "LV1(上)", "unit": "S1-U6-L3", "difficulty": 1, "enabled": true}, {"word": "love", "pos": "v", "meaning": "爱", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "lots of", "pos": "det", "meaning": "大量的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "long", "pos": "adj", "meaning": "长的", "level": "LV1(上)", "unit": "S1-U7-L5 ", "difficulty": 1, "enabled": true}]} diff --git a/questions/listening/L1/listening-drag/scripts/generate_listening_drag.py b/questions/listening/L1/listening-drag/scripts/generate_listening_drag.py new file mode 100755 index 0000000..cf3ef3c --- /dev/null +++ b/questions/listening/L1/listening-drag/scripts/generate_listening_drag.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python3 +import argparse +import json +import re +import sys +import os +from typing import List, Dict + +# 角色名称库 +CHARACTERS = ["Otis", "Ben", "Skylar", "Brainy", "Daisy", "Jim", "Paul", "Fred"] + +# 单词库路径 +WORD_LIST_PATH = os.path.join(os.path.dirname(__file__), "../references/l1_word_list.json") + +# 难度对应规则 +DIFFICULTY_RULES = { + "A": { + "visual": "强视觉特征,依赖大色块、明显大物品区分", + "audio": "简单句,语速慢,SVO结构,关键词后置", + "interference": "低,干扰组差异非常明显,仅需识别基础名词或颜色形容词" + }, + "B": { + "visual": "细节特征,依赖花纹、衣着款式、具体方位", + "audio": "复合句,包含介词短语、连词and/but", + "interference": "中,干扰组差异在于细节,需分辨修饰性短语" + }, + "C": { + "visual": "状态与动作,依赖面部表情、身体姿态、动作细节", + "audio": "描述性语言,使用丰富的形容词、副词,语速正常", + "interference": "高,干扰组动作极其相似,需分辨程度副词或具体形容词" + }, + "D": { + "visual": "情境推断,依赖抽象线索或因果状态", + "audio": "隐含逻辑,包含推测、因果关系,语速较快", + "interference": "极高,干扰组无法直接通过视觉匹配,需结合上下文逻辑推理排除" + } +} + +# 能力标签对应(与官方统一定义对齐) +ABILITY_TAGS = [ + "显性事实理解(关键词识别)", + "显性事实理解(关键词识别)", + "多信息整合", + "干扰抑制 / 语用推断(否定与纠错)" +] + +def parse_args(): + parser = argparse.ArgumentParser(description="Generate Listening Drag & Drop questions") + parser.add_argument("--knowledge", required=True, help="知识点列表,分号分隔") + parser.add_argument("--difficulty", required=True, choices=["A", "B", "C", "D"], help="难度等级") + parser.add_argument("--names", required=True, help="人名列表,逗号分隔") + parser.add_argument("--shuffled_names", required=True, help="打乱后的人名列表,逗号分隔") + return parser.parse_args() + +def load_word_list() -> List[str]: + """加载L1单词库""" + try: + with open(WORD_LIST_PATH, "r", encoding="utf-8") as f: + data = json.load(f) + return [word["word"].lower() for word in data["words"]] + except Exception as e: + print(f"警告:加载单词库失败,跳过超纲校验:{str(e)}", file=sys.stderr) + return [] + +def validate_knowledge_with_wordlist(knowledge: str, word_list: List[str]) -> bool: + """校验知识点是否在单词库中""" + if not word_list: + return True + knowledge_words = [item.split()[0].lower() for item in knowledge.split(";") if item.strip()] + out_of_range = [] + for word in knowledge_words: + if word not in word_list: + out_of_range.append(word) + if out_of_range: + print(f"错误:以下知识点超纲,不在L1单词库中:{','.join(out_of_range)}", file=sys.stderr) + return False + return True + +def validate_input(args) -> bool: + """校验输入参数合法性""" + names = args.names.split(",") + shuffled_names = args.shuffled_names.split(",") + if len(names) != 5 or len(shuffled_names) !=5: + print("错误:人名列表必须包含5个名字", file=sys.stderr) + return False + if set(names) != set(shuffled_names): + print("错误:打乱后的人名列表与原列表不一致", file=sys.stderr) + return False + if not args.knowledge.strip(): + print("错误:知识点不能为空", file=sys.stderr) + return False + # 超纲校验 + word_list = load_word_list() + if not validate_knowledge_with_wordlist(args.knowledge, word_list): + return False + return True + +def generate_prompt(args) -> str: + """生成生产prompt""" + difficulty_rule = DIFFICULTY_RULES[args.difficulty] + return f""" +你是资深K12英语教研专家,严格按照以下要求生成听力拖拽题: +## 难度要求 +{difficulty_rule} +## 输入参数 +知识点:{args.knowledge} +人名列表:{args.names} +打乱后人名列表:{args.shuffled_names} +## 题目要求 +1. 共4道小题,对应P1-P4,P5为干扰项 +2. P3-P5为干扰组,共享一个核心特征,仅通过细节区分 +3. Q4必须包含纠错逻辑(如No, sorry/I mean)或否定逻辑 +4. 角色从{CHARACTERS}中选择2个不同的角色 +5. 对话要求自然日常,避免统一使用祈使句,可使用陈述句、疑问句等多种形式,参考示例: +One - +Girl: Look! The girl with the red shirt is happy. +Boy: Yes. That’s Julia. +Two - +Girl: Who is the girl in the yellow skirt? +Boy: That’s Sue. +Three - +Girl: The girl with the blue watch is pretty. +Boy: That’s May. +Four - +Girl: Is the boy in the white shirt Dan? +Boy: No, sorry. That’s Peter. +## 输出格式 +严格按照以下格式输出,不要添加任何额外内容: +【听力文本】 +One - +[角色1]: [对话指向P1] +[角色2]: Yes. That’s [Name1]. +Two - +[角色1]: [对话指向P2] +[角色2]: That’s [Name2]. +Three - +[角色1]: [对话指向P3,从干扰组筛选] +[角色2]: That’s [Name3]. +Four - +[角色1]: [对话指向P4,包含纠错逻辑] +[角色2]: Oh! That’s [Name4]. +【图片描述】 +风格: 卡通,简单线条 +场景:[符合知识点的场景] + [人物1描述] - [动作/特征] ; + [人物2描述] - [动作/特征] ; + [人物3描述] - [动作/特征] ; + [人物4描述] - [动作/特征] ; + [人物5描述] - [动作/特征] 。 +【人物顺序】 +[{args.names.split(',')}] +【选项排序】 +[{args.shuffled_names.split(',')}] +【任务描述】 +You will hear [角色1] and [角色2] talking about [场景相关内容]. Drag the names to the correct people. +【选项数量】 +5 +【答案】 +[Name1在打乱列表中的索引,Name2索引,Name3索引,Name4索引],例如03,01,00,04 +【能力项】 +题目1 - 显性事实理解(关键词识别)- [Q1考察的核心知识点关键词,例如:blue T-shirt] +题目2 - 显性事实理解(关键词识别)- [Q2考察的核心知识点关键词,例如:red dress] +题目3 - 多信息整合 - [Q3考察的组合知识点关键词,例如:pink hairband + white skirt] +题目4 - 干扰抑制 / 语用推断(否定与纠错)- [Q4考察的核心知识点关键词,例如:green cap] +""" + +def call_llm(prompt: str) -> str: + """调用大模型生成内容(此处留空,实际使用时替换为对应模型调用逻辑)""" + # 实际生产环境替换为模型API调用 + print("请输入模型生成的内容:") + return sys.stdin.read() + +def validate_output(output: str, original_names: List[str], shuffled_names: List[str]) -> bool: + """校验输出格式合法性""" + # 检查必填字段是否存在 + required_sections = ["【听力文本】", "【图片描述】", "【人物顺序】", "【选项排序】", "【任务描述】", "【选项数量】", "【答案】", "【能力项】"] + for section in required_sections: + if section not in output: + print(f"错误:缺少必填字段{section}", file=sys.stderr) + return False + # 校验人物顺序格式 + person_order_match = re.search(r"【人物顺序】\s*\[(.*)\]", output) + if not person_order_match: + print("错误:人物顺序格式不正确", file=sys.stderr) + return False + person_order = [name.strip().strip("'\"") for name in person_order_match.group(1).split(",")] + if person_order != original_names: + print(f"错误:人物顺序与输入人名列表不一致,预期:{original_names},实际:{person_order}", file=sys.stderr) + return False + # 校验选项排序格式 + option_order_match = re.search(r"【选项排序】\s*\[(.*)\]", output) + if not option_order_match: + print("错误:选项排序格式不正确", file=sys.stderr) + return False + option_order = [name.strip().strip("'\"") for name in option_order_match.group(1).split(",")] + if option_order != shuffled_names: + print(f"错误:选项排序与输入打乱后的人名列表不一致,预期:{shuffled_names},实际:{option_order}", file=sys.stderr) + return False + # 校验答案格式 + answer_match = re.search(r"【答案】\s*([\d,]+)", output) + if not answer_match: + print("错误:答案格式不正确", file=sys.stderr) + return False + answers = answer_match.group(1).split(",") + if len(answers) !=4: + print("错误:答案必须包含4个索引", file=sys.stderr) + return False + for ans in answers: + if not ans.isdigit() or int(ans) <0 or int(ans)>=5: + print(f"错误:答案索引{ans}不合法", file=sys.stderr) + return False + # 校验答案对应的人名是否在列表中 + for ans in answers: + idx = int(ans) + if idx >= len(shuffled_names): + print(f"错误:答案索引{idx}超出范围", file=sys.stderr) + return False + # 校验能力项格式 + ability_pattern = r"【能力项】\s*题目1 - .* - .*\s*题目2 - .* - .*\s*题目3 - .* - .*\s*题目4 - .* - .*" + if not re.search(ability_pattern, output, re.DOTALL): + print("错误:能力项格式不正确,必须按以下格式分行列出:题目N - 能力标签 - 考察知识点", file=sys.stderr) + return False + return True + +def main(): + args = parse_args() + if not validate_input(args): + sys.exit(1) + prompt = generate_prompt(args) + output = call_llm(prompt) + original_names = args.names.split(",") + shuffled_names = args.shuffled_names.split(",") + if validate_output(output, original_names, shuffled_names): + print(output) + sys.exit(0) + else: + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/questions/listening/L1/listening_picture_selection/SKILL.md b/questions/listening/L1/listening_picture_selection/SKILL.md new file mode 100644 index 0000000..73d5e47 --- /dev/null +++ b/questions/listening/L1/listening_picture_selection/SKILL.md @@ -0,0 +1,80 @@ +--- +name: listening_picture_selection +description: K12英语听力选图题标准化设计、生产、审校工具。对应题型:L1 - Starters - 听力 Part6 听力选图,考察核心能力:图片信息识别、听力信息匹配、快速反应。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力选图题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力选图题。触发关键词:听力选图、选图题、listening picture selection、听力Part6选图、图片匹配题 +--- +# Listening Picture Selection 听力选图题生产技能 +## 题型说明 +本技能对应官方题型:**L1 - Starters - 听力 Part6 听力选图【阶段归属:L1专属】**,考察核心能力为**图片信息识别(听力信息匹配)**:学生听5-6个单句/短对话,每个对应一组图片,选出与听力内容匹配的图片,考察对图片信息和听力信息的快速匹配能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 每组图片3张,类别完全不同,听力为3-5词简单句 | +| B级 | L1 第3-4阶段 | Starters 3 | 每组图片3张,为同类物品不同属性,听力为5-8词句子 | +| C级 | L1 第5-6阶段 | Movers 1 | 每组图片3张,为同一场景不同动作,听力为8-10词句子 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 每组图片3张,为同一场景不同逻辑,听力为10-12词句子 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、图片识别、信息匹配 +2. 能力标签分级规则: + - 1级标签统一使用:**听力理解** + - 2级标签根据考察点动态匹配:物品匹配/属性匹配/动作匹配/场景匹配 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:5-6个听力单句/短对话、每组对应3张图片描述、正确答案列表 +2. 难度匹配规则: + - A级:图片差异极大,听力关键词直接对应正确图片 + - B级:图片为同类物品不同颜色/大小,听力包含属性描述 + - C级:图片为同一人物不同动作,听力包含动作描述 + - D级:图片为同一场景不同逻辑,听力包含逻辑描述 +3. 听力文本要求:简短清晰,符合对应难度 +4. 图片描述要求:清晰标注每张图片的核心差异点 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1套(6小题) | +| 场景要求 | 🟢 | `场景为户外玩耍` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听句子,选出与你听到的内容相符的图片] +--- +【题目1】 +【听力文本】 +1. [句子1内容] +【图片描述】 +A: [图片A核心特征] +B: [图片B核心特征] +C: [图片C核心特征] +2. [句子2内容] +【图片描述】 +A: [图片A核心特征] +B: [图片B核心特征] +C: [图片C核心特征] +【正确答案】 +1. [正确选项字母] +2. [正确选项字母] +【能力项】 +题目1 - 听力理解([2级标签])- [考察核心知识点] +题目2 - 听力理解([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:听力句子长度、图片差异度不符合对应等级要求 +4. 逻辑校验:答案与听力内容不匹配 +## 脚本使用说明 +执行`scripts/generate_listening_picture_selection.py`完成自动化生产: +```bash +python scripts/generate_listening_picture_selection.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "户外场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/listening/L2/listening-choicePic/SKILL.md b/questions/listening/L2/listening-choicePic/SKILL.md new file mode 100644 index 0000000..13592d8 --- /dev/null +++ b/questions/listening/L2/listening-choicePic/SKILL.md @@ -0,0 +1,112 @@ +--- +name: listening-choicePic +description: K12英语听力三选一图片选择题标准化设计、生产、审校工具。对应题型:L1 - Starters - 听力 Part3 三选一图片选择,考察核心能力:显性事实理解(单句信息点抓取)。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力三选一题目;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力三选一题目。触发关键词:听力三选一、图片选择题、listening choice pic、听力Part3三选一、单句信息点抓取题 +--- +# Listening ChoicePic 听力三选一图片选择题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 听力 Part3 三选一图片选择【阶段归属:L2专属】**,考察核心能力为**显性事实理解(单句信息点抓取)**:学生听单句听力内容,从3张图片选项中选出与听力内容匹配的正确答案。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 选项差异极大(类别完全不同),听力为3-5词简单句,关键词后置 | +| B级 | L1 第3-4阶段 | Starters 3 | 选项为同类物品差异(颜色/大小不同),听力为5-8词简单句 | +| C级 | L1 第5-6阶段 | Movers 1 | 选项为动作/状态差异,听力为8-12词带介词短语的句子 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 选项为场景/逻辑差异,听力为12-15词带简单从句的句子 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、图片信息识别、单句信息抓取 +2. 每道题专属能力标签(与官方45个能力tag对齐): + - 所有题目统一绑定:**显性事实理解(单句信息点抓取)** +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1段听力文本(单句,符合难度要求)、3张图片选项(1个正确,2个干扰) +2. 干扰项设置规则: + - A级:干扰项与正确选项类别完全不同(如:猫vs书vs苹果) + - B级:干扰项与正确选项为同类别不同属性(如:红苹果vs绿苹果vs黄苹果) + - C级:干扰项与正确选项为同物品不同动作/状态(如:吃苹果vs洗苹果vs切苹果) + - D级:干扰项与正确选项为同场景不同逻辑(如:男孩拿苹果vs女孩拿苹果vs男孩拿橘子) +3. 听力文本要求:自然日常,可使用陈述句、疑问句、祈使句等多种句式,避免生硬表达 +4. 图片描述要求:清晰标注3张图片的核心差异点,便于图片生产 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为家庭厨房` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听句子,选出与你听到的内容相符的图片] +--- +【题目1】 +【听力文本】 +[角色]: [符合难度的单句听力内容] +【图片描述】 +A: [图片A核心特征描述] +B: [图片B核心特征描述] +C: [图片C核心特征描述] +【正确答案】 +[正确选项字母,例如:A] +【能力项】 +题目1 - 显性事实理解(单句信息点抓取)- [考察核心知识点,例如:red apple] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:听力句子长度、词汇难度不符合对应等级要求 +4. 逻辑校验:干扰项设置不符合对应难度的差异要求 +## 题目解析规则(标准化输出) +### 通用规范 +1. 结构固定:能力点说明 + 做题技巧 + 正向鼓励 +2. 长度控制:80-100字,中文为主,核心关键词可标注英文 +3. 语气正向:避免负面表述,突出技巧可复制性 +### 结构模板 +> ✅ 本题考察【对应能力标签】能力。听的时候抓住关键信息「核心关键词」,A/B选项是干扰项不符合描述,直接选C。记住这个小技巧,下次碰到这类题就能快速做对哦😉 +### 题型示例 +#### 格式变体1:完整格式(含解析,教研审校用) +``` +【题目3】 +【听力文本】 +Daisy: The pink flower is beautiful. +【图片描述】 +A: 棕色的木门 +B: 白色的运动鞋 +C: 粉色的花朵 +【正确答案】 +C +【能力项】 +题目3 - 显性事实理解(关键词识别)- flower +【解析】 +✅ 本题考察【显性事实理解(关键词识别)】能力。听的时候抓住关键信息`pink flower`,A木门、B运动鞋都是干扰项,直接选C。记住听到物品名词直接对应图片,这类题就能快速做对哦😉 +``` +#### 格式变体2:简化格式(批量生产导入用) +``` +1. +【听力文本】 +Amy: This is a bag. +【图片描述】 +选项A: 一个蓝色双肩背包。卡通风格。 +选项B: 一个红色圆形苹果。卡通风格。 +选项C: 一支黄色木质铅笔。卡通风格。 +【能力项】 +显性事实理解(关键词识别)- bag +【题目】 +What is Amy talking about? +【答案】 +A +``` +## 脚本使用说明 +执行`scripts/generate_listening_choicePic.py`完成自动化生产: +```bash +python scripts/generate_listening_choicePic.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "家庭场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/listening/L2/listening-choicePic/references/ability_tags.md b/questions/listening/L2/listening-choicePic/references/ability_tags.md new file mode 100644 index 0000000..48fedab --- /dev/null +++ b/questions/listening/L2/listening-choicePic/references/ability_tags.md @@ -0,0 +1,28 @@ +# 听力三选一图片选择题能力标签对应表 +## 题型所属分类 +听力三选一图片选择题 = L1 - Starters - 听力 Part3 三选一图片选择 +## 题型固定绑定核心能力标签(与45个能力tag一一对应) +| 能力标签ID(预留) | 能力标签名称 | 能力描述 | +|--------------------|--------------|----------| +| TAG_LISTEN_008 | 显性事实理解 | 单句信息点抓取,直接从听力中提取核心信息 | +| TAG_LISTEN_009 | 图片信息识别 | 识别图片中的核心特征、物品、动作 | +| TAG_LISTEN_010 | 信息匹配能力 | 匹配听觉信息与视觉图片信息 | +## 题目专属能力标签 +每道题统一绑定:**显性事实理解(单句信息点抓取)**,自动标注对应考察的核心知识点。 +--- +## 全题型能力标签映射参考表(官方统一) +| 题型分类 | 能力标签 | +|----------|----------| +| L1 - Starters - 听力 Part1 图片连线 | 显性事实理解(关键词识别);基础语境理解(场景/物品/动作识别) | +| L1 - Starters - 听力 Part2 信息填写 | 显性细节理解(数字/时间/地点) | +| L1 - Starters - 听力 Part3 三选一图片选择(本技能对应题型) | 显性事实理解(单句信息点抓取) | +| L1 - Starters - 听力 Part4 涂色+位置 | 显性事实理解(关键词识别) | +| L1 - Movers - 听力 Part1 人物匹配 | 基础语境理解(场景/物品/动作识别) | +| L1 - Movers - 听力 Part2 表格填写 | 显性细节理解(数字/时间/地点);干扰抑制(多信息筛选) | +| L1 - Movers - 听力 Part3 星期活动匹配 | 目的/偏好识别(显性to/for/like) | +| L1 - Movers - 听力 Part4 三选一 | 同义替换识别(词/短语级);目的/偏好识别(显性to/for/like) | +| L1 - Movers(高阶) - 听力 Flyers Part2 表格填写 | 干扰抑制(多信息筛选) | +| L1 - Movers(高阶) - 听力 Flyers Part3 长对话选择 | 多句保持(信息整合) | +| L1 - Movers(高阶) - 听力 Flyers Part4 三选一 | 语用推断(否定与纠错) | +| L1 - Movers(高阶) - 听力 Flyers Part5 信息匹配 | 目的/偏好识别(显性to/for/like) | +| L1 - Movers(高阶) - 听力 KET Part3 长对话选择 | 情绪/态度理解 | diff --git a/questions/listening/L2/listening-choicePic/references/difficulty_mapping.md b/questions/listening/L2/listening-choicePic/references/difficulty_mapping.md new file mode 100644 index 0000000..e9d1edb --- /dev/null +++ b/questions/listening/L2/listening-choicePic/references/difficulty_mapping.md @@ -0,0 +1,15 @@ +# 听力三选一图片选择题难度对应表 +## 难度等级与L1阶段、剑桥考试对应关系 +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 适用学生水平 | +|----------|------------|------------------|--------------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 入门级,接触英语1-2个月 | +| B级 | L1 第3-4阶段 | Starters 3 | 入门级,接触英语3-4个月 | +| C级 | L1 第5-6阶段 | Movers 1 | 进阶级,接触英语5-6个月 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 进阶级,接触英语7-8个月 | +## 各难度生产约束规则 +| 难度等级 | 单句最大单词数 | 词汇范围限制 | 干扰项差异要求 | +|----------|----------------|--------------|----------------| +| A级 | ≤5个单词 | 仅允许L1第1-2单元大纲词汇 | 选项类别完全不同(如:动物vs食物vs文具) | +| B级 | ≤8个单词 | 仅允许L1第3-4单元大纲词汇 | 同类别不同属性(如:红苹果vs绿苹果vs黄苹果) | +| C级 | ≤12个单词 | 允许L1全阶段大纲词汇 | 同物品不同动作/状态(如:吃苹果vs洗苹果vs切苹果) | +| D级 | ≤15个单词 | 允许L1+L2前2单元大纲词汇 | 同场景不同逻辑(如:男孩拿苹果vs女孩拿苹果vs男孩拿橘子) | diff --git a/questions/listening/L2/listening-choicePic/references/l1_word_list.json b/questions/listening/L2/listening-choicePic/references/l1_word_list.json new file mode 100644 index 0000000..bb68948 --- /dev/null +++ b/questions/listening/L2/listening-choicePic/references/l1_word_list.json @@ -0,0 +1 @@ +{"update_time": "2026-03-26", "total_count": 980, "words": [{"word": "red", "pos": "adj", "meaning": "红色的", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "hat", "pos": "n", "meaning": "帽子", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "blue", "pos": "adj", "meaning": "蓝的", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "bag", "pos": "n", "meaning": "袋,包", "level": "LV1(上)", "unit": "S0-U0-L1", "difficulty": 1, "enabled": true}, {"word": "orange", "pos": "adj", "meaning": "橙色的", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "green", "pos": "adj", "meaning": "绿色的", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "dress", "pos": "n", "meaning": "连衣裙", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "there", "pos": "adv", "meaning": "那里", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "put", "pos": "v", "meaning": "放", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "purple", "pos": "adj", "meaning": "紫色的", "level": "LV1(上)", "unit": "S0-U0-L5", "difficulty": 1, "enabled": true}, {"word": "give", "pos": "v", "meaning": "给", "level": "LV1(上)", "unit": "S0-U0-L3", "difficulty": 1, "enabled": true}, {"word": "water", "pos": "n", "meaning": "水", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "here", "pos": "adv", "meaning": "在这里", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "dirty", "pos": "adj", "meaning": "肮脏的", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "clean", "pos": "v", "meaning": "清洁", "level": "LV1(上)", "unit": "S0-U0-L4", "difficulty": 1, "enabled": true}, {"word": "pink", "pos": "adj", "meaning": "粉红色的", "level": "LV1(上)", "unit": "S0-U0-L2", "difficulty": 1, "enabled": true}, {"word": "get", "pos": "v", "meaning": "收到", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "wall", "pos": "n", "meaning": "墙", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "table", "pos": "n", "meaning": "桌子", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "floor", "pos": "n", "meaning": "地板", "level": "LV1(上)", "unit": "S1-U1-L1", "difficulty": 1, "enabled": true}, {"word": "hand", "pos": "n", "meaning": "手", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "foot", "pos": "n", "meaning": "脚", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "black", "pos": "adj", "meaning": "黑的", "level": "LV1(上)", "unit": "S1-U1-L2", "difficulty": 1, "enabled": true}, {"word": "tomato", "pos": "n", "meaning": "西红柿", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "fish", "pos": "n", "meaning": "鱼", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "chicken", "pos": "n", "meaning": "鸡肉", "level": "LV1(上)", "unit": "S1-U1-L3", "difficulty": 1, "enabled": true}, {"word": "nose", "pos": "n", "meaning": "鼻子", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "eye", "pos": "n", "meaning": "眼睛", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "brown", "pos": "adj", "meaning": "棕色的", "level": "LV1(上)", "unit": "S1-U1-L4", "difficulty": 1, "enabled": true}, {"word": "yellow", "pos": "adj", "meaning": "黄色的", "level": "LV1(上)", "unit": "S1-U1-L5", "difficulty": 1, "enabled": true}, {"word": "white", "pos": "adj", "meaning": "白色的", "level": "LV1(上)", "unit": "S1-U1-L5", "difficulty": 1, "enabled": true}, {"word": "go", "pos": "v", "meaning": "去,走", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "dog", "pos": "n", "meaning": "狗", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "come", "pos": "v", "meaning": "来", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "cat", "pos": "n", "meaning": "猫", "level": "LV1(上)", "unit": "S1-U2-L1", "difficulty": 1, "enabled": true}, {"word": "pie", "pos": "n", "meaning": "馅饼", "level": "LV1(上)", "unit": "S1-U2-L2", "difficulty": 1, "enabled": true}, {"word": "can", "pos": "v", "meaning": "能,会", "level": "LV1(上)", "unit": "S1-U2-L4", "difficulty": 1, "enabled": true}, {"word": "open", "pos": "v", "meaning": "打开", "level": "LV1(上)", "unit": "S1-U2-L5", "difficulty": 1, "enabled": true}, {"word": "happy", "pos": "adj", "meaning": "快乐的", "level": "LV1(上)", "unit": "S1-U2-L5", "difficulty": 1, "enabled": true}, {"word": "see", "pos": "v", "meaning": "看见", "level": "LV1(上)", "unit": "S1-U3-L1", "difficulty": 1, "enabled": true}, {"word": "1", "pos": "num", "meaning": "1", "level": "LV1(上)", "unit": "S1-U3-L1", "difficulty": 1, "enabled": true}, {"word": "paper", "pos": "n", "meaning": "纸", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "book", "pos": "n", "meaning": "书", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "3", "pos": "num", "meaning": "3", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "2", "pos": "num", "meaning": "2", "level": "LV1(上)", "unit": "S1-U3-L2", "difficulty": 1, "enabled": true}, {"word": "pen", "pos": "n", "meaning": "钢笔", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "box", "pos": "n", "meaning": "盒子", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "4", "pos": "num", "meaning": "4", "level": "LV1(上)", "unit": "S1-U3-L3", "difficulty": 1, "enabled": true}, {"word": "6", "pos": "num", "meaning": "6", "level": "LV1(上)", "unit": "S1-U3-L4", "difficulty": 1, "enabled": true}, {"word": "5", "pos": "num", "meaning": "5", "level": "LV1(上)", "unit": "S1-U3-L4", "difficulty": 1, "enabled": true}, {"word": "sing", "pos": "v", "meaning": "唱", "level": "LV1(上)", "unit": "S1-U4-L1", "difficulty": 1, "enabled": true}, {"word": "eat", "pos": "v", "meaning": "吃", "level": "LV1(上)", "unit": "S1-U4-L2", "difficulty": 1, "enabled": true}, {"word": "7", "pos": "num", "meaning": "7", "level": "LV1(上)", "unit": "S1-U4-L2", "difficulty": 1, "enabled": true}, {"word": "rug", "pos": "n", "meaning": "小地毯", "level": "LV1(上)", "unit": "S1-U4-L3", "difficulty": 1, "enabled": true}, {"word": "door", "pos": "n", "meaning": " 门", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "bed", "pos": "n", "meaning": "床", "level": "LV1(上)", "unit": "S1-U4-L3", "difficulty": 1, "enabled": true}, {"word": "9", "pos": "num", "meaning": "9", "level": "LV1(上)", "unit": "S1-U4-L4", "difficulty": 1, "enabled": true}, {"word": "8", "pos": "num", "meaning": "8", "level": "LV1(上)", "unit": "S1-U4-L4", "difficulty": 1, "enabled": true}, {"word": "10", "pos": "num", "meaning": "10", "level": "LV1(上)", "unit": "S1-U4-L5", "difficulty": 1, "enabled": true}, {"word": "zoo", "pos": "n", "meaning": "动物园", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "zebra", "pos": "n", "meaning": "斑马", "level": "LV1(上)", "unit": "S1-U7-L2", "difficulty": 1, "enabled": true}, {"word": "young", "pos": "adj", "meaning": "年轻的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "year", "pos": "n", "meaning": "年", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "write", "pos": "v", "meaning": "写", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "woman", "pos": "n", "meaning": "女人", "level": "LV1(上)", "unit": "S1-U5-L1", "difficulty": 1, "enabled": true}, {"word": "window", "pos": "n", "meaning": "窗户", "level": "LV1(上)", "unit": "S1-U12-L4", "difficulty": 1, "enabled": true}, {"word": "warm", "pos": "adj", "meaning": "温暖的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "want", "pos": "v", "meaning": "想要", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "walk", "pos": "v", "meaning": "走", "level": "LV1(上)", "unit": "S1-U7-L2", "difficulty": 1, "enabled": true}, {"word": "very", "pos": "adv", "meaning": "非常", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "under", "pos": "prep", "meaning": "在...下面", "level": "LV1(上)", "unit": "S2-U14-L5", "difficulty": 1, "enabled": true}, {"word": "try", "pos": "n", "meaning": "尝试", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "try", "pos": "v", "meaning": "尝试", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "tree", "pos": "n", "meaning": "树", "level": "LV1(上)", "unit": "S1-U7-L1", "difficulty": 1, "enabled": true}, {"word": "train", "pos": "n", "meaning": "火车", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "too", "pos": "adv", "meaning": "也", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "tomorrow", "pos": "adv", "meaning": "明天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "tomorrow", "pos": "n", "meaning": "明天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "today", "pos": "adv", "meaning": "今天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "today", "pos": "n", "meaning": "今天", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "tiger", "pos": "n", "meaning": "老虎", "level": "LV1(上)", "unit": "S1-U5-L3", "difficulty": 1, "enabled": true}, {"word": "those", "pos": "det", "meaning": "那些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "those", "pos": "pron", "meaning": "那些", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "this", "pos": "det", "meaning": "这个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "this", "pos": "pron", "meaning": "这个", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "these", "pos": "det", "meaning": "这些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "these", "pos": "pron", "meaning": "这些", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "that", "pos": "det", "meaning": "那个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "that", "pos": "pron", "meaning": "那个", "level": "LV1(上)", "unit": "S1-U12-L1", "difficulty": 1, "enabled": true}, {"word": "tell", "pos": "v", "meaning": "告诉", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "teacher", "pos": "n", "meaning": "老师", "level": "LV1(上)", "unit": "S2-U14-L2", "difficulty": 1, "enabled": true}, {"word": "talk", "pos": "v", "meaning": "说话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "swim", "pos": "v", "meaning": "游泳", "level": "LV1(上)", "unit": "S1-U11-L5", "difficulty": 1, "enabled": true}, {"word": "sun", "pos": "n", "meaning": "太阳", "level": "LV1(上)", "unit": "S1-U8-L2", "difficulty": 1, "enabled": true}, {"word": "study", "pos": "v", "meaning": "学习", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "student", "pos": "n", "meaning": "学生", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "speak", "pos": "v", "meaning": "说", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "some", "pos": "det", "meaning": "一些", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sofa", "pos": "n", "meaning": "沙发", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sock", "pos": "n", "meaning": "袜子", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "small", "pos": "adj", "meaning": "小的", "level": "LV1(上)", "unit": "S1-U9-L1", "difficulty": 1, "enabled": true}, {"word": "sleep", "pos": "v", "meaning": "睡觉", "level": "LV1(上)", "unit": "S1-U7-L4", "difficulty": 1, "enabled": true}, {"word": "skirt", "pos": "n", "meaning": "裙子", "level": "LV1(上)", "unit": "S1-U9-L4", "difficulty": 1, "enabled": true}, {"word": "sit", "pos": "v", "meaning": "坐下", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "sister", "pos": "n", "meaning": "姐姐、妹妹", "level": "LV1(上)", "unit": "S1-U8-L1", "difficulty": 1, "enabled": true}, {"word": "short", "pos": "adj", "meaning": "短的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "shoe", "pos": "n", "meaning": "鞋", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "shirt", "pos": "n", "meaning": "衬衫", "level": "LV1(上)", "unit": "S1-U9-L1", "difficulty": 1, "enabled": true}, {"word": "ship", "pos": "n", "meaning": "船", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sheep", "pos": "n", "meaning": "绵羊", "level": "LV1(上)", "unit": "S1-U5-L3", "difficulty": 1, "enabled": true}, {"word": "school", "pos": "n", "meaning": "学校", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "say", "pos": "v", "meaning": "说", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "sad", "pos": "adj", "meaning": "悲伤的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "run", "pos": "v", "meaning": "跑", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "ruler", "pos": "n", "meaning": "尺子", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "room", "pos": "n", "meaning": "房间", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "rice", "pos": "n", "meaning": "米饭", "level": "LV1(上)", "unit": "S1-U6-L4", "difficulty": 1, "enabled": true}, {"word": "read", "pos": "v", "meaning": "阅读", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "radio", "pos": "n", "meaning": "收音机", "level": "LV1(上)", "unit": "S1-U9-L2", "difficulty": 1, "enabled": true}, {"word": "potato", "pos": "n", "meaning": "土豆", "level": "LV1(上)", "unit": "S1-U7-L3", "difficulty": 1, "enabled": true}, {"word": "play", "pos": "v", "meaning": "玩", "level": "LV1(上)", "unit": "S2-U14-L1", "difficulty": 1, "enabled": true}, {"word": "plane", "pos": "n", "meaning": "飞机", "level": "LV1(上)", "unit": "S1-U8-L3", "difficulty": 1, "enabled": true}, {"word": "pig", "pos": "n", "meaning": "猪", "level": "LV1(上)", "unit": "S1-U7-L4", "difficulty": 1, "enabled": true}, {"word": "phone", "pos": "n", "meaning": "电话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "phone", "pos": "v", "meaning": "给…...打电话", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "people", "pos": "n", "meaning": "人", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "pencil", "pos": "n", "meaning": "铅笔", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "pea", "pos": "n", "meaning": "豌豆", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "PE", "pos": "n", "meaning": "体育", "level": "LV1(上)", "unit": "S1-U10-L4", "difficulty": 1, "enabled": true}, {"word": "paper", "pos": "adj", "meaning": "纸质的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "paint", "pos": "n", "meaning": "绘画颜料", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "paint", "pos": "v", "meaning": "(用颜料)绘画", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "orange", "pos": "n", "meaning": "橙子", "level": "LV1(上)", "unit": "S1-U10-L3", "difficulty": 1, "enabled": true}, {"word": "open", "pos": "adj", "meaning": "开着的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "one", "pos": "det", "meaning": "一个", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "one", "pos": "pron", "meaning": "一个人(或物)", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "old", "pos": "adj", "meaning": "年老的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "now", "pos": "adv", "meaning": "现在", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "night", "pos": "n", "meaning": "夜晚", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "nice", "pos": "adj", "meaning": "好的", "level": "LV1(上)", "unit": "S1-U6-L3", "difficulty": 1, "enabled": true}, {"word": "new", "pos": "adj", "meaning": "新的", "level": "LV1(上)", "unit": "S1-U9-L2", "difficulty": 1, "enabled": true}, {"word": "mum", "pos": "n", "meaning": "妈妈", "level": "LV1(上)", "unit": "S1-U8-L4", "difficulty": 1, "enabled": true}, {"word": "mouth", "pos": "n", "meaning": "嘴巴", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "mother", "pos": "n", "meaning": "母亲", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "morning", "pos": "n", "meaning": "早上", "level": "LV1(上)", "unit": "S1-U12-L5", "difficulty": 1, "enabled": true}, {"word": "month", "pos": "n", "meaning": "月", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "monkey", "pos": "n", "meaning": "猴子", "level": "LV1(上)", "unit": "S1-U7-L1", "difficulty": 1, "enabled": true}, {"word": "minute", "pos": "n", "meaning": "分钟", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "mine", "pos": "pron", "meaning": "我的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "milk", "pos": "n", "meaning": "牛奶", "level": "LV1(上)", "unit": "S1-U5-L2", "difficulty": 1, "enabled": true}, {"word": "men", "pos": "n", "meaning": "男人(man 的复数)", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "meat", "pos": "n", "meaning": "肉类", "level": "LV1(上)", "unit": "S1-U10-L3", "difficulty": 1, "enabled": true}, {"word": "me", "pos": "pron", "meaning": "我", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "mat", "pos": "n", "meaning": "地垫", "level": "LV1(上)", "unit": "S2-U14-L4", "difficulty": 1, "enabled": true}, {"word": "many", "pos": "det", "meaning": "许多", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "man", "pos": "n", "meaning": "男人", "level": "LV1(上)", "unit": "S1-U5-L1", "difficulty": 1, "enabled": true}, {"word": "make", "pos": "v", "meaning": "制造", "level": "LV1(上)", "unit": "S1-U6-L3", "difficulty": 1, "enabled": true}, {"word": "love", "pos": "v", "meaning": "爱", "level": "LV1(上)", "unit": "S1-U12-L2", "difficulty": 1, "enabled": true}, {"word": "lots of", "pos": "det", "meaning": "大量的", "level": "LV1(上)", "unit": "", "difficulty": 1, "enabled": true}, {"word": "long", "pos": "adj", "meaning": "长的", "level": "LV1(上)", "unit": "S1-U7-L5 ", "difficulty": 1, "enabled": true}]} diff --git a/questions/listening/L2/listening-choicePic/scripts/generate_listening_choicePic.py b/questions/listening/L2/listening-choicePic/scripts/generate_listening_choicePic.py new file mode 100755 index 0000000..625b809 --- /dev/null +++ b/questions/listening/L2/listening-choicePic/scripts/generate_listening_choicePic.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +import argparse +import json +import re +import sys +import os +from typing import List, Dict + +# 角色名称库 +CHARACTERS = ["Otis", "Ben", "Skylar", "Brainy", "Daisy", "Jim", "Paul", "Fred"] + +# 共用L1单词库路径 +WORD_LIST_PATH = os.path.join(os.path.dirname(__file__), "../../listening-drag/references/l1_word_list.json") + +# 难度对应规则 +DIFFICULTY_RULES = { + "A": { + "sentence_length": "≤5词", + "interference": "选项类别完全不同,差异极大", + "description": "简单句,关键词后置,无修饰成分" + }, + "B": { + "sentence_length": "≤8词", + "interference": "同类别不同属性(颜色/大小)", + "description": "简单句,可带1个形容词修饰" + }, + "C": { + "sentence_length": "≤12词", + "interference": "同物品不同动作/状态", + "description": "简单句,可带介词短语修饰" + }, + "D": { + "sentence_length": "≤15词", + "interference": "同场景不同逻辑", + "description": "带简单从句,可包含逻辑连接词" + } +} + +def parse_args(): + parser = argparse.ArgumentParser(description="Generate Listening Picture Choice questions") + parser.add_argument("--knowledge", required=True, help="知识点列表,分号分隔") + parser.add_argument("--difficulty", required=True, choices=["A", "B", "C", "D"], help="难度等级") + parser.add_argument("--count", type=int, default=1, help="生成题目数量,默认1道") + parser.add_argument("--scene", default="", help="题目场景要求,可选") + return parser.parse_args() + +def load_word_list() -> List[str]: + """加载L1单词库""" + try: + with open(WORD_LIST_PATH, "r", encoding="utf-8") as f: + data = json.load(f) + return [word["word"].lower() for word in data["words"]] + except Exception as e: + print(f"警告:加载单词库失败,跳过超纲校验:{str(e)}", file=sys.stderr) + return [] + +def validate_knowledge_with_wordlist(knowledge: str, word_list: List[str]) -> bool: + """校验知识点是否在单词库中""" + if not word_list: + return True + knowledge_words = [item.split()[0].lower() for item in knowledge.split(";") if item.strip()] + out_of_range = [] + for word in knowledge_words: + if word not in word_list: + out_of_range.append(word) + if out_of_range: + print(f"错误:以下知识点超纲,不在L1单词库中:{','.join(out_of_range)}", file=sys.stderr) + return False + return True + +def validate_input(args) -> bool: + """校验输入参数合法性""" + if not args.knowledge.strip(): + print("错误:知识点不能为空", file=sys.stderr) + return False + if args.count < 1 or args.count > 10: + print("错误:题量范围1-10道", file=sys.stderr) + return False + # 超纲校验 + word_list = load_word_list() + if not validate_knowledge_with_wordlist(args.knowledge, word_list): + return False + return True + +def generate_prompt(args) -> str: + """生成生产prompt""" + difficulty_rule = DIFFICULTY_RULES[args.difficulty] + scene_desc = f"场景要求:{args.scene}" if args.scene else "场景自动匹配知识点" + return f""" +你是资深K12英语教研专家,严格按照以下要求生成{args.count}道听力三选一图片选择题: +## 难度要求({args.difficulty}级) +- 句子长度:{difficulty_rule['sentence_length']} +- 干扰项要求:{difficulty_rule['interference']} +- 听力要求:{difficulty_rule['description']} +## 输入参数 +- 知识点:{args.knowledge} +- {scene_desc} +## 生产规则 +1. 每道题包含1段单句听力文本,3张图片选项(A/B/C),1个正确答案 +2. 听力文本自然日常,可使用陈述句、疑问句、祈使句等多种句式,避免生硬 +3. 干扰项设置符合难度要求,正确答案唯一 +4. 角色从{CHARACTERS}中选择 +## 输出格式 +严格按照以下格式输出,不要添加任何额外内容: +【题目组描述】 +听句子,选出与你听到的内容相符的图片。 +--- +【题目1】 +【听力文本】 +[角色]: [符合难度的单句听力内容] +【图片描述】 +A: [图片A核心特征描述,与知识点相关] +B: [图片B核心特征描述,干扰项] +C: [图片C核心特征描述,干扰项] +【正确答案】 +[正确选项字母A/B/C] +【能力项】 +题目1 - 显性事实理解(单句信息点抓取)- [考察核心知识点关键词] +--- +【题目2】 +...(重复上述结构生成{args.count}道题) +""" + +def call_llm(prompt: str) -> str: + """调用大模型生成内容(实际使用时替换为模型API调用)""" + print("请输入模型生成的内容:") + return sys.stdin.read() + +def validate_output(output: str, question_count: int) -> bool: + """校验输出格式合法性""" + # 检查必填字段 + if "【题目组描述】" not in output: + print("错误:缺少题目组描述", file=sys.stderr) + return False + # 检查题目数量 + question_pattern = r"【题目\d+】" + questions = re.findall(question_pattern, output) + if len(questions) != question_count: + print(f"错误:题目数量不符,预期{question_count}道,实际{len(questions)}道", file=sys.stderr) + return False + # 检查每道题的必填字段 + for i in range(1, question_count + 1): + question_section = re.search(rf"【题目{i}】.*?(?=【题目{i+1}】|---|\Z)", output, re.DOTALL) + if not question_section: + print(f"错误:题目{i}格式不完整", file=sys.stderr) + return False + section_content = question_section.group(0) + required_fields = ["【听力文本】", "【图片描述】", "【正确答案】", "【能力项】"] + for field in required_fields: + if field not in section_content: + print(f"错误:题目{i}缺少必填字段{field}", file=sys.stderr) + return False + # 校验能力项格式 + ability_match = re.search(r"【能力项】\s*题目\d+ - 显性事实理解(单句信息点抓取)- .*", section_content) + if not ability_match: + print(f"错误:题目{i}能力项格式不正确", file=sys.stderr) + return False + # 校验答案格式 + answer_match = re.search(r"【正确答案】\s*[ABC]", section_content) + if not answer_match: + print(f"错误:题目{i}答案格式不正确,必须为A/B/C", file=sys.stderr) + return False + return True + +def main(): + args = parse_args() + if not validate_input(args): + sys.exit(1) + prompt = generate_prompt(args) + output = call_llm(prompt) + if validate_output(output, args.count): + print(output) + sys.exit(0) + else: + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/questions/listening/L2/listening_form_fill/SKILL.md b/questions/listening/L2/listening_form_fill/SKILL.md new file mode 100644 index 0000000..0888128 --- /dev/null +++ b/questions/listening/L2/listening_form_fill/SKILL.md @@ -0,0 +1,79 @@ +--- +name: listening_form_fill +description: K12英语听力表格填空题标准化设计、生产、审校工具。对应题型:L1 - Starters - 听力 Part2 表格填空,考察核心能力:信息抓取、拼写准确性、短时记忆。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力表格填空题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力表格填空题。触发关键词:听力表格填空、表格填空题、listening form fill、听力Part2表格填空、信息抓取填空题 +--- +# Listening Form Fill 听力表格填空题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 听力 Part2 表格填空【阶段归属:L2专属】**,考察核心能力为**信息抓取(关键词识别+拼写准确性)**:学生听1-2段短对话/独白,提取关键信息填写表格中空缺的内容,考察词汇拼写、数字识别、信息匹配能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 表格仅2-3个空缺,答案为1-2个字母/数字,听力直接念出答案 | +| B级 | L1 第3-4阶段 | Starters 3 | 表格3-4个空缺,答案为3-5个字母的单词,听力直接念出答案 | +| C级 | L1 第5-6阶段 | Movers 1 | 表格4-5个空缺,答案为单词/短语,听力包含简单干扰信息 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 表格5-6个空缺,答案为短语/短句,听力包含较多干扰信息 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、信息抓取、拼写准确性 +2. 能力标签分级规则: + - 1级标签统一使用:**听力理解** + - 2级标签根据考察点动态匹配:数字识别/词汇拼写/信息匹配/干扰抑制 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1份听力文本(对话/独白)、1份表格模板(含空缺位)、答案列表、评分标准 +2. 难度匹配规则: + - A级:空缺内容为数字/单个字母,听力语速慢,无干扰 + - B级:空缺内容为大纲内核心名词,听力语速适中,无干扰 + - C级:空缺内容为名词+属性组合,听力包含1个干扰信息 + - D级:空缺内容为短语/短句,听力包含2-3个干扰信息 +3. 听力文本要求:自然日常,符合对应难度词汇要求 +4. 表格模板要求:结构清晰,空缺位标注明确,表头信息完整 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为学校报名` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听对话,填写表格中缺失的信息] +--- +【题目1】 +【听力文本】 +[符合难度的听力内容,对话或独白] +【表格模板】 +| 表头1 | 表头2 | 表头3 | +|-------|-------|-------| +| 已知内容 | ___ | 已知内容 | +| 已知内容 | 已知内容 | ___ | +【正确答案】 +1. [第一空答案] +2. [第二空答案] +【评分标准】 +优秀:拼写完全正确,大小写符合要求 +合格:拼写错误不超过1个字母,可识别核心词汇 +不合格:拼写完全错误,或未抓住核心信息 +【能力项】 +题目1 - 听力理解([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:听力句子长度、答案复杂度不符合对应等级要求 +4. 逻辑校验:答案在听力文本中未明确提及 +## 脚本使用说明 +执行`scripts/generate_listening_form_fill.py`完成自动化生产: +```bash +python scripts/generate_listening_form_fill.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "学校场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/listening/L2/listening_info_match/SKILL.md b/questions/listening/L2/listening_info_match/SKILL.md new file mode 100644 index 0000000..c5ee18c --- /dev/null +++ b/questions/listening/L2/listening_info_match/SKILL.md @@ -0,0 +1,82 @@ +--- +name: listening_info_match +description: K12英语听力信息匹配题标准化设计、生产、审校工具。对应题型:L2 - Movers - 听力 Part5 信息匹配,考察核心能力:信息关联、多任务处理、干扰抑制。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力信息匹配题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力信息匹配题。触发关键词:听力信息匹配、信息匹配题、listening info match、听力Part5信息匹配、多信息关联题 +--- +# Listening Info Match 听力信息匹配题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 听力 Part5 信息匹配【阶段归属:L2专属】**,考察核心能力为**信息关联(多任务处理+干扰抑制)**:学生听1段长对话/独白,将左右两栏的相关信息进行匹配,考察对多个信息点的关联、记忆和区分能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 匹配项5组,信息直接对应,无干扰 | +| B级 | L2 第1-2阶段 | Movers 2 | 匹配项5-6组,信息需要简单关联,1个干扰项 | +| C级 | L2 第3-4阶段 | Movers 3 | 匹配项6组,信息需要整合关联,2个干扰项 | +| D级 | L2 第5-6阶段 | Flyers 1 | 匹配项6-7组,信息需要推断关联,3个干扰项 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、信息关联、干扰抑制 +2. 能力标签分级规则: + - 1级标签统一使用:**听力理解** + - 2级标签根据考察点动态匹配:直接关联/简单关联/整合关联/推断关联 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1段听力文本、左右两栏匹配项、正确匹配关系 +2. 难度匹配规则: + - A级:左栏为人物,右栏为物品,直接对应 + - B级:左栏为人物,右栏为动作/物品属性,简单关联 + - C级:左栏为时间/地点,右栏为事件/人物,整合关联 + - D级:左栏为人物,右栏为未来计划/感受,推断关联 +3. 听力文本要求:信息点清晰,顺序与左栏对应 +4. 匹配项要求:干扰项为对话中出现的无关信息,避免过于明显 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为生日派对` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听对话,将人物和对应的礼物进行匹配] +--- +【题目1】 +【听力文本】 +A: [对话内容] +B: [对话内容] +... +【匹配项】 +左栏: +1. [左栏项1] +2. [左栏项2] +3. [左栏项3] +右栏: +A. [右栏项A] +B. [右栏项B] +C. [右栏项C] +【正确答案】 +1. [匹配字母] +2. [匹配字母] +3. [匹配字母] +【能力项】 +题目1 - 听力理解([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:匹配项数量、信息复杂度不符合对应等级要求 +4. 逻辑校验:匹配关系无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_listening_info_match.py`完成自动化生产: +```bash +python scripts/generate_listening_info_match.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "派对场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/listening/L2/listening_long_conversation/SKILL.md b/questions/listening/L2/listening_long_conversation/SKILL.md new file mode 100644 index 0000000..0882383 --- /dev/null +++ b/questions/listening/L2/listening_long_conversation/SKILL.md @@ -0,0 +1,83 @@ +--- +name: listening_long_conversation +description: K12英语听力长对话选择题标准化设计、生产、审校工具。对应题型:L2 - Movers - 听力 Part3 长对话选择,考察核心能力:逻辑理解、信息整合、干扰抑制。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力长对话选择题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力长对话选择题。触发关键词:听力长对话选择、长对话选择题、listening long conversation、听力Part3长对话、逻辑理解题 +--- +# Listening Long Conversation 听力长对话选择题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 听力 Part3 长对话选择【阶段归属:L2专属】**,考察核心能力为**逻辑理解(信息整合+干扰抑制)**:学生听1段3-5轮的长对话,回答3-4道选择题,考察对对话整体逻辑、隐含信息、因果关系的理解能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 对话3轮,3道题,答案直接对应对话内容,无干扰 | +| B级 | L2 第1-2阶段 | Movers 2 | 对话4轮,3道题,答案需要简单推理,1个干扰项 | +| C级 | L2 第3-4阶段 | Movers 3 | 对话5轮,4道题,答案需要逻辑整合,2个干扰项 | +| D级 | L2 第5-6阶段 | Flyers 1 | 对话6轮,4道题,答案需要隐含信息推断,3个干扰项 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、逻辑推理、信息整合 +2. 能力标签分级规则: + - 1级标签统一使用:**听力理解** + - 2级标签根据考察点动态匹配:直接信息提取/简单推理/逻辑整合/隐含信息推断 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1段长对话文本、3-4道选择题(每道3个选项)、正确答案列表 +2. 难度匹配规则: + - A级:对话主题明确,问题直接指向对话内容,答案原句出现 + - B级:对话包含简单转折,问题需要简单推理,干扰项为对话中出现的无关信息 + - C级:对话包含多个信息点,问题需要整合多处信息,干扰项为部分正确信息 + - D级:对话包含隐含观点/因果关系,问题需要推断,干扰项为完全错误但看似合理的信息 +3. 听力文本要求:对话自然流畅,符合日常交流逻辑,角色明确 +4. 选项要求:干扰项设置合理,避免过于明显的错误 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为周末购物` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听对话,选择正确的答案] +--- +【题目1】 +【听力文本】 +A: [对话内容] +B: [对话内容] +A: [对话内容] +B: [对话内容] +【问题列表】 +1. [问题1内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +2. [问题2内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +【正确答案】 +1. [正确选项字母] +2. [正确选项字母] +【能力项】 +题目1 - 听力理解([2级标签])- [考察核心知识点] +题目2 - 听力理解([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:对话长度、问题复杂度不符合对应等级要求 +4. 逻辑校验:答案在对话中无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_listening_long_conversation.py`完成自动化生产: +```bash +python scripts/generate_listening_long_conversation.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "购物场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/listening/L2/listening_short_conversation/SKILL.md b/questions/listening/L2/listening_short_conversation/SKILL.md new file mode 100644 index 0000000..63313f7 --- /dev/null +++ b/questions/listening/L2/listening_short_conversation/SKILL.md @@ -0,0 +1,84 @@ +--- +name: listening_short_conversation +description: K12英语听力短对话选择题标准化设计、生产、审校工具。对应题型:L1 - Starters - 听力 Part4 短对话选择,考察核心能力:信息抓取、快速反应、场景理解。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的听力短对话选择题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产听力短对话选择题。触发关键词:听力短对话选择、短对话选择题、listening short conversation、听力Part4短对话、场景理解题 +--- +# Listening Short Conversation 听力短对话选择题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 听力 Part4 短对话选择【阶段归属:L2专属】**,考察核心能力为**场景理解(快速信息抓取+反应)**:学生听多段1-2轮的短对话,每段对话对应1道选择题,考察对常见场景、日常用语的理解能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 每段对话1轮,问题直接问物品/场景,答案直接明确 | +| B级 | L1 第3-4阶段 | Starters 3 | 每段对话1-2轮,问题问物品属性/人物动作,答案简单明确 | +| C级 | L1 第5-6阶段 | Movers 1 | 每段对话2轮,问题问人物意图/事件结果,需要简单推理 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 每段对话2轮,问题问隐含观点/未来计划,需要推理 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:听力理解、场景识别、快速反应 +2. 能力标签分级规则: + - 1级标签统一使用:**听力理解** + - 2级标签根据考察点动态匹配:物品识别/属性判断/动作识别/意图推断 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:4-5段短对话、每段对应1道选择题(3个选项)、正确答案列表 +2. 难度匹配规则: + - A级:对话为简单问候/物品问答,选项差异明显 + - B级:对话为物品属性/动作问答,选项为同类差异 + - C级:对话为事件/计划讨论,选项为相似事件 + - D级:对话为观点/感受表达,选项为相似感受 +3. 听力文本要求:对话简短自然,符合日常交流场景 +4. 选项要求:干扰项为常见易混淆的场景内容 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1套(5段对话) | +| 场景要求 | 🟢 | `场景为家庭日常` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:听每段短对话,选择正确的答案] +--- +【题目1】 +【听力文本】 +1. +A: [对话内容] +B: [对话内容] +Q: [问题1内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +2. +A: [对话内容] +B: [对话内容] +Q: [问题2内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +【正确答案】 +1. [正确选项字母] +2. [正确选项字母] +【能力项】 +题目1 - 听力理解([2级标签])- [考察核心知识点] +题目2 - 听力理解([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:对话长度、问题复杂度不符合对应等级要求 +4. 逻辑校验:答案在对话中无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_listening_short_conversation.py`完成自动化生产: +```bash +python scripts/generate_listening_short_conversation.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "家庭场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/reading/reading_cloze/SKILL.md b/questions/reading/reading_cloze/SKILL.md new file mode 100644 index 0000000..9e79e33 --- /dev/null +++ b/questions/reading/reading_cloze/SKILL.md @@ -0,0 +1,81 @@ +--- +name: reading_cloze +description: K12英语阅读完形填空题标准化设计、生产、审校工具。对应题型:L2 - Movers - 阅读 Part4 完形填空,考察核心能力:词汇运用、语法判断、上下文逻辑理解。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的阅读完形填空题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产阅读完形填空题。触发关键词:阅读完形填空、完形填空题、reading cloze、阅读Part4完形填空、词汇运用题 +--- +# Reading Cloze 阅读完形填空题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 阅读 Part4 完形填空【阶段归属:L2专属】**,考察核心能力为**词汇运用(语法判断+上下文逻辑理解)**:学生阅读1篇80-150词的短文,文中有3-5个空缺,每个空缺从3个选项中选择正确的单词填入,考察词汇、语法和上下文理解能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 短文80词左右,3个空,考察名词/形容词等实词,上下文提示明显 | +| B级 | L2 第1-2阶段 | Movers 2 | 短文100词左右,4个空,考察实词+简单介词/动词,上下文有提示 | +| C级 | L2 第3-4阶段 | Movers 3 | 短文120词左右,5个空,考察实词+虚词,需要简单逻辑判断 | +| D级 | L2 第5-6阶段 | Flyers 1 | 短文150词左右,5个空,考察词汇+语法+逻辑,需要上下文推断 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:阅读理解、词汇运用、逻辑推理 +2. 能力标签分级规则: + - 1级标签统一使用:**阅读理解** + - 2级标签根据考察点动态匹配:词汇运用、语法判断、逻辑推理 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1篇带空缺的短文、每个空缺的3个选项、正确答案列表 +2. 难度匹配规则: + - A级:空缺为核心名词/形容词,选项差异明显,上下文直接提示答案 + - B级:空缺为动词/介词,选项为同类易混淆词汇,上下文有间接提示 + - C级:空缺需要结合前后句逻辑判断,选项为相似词汇 + - D级:空缺需要结合全文主旨判断,选项为易混淆的词汇/语法形式 +3. 短文要求:内容连贯,情节完整,符合对应难度词汇要求 +4. 选项要求:干扰项为常见易混淆词汇、语法形式错误的选项、不符合上下文逻辑的选项 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为生日派对` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读短文,选择正确的单词填入空缺处] +--- +【题目1】 +【短文内容】 +Today is my birthday. I have a ___1___ party at home. My friends give me many ___2___. +1. +A. birthday +B. school +C. park +2. +A. books +B. gifts +C. pens +【正确答案】 +1. A +2. B +【能力项】 +题目1 - 阅读理解([2级标签])- [考察核心知识点] +题目2 - 阅读理解([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【阅读理解(对应能力标签)】能力。结合上下文逻辑和词汇含义,就能选出正确答案。记住空缺的单词要符合句子意思和语法,这类题就能轻松做对哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:短文长度、空缺复杂度不符合对应等级要求 +4. 逻辑校验:答案不符合上下文逻辑,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_reading_cloze.py`完成自动化生产: +```bash +python scripts/generate_reading_cloze.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "派对场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/reading/reading_info_match/SKILL.md b/questions/reading/reading_info_match/SKILL.md new file mode 100644 index 0000000..fc15c23 --- /dev/null +++ b/questions/reading/reading_info_match/SKILL.md @@ -0,0 +1,80 @@ +--- +name: reading_info_match +description: K12英语阅读信息匹配题标准化设计、生产、审校工具。对应题型:L1 - Starters - 阅读 Part1 信息匹配,考察核心能力:信息抓取、快速阅读、图文匹配。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的阅读信息匹配题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产阅读信息匹配题。触发关键词:阅读信息匹配、信息匹配题、reading info match、阅读Part1信息匹配、图文匹配题 +--- +# Reading Info Match 阅读信息匹配题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 阅读 Part1 信息匹配【阶段归属:L2专属】**,考察核心能力为**信息抓取(快速阅读+图文匹配)**:学生阅读5-6个简短文本(标识/告示/短句),与对应的图片/标题进行匹配,考察快速抓取关键信息和图文匹配能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 文本为1-2个单词,图片差异极大,直接对应 | +| B级 | L1 第3-4阶段 | Starters 3 | 文本为3-5词短句,图片为同类差异,简单对应 | +| C级 | L1 第5-6阶段 | Movers 1 | 文本为5-8词短句,需要提取关键词匹配 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 文本为8-10词短句,包含干扰信息,需要筛选匹配 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:阅读理解、信息抓取、快速阅读 +2. 能力标签分级规则: + - 1级标签统一使用:**阅读理解** + - 2级标签根据考察点动态匹配:图文匹配/关键词匹配/信息筛选 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:5-6个简短文本、对应的匹配项(图片/标题)、正确匹配关系 +2. 难度匹配规则: + - A级:文本为单个名词,直接对应图片内容 + - B级:文本为名词+属性,对应图片属性 + - C级:文本为简单动作/场景描述,对应场景图片 + - D级:文本包含多个信息点,需要筛选核心关键词匹配 +3. 文本要求:简洁清晰,符合对应难度词汇要求 +4. 匹配项要求:干扰项为常见易混淆内容,避免过于明显的错误 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1套(6小题) | +| 场景要求 | 🟢 | `场景为公共场所标识` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读短句,与对应的图片进行匹配] +--- +【题目1】 +【文本列表】 +1. [文本1内容] +2. [文本2内容] +3. [文本3内容] +【匹配项】 +A. [匹配项A内容/图片描述] +B. [匹配项B内容/图片描述] +C. [匹配项C内容/图片描述] +【正确答案】 +1. [匹配字母] +2. [匹配字母] +3. [匹配字母] +【能力项】 +题目1 - 阅读理解([2级标签])- [考察核心知识点] +题目2 - 阅读理解([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【阅读理解(对应能力标签)】能力。阅读时抓住每个文本的关键词,直接对应到匹配项即可。记住快速抓取核心名词/动作,这类题就能快速做对哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:文本长度、匹配复杂度不符合对应等级要求 +4. 逻辑校验:匹配关系无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_reading_info_match.py`完成自动化生产: +```bash +python scripts/generate_reading_info_match.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "标识场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/reading/reading_long_passage/SKILL.md b/questions/reading/reading_long_passage/SKILL.md new file mode 100644 index 0000000..0022df6 --- /dev/null +++ b/questions/reading/reading_long_passage/SKILL.md @@ -0,0 +1,82 @@ +--- +name: reading_long_passage +description: K12英语阅读长文选择题标准化设计、生产、审校工具。对应题型:L2 - Movers - 阅读 Part3 长文选择,考察核心能力:篇章理解、细节定位、推理判断。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的阅读长文选择题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产阅读长文选择题。触发关键词:阅读长文选择、长文选择题、reading long passage、阅读Part3长文选择、篇章理解题 +--- +# Reading Long Passage 阅读长文选择题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 阅读 Part3 长文选择【阶段归属:L2专属】**,考察核心能力为**篇章理解(细节定位+推理判断)**:学生阅读1篇100-200词的短文,回答3-4道选择题,考察对篇章整体内容、细节信息、推理判断的能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 短文100词左右,3道题,答案直接在原文中出现 | +| B级 | L2 第1-2阶段 | Movers 2 | 短文120-150词,3道题,答案需要简单定位 | +| C级 | L2 第3-4阶段 | Movers 3 | 短文150-180词,4道题,答案需要简单推理 | +| D级 | L2 第5-6阶段 | Flyers 1 | 短文180-200词,4道题,答案需要逻辑推断 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:阅读理解、细节定位、推理判断 +2. 能力标签分级规则: + - 1级标签统一使用:**阅读理解** + - 2级标签根据考察点动态匹配:细节理解、主旨大意、推理判断、观点态度 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1篇短文、3-4道选择题(每道3个选项)、正确答案列表 +2. 难度匹配规则: + - A级:短文结构简单,句子短,问题直接对应原文字句 + - B级:短文结构清晰,包含简单复合句,问题需要定位到原文某一句 + - C级:短文包含转折、因果逻辑,问题需要整合多处信息 + - D级:短文包含隐含观点、人物情感,问题需要推理判断 +3. 短文要求:内容贴近学生生活,词汇符合对应难度,情节积极正向 +4. 选项要求:干扰项为原文出现的无关信息、部分正确信息、看似合理的错误信息 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为周末活动` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读短文,选择正确的答案] +--- +【题目1】 +【短文内容】 +[短文内容] +【问题列表】 +1. [问题1内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +2. [问题2内容] +A. [选项A内容] +B. [选项B内容] +C. [选项C内容] +【正确答案】 +1. [正确选项字母] +2. [正确选项字母] +【能力项】 +题目1 - 阅读理解([2级标签])- [考察核心知识点] +题目2 - 阅读理解([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【阅读理解(对应能力标签)】能力。先读问题定位到原文对应的位置,就能找到答案。不要被干扰信息迷惑,这类题就能轻松做对哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:短文长度、问题复杂度不符合对应等级要求 +4. 逻辑校验:答案在原文中无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_reading_long_passage.py`完成自动化生产: +```bash +python scripts/generate_reading_long_passage.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "周末活动场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/reading/reading_open_fill/SKILL.md b/questions/reading/reading_open_fill/SKILL.md new file mode 100644 index 0000000..ec8e993 --- /dev/null +++ b/questions/reading/reading_open_fill/SKILL.md @@ -0,0 +1,80 @@ +--- +name: reading_open_fill +description: K12英语阅读开放填空题标准化设计、生产、审校工具。对应题型:L2 - Movers - 阅读 Part5 开放填空,考察核心能力:信息提取、词汇拼写、语法正确性。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的阅读开放填空题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产阅读开放填空题。触发关键词:阅读开放填空、开放填空题、reading open fill、阅读Part5开放填空、拼写题 +--- +# Reading Open Fill 阅读开放填空题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 阅读 Part5 开放填空【阶段归属:L2专属】**,考察核心能力为**信息提取(词汇拼写+语法正确性)**:学生阅读1篇短文/通知/表格,根据要求填写3-5个空缺的单词,无选项提示,考察信息提取、词汇拼写和语法正确性。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 空缺3个,答案为1-4个字母的简单名词,原文直接给出 | +| B级 | L2 第1-2阶段 | Movers 2 | 空缺4个,答案为名词/形容词,原文直接给出,需要简单变形 | +| C级 | L2 第3-4阶段 | Movers 3 | 空缺5个,答案为动词/短语,需要从原文提取后变形 | +| D级 | L2 第5-6阶段 | Flyers 1 | 空缺5个,答案需要根据原文信息归纳总结,符合语法要求 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:阅读理解、信息提取、词汇拼写 +2. 能力标签分级规则: + - 1级标签统一使用:**阅读理解** + - 2级标签根据考察点动态匹配:信息提取、词汇拼写、语法应用 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1篇阅读材料(短文/通知/表格)、3-5个填空问题、正确答案、评分标准 +2. 难度匹配规则: + - A级:答案为原文中直接出现的单词,无需变形,拼写简单 + - B级:答案为原文中直接出现的单词,需要简单大小写/单复数变形 + - C级:答案需要从原文多个信息点提取,进行词性/形式变形 + - D级:答案需要根据原文内容归纳总结,不是原文原词 +3. 阅读材料要求:信息点清晰,符合对应难度词汇要求 +4. 评分标准要求:明确拼写错误的扣分规则,大小写/单复数错误的处理规则 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为活动通知` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读通知,填写空缺的信息] +--- +【题目1】 +【阅读材料】 +[阅读材料内容] +【填空问题】 +1. What is the party time? ___ +2. Where is the party? ___ +【正确答案】 +1. 3:00 pm +2. at home +【评分标准】 +优秀:拼写完全正确,语法符合要求 +合格:拼写错误不超过1个字母,语法基本正确 +不合格:信息错误,或拼写完全无法识别 +【能力项】 +题目1 - 阅读理解([2级标签])- [考察核心知识点] +题目2 - 阅读理解([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【阅读理解(对应能力标签)】能力。从原文中找到对应的信息,正确拼写出来即可。注意单词的大小写和单复数形式哦,这类题就能拿满分哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:答案复杂度、拼写难度不符合对应等级要求 +4. 逻辑校验:答案在原文中无对应依据,或要求不合理 +## 脚本使用说明 +执行`scripts/generate_reading_open_fill.py`完成自动化生产: +```bash +python scripts/generate_reading_open_fill.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "通知场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/reading/reading_paragraph_match/SKILL.md b/questions/reading/reading_paragraph_match/SKILL.md new file mode 100644 index 0000000..d482e4e --- /dev/null +++ b/questions/reading/reading_paragraph_match/SKILL.md @@ -0,0 +1,80 @@ +--- +name: reading_paragraph_match +description: K12英语阅读段落匹配题标准化设计、生产、审校工具。对应题型:L2 - Movers - 阅读 Part2 段落匹配,考察核心能力:主旨理解、信息归纳、快速阅读。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的阅读段落匹配题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产阅读段落匹配题。触发关键词:阅读段落匹配、段落匹配题、reading paragraph match、阅读Part2段落匹配、主旨归纳题 +--- +# Reading Paragraph Match 阅读段落匹配题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 阅读 Part2 段落匹配【阶段归属:L2专属】**,考察核心能力为**主旨理解(信息归纳+快速阅读)**:学生阅读4-5个简短段落,与对应的段落标题/主旨句进行匹配,考察归纳段落主旨和抓取核心信息的能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 段落3-4句话,主旨直接明确,无干扰 | +| B级 | L2 第1-2阶段 | Movers 2 | 段落4-5句话,主旨需要简单归纳,1个干扰项 | +| C级 | L2 第3-4阶段 | Movers 3 | 段落5-6句话,主旨需要整合信息,2个干扰项 | +| D级 | L2 第5-6阶段 | Flyers 1 | 段落6-7句话,主旨需要隐含推断,3个干扰项 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:阅读理解、主旨归纳、快速阅读 +2. 能力标签分级规则: + - 1级标签统一使用:**阅读理解** + - 2级标签根据考察点动态匹配:主旨匹配/细节匹配/信息归纳 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:4-5个简短段落、对应的标题选项、正确匹配关系 +2. 难度匹配规则: + - A级:段落围绕单一核心事物描述,标题直接包含核心名词 + - B级:段落围绕单一事件描述,标题概括核心事件 + - C级:段落包含多个信息点,标题整合核心内容 + - D级:段落包含隐含观点,标题推断核心主旨 +3. 段落要求:内容贴近学生生活,词汇符合对应难度 +4. 标题要求:干扰项为段落中出现的细节信息,避免过于明显的错误 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为校园生活` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读段落,与对应的标题进行匹配] +--- +【题目1】 +【段落列表】 +1. [段落1内容] +2. [段落2内容] +3. [段落3内容] +【标题选项】 +A. [标题A内容] +B. [标题B内容] +C. [标题C内容] +【正确答案】 +1. [匹配字母] +2. [匹配字母] +3. [匹配字母] +【能力项】 +题目1 - 阅读理解([2级标签])- [考察核心知识点] +题目2 - 阅读理解([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【阅读理解(对应能力标签)】能力。阅读时抓住每段的核心内容,不要被细节信息干扰,对应到最合适的标题即可。记住先读标题再读段落,这类题就能快速做对哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:段落长度、匹配复杂度不符合对应等级要求 +4. 逻辑校验:匹配关系无对应依据,或干扰项设置不合理 +## 脚本使用说明 +执行`scripts/generate_reading_paragraph_match.py`完成自动化生产: +```bash +python scripts/generate_reading_paragraph_match.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "校园场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/speaking/L1/speaking_pic_qa/SKILL.md b/questions/speaking/L1/speaking_pic_qa/SKILL.md new file mode 100644 index 0000000..0aadf98 --- /dev/null +++ b/questions/speaking/L1/speaking_pic_qa/SKILL.md @@ -0,0 +1,94 @@ +--- +name: speaking_pic_qa +description: K12英语口语看图说话题标准化设计、生产、审校工具。对应题型:L1 - Starters - 口语 Part2 看图问答,考察核心能力:口语表达、图片信息提取、场景词汇运用。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的口语看图问答题目;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产口语看图问答题目。触发关键词:口语看图说话、看图问答、speaking pic qa、口语Part2看图题、图片口语输出题 +--- +# Speaking Pic QA 口语看图说话题生产技能 +## 题型说明 +本技能对应官方题型:**L1 - Starters - 口语 Part2 看图问答【阶段归属:L1专属】**,考察核心能力为**口语表达(图片信息提取+场景词汇运用)**:学生观察指定场景图片,根据问题提示口头输出对应答案,考察词汇储备、发音准确性、表达流畅度。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 问题为"What's this?"类简单提问,答案为1-2个核心名词,无语法要求 | +| B级 | L1 第3-4阶段 | Starters 3 | 问题为"What color is it?"/ "How many?"类属性提问,答案为3-5词短语,包含核心名词+属性词 | +| C级 | L1 第5-6阶段 | Movers 1 | 问题为"What is he doing?"类动作提问,答案为完整简单句(主谓宾结构完整),6-10词 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 问题为"What can you see in the picture?"类场景描述提问,答案为2-3句连贯表达,15-20词 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:口语表达、图片信息识别、场景词汇运用 +2. 能力标签分级规则: + - 1级标签统一使用:**口语表达** + - 2级标签根据考察点动态匹配:物品词汇输出/属性描述输出/动作表达输出/场景描述输出 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1张图片描述、1个引导问题、1-3个参考回答、评分标准(分3个等级) +2. 难度匹配规则: + - A级:图片仅包含1个核心物品,背景无干扰元素,问题直接指向核心物品 + - B级:图片包含1个核心物品+1个明确属性(颜色/数量等),问题指向物品属性 + - C级:图片包含1个核心人物+1个明确动作,问题指向人物动作 + - D级:图片包含完整场景(物品+人物+动作),问题指向整体场景描述 +3. 参考回答要求:至少提供1个满分回答,可提供2个不同表述的合格回答 +4. 评分标准要求:明确标注"优秀/合格/不合格"三个等级的判断依据 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为家庭厨房` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:看图片,回答问题] +--- +【题目1】 +【图片描述】 +[图片核心特征描述,清晰呈现考察点] +【引导问题】 +[符合难度的口语提问] +【参考回答】 +满分回答:[满分标准答案] +合格回答:[可接受的合格答案,可选] +【评分标准】 +优秀:[优秀回答判断标准] +合格:[合格回答判断标准] +不合格:[不合格回答判断标准] +【能力项】 +题目1 - 口语表达([2级标签])- [考察核心知识点,例如:red apple] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:引导问题复杂度、参考回答长度不符合对应等级要求 +4. 逻辑校验:图片描述与考察知识点、问题不匹配 +## 题型示例 +``` +【题目1】 +【图片描述】 +白色背景下的红色苹果,无其他干扰元素 +【引导问题】 +What's this? +【参考回答】 +满分回答:Apple. +合格回答:Red apple. +【评分标准】 +优秀:准确说出核心词汇"apple",发音清晰 +合格:说出"red apple"等包含核心词汇的表述,发音可理解 +不合格:未说出核心词汇,或发音完全无法识别 +【能力项】 +题目1 - 口语表达(物品词汇输出)- apple +``` +## 脚本使用说明 +执行`scripts/generate_speaking_pic_qa.py`完成自动化生产: +```bash +python scripts/generate_speaking_pic_qa.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "家庭场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入或保存词表文件。 + diff --git a/questions/speaking/L2/speaking_topic_discussion/SKILL.md b/questions/speaking/L2/speaking_topic_discussion/SKILL.md new file mode 100644 index 0000000..dc0511f --- /dev/null +++ b/questions/speaking/L2/speaking_topic_discussion/SKILL.md @@ -0,0 +1,76 @@ +--- +name: speaking_topic_discussion +description: K12英语口语话题讨论题标准化设计、生产、审校工具。对应题型:L2 - Movers - 口语 Part2 话题讨论,考察核心能力:口语表达、逻辑组织、观点阐述。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的口语话题讨论题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产口语话题讨论题。触发关键词:口语话题讨论、话题讨论题、speaking topic discussion、口语Part2话题讨论、观点表达题 +--- +# Speaking Topic Discussion 口语话题讨论题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 口语 Part2 话题讨论【阶段归属:L2专属】**,考察核心能力为**口语表达(逻辑组织+观点阐述)**:学生根据给定话题,进行1-2分钟的口头阐述,考察词汇运用、逻辑连贯、观点表达能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 话题为具体物品/活动,回答3-4句话即可,无需复杂逻辑 | +| B级 | L2 第1-2阶段 | Movers 2 | 话题为喜好/习惯,回答4-5句话,有简单逻辑顺序 | +| C级 | L2 第3-4阶段 | Movers 3 | 话题为观点/经历,回答5-6句话,有清晰逻辑层次 | +| D级 | L2 第5-6阶段 | Flyers 1 | 话题为抽象感受/计划,回答6-8句话,逻辑连贯有支撑 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:口语表达、逻辑组织、观点阐述 +2. 能力标签分级规则: + - 1级标签统一使用:**口语表达** + - 2级标签根据考察点动态匹配:物品描述/喜好表达/观点阐述/经历分享 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1个话题、1-2个引导提示、参考回答、评分标准 +2. 难度匹配规则: + - A级:话题为具体事物,如"Describe your favorite toy",回答描述特征即可 + - B级:话题为日常喜好,如"Talk about your favorite food",回答说明原因即可 + - C级:话题为个人经历,如"Talk about your last birthday",回答按时间顺序阐述即可 + - D级:话题为未来计划,如"Talk about your weekend plan",回答有清晰结构和细节 +3. 话题要求:贴近学生生活,符合对应年龄段认知 +4. 参考回答要求:至少提供1个满分参考回答,结构清晰 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `话题为食物` | 指定话题范围,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:根据话题进行1分钟的口头阐述] +--- +【题目1】 +【话题】 +[话题内容] +【引导提示】 +1. [提示1,可选] +2. [提示2,可选] +【参考回答】 +满分回答:[满分参考回答内容] +【评分标准】 +优秀:回答内容完整,逻辑连贯,词汇丰富,发音清晰流畅 +合格:回答包含核心内容,逻辑基本连贯,发音可理解 +不合格:回答内容不相关,或逻辑混乱无法理解 +【能力项】 +题目1 - 口语表达([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:话题复杂度、参考回答长度不符合对应等级要求 +4. 逻辑校验:话题不符合学生认知范围 +## 脚本使用说明 +执行`scripts/generate_speaking_topic_discussion.py`完成自动化生产: +```bash +python scripts/generate_speaking_topic_discussion.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --topic "食物" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/speaking/common/speaking_daily_qa/SKILL.md b/questions/speaking/common/speaking_daily_qa/SKILL.md new file mode 100644 index 0000000..a22d5ad --- /dev/null +++ b/questions/speaking/common/speaking_daily_qa/SKILL.md @@ -0,0 +1,81 @@ +--- +name: speaking_daily_qa +description: K12英语口语日常回答题标准化设计、生产、审校工具。对应题型:L1 - Starters - 口语 Part1 日常回答,考察核心能力:口语表达、日常用语运用、快速反应。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的口语日常回答题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产口语日常回答题。触发关键词:口语日常回答、日常问答题、speaking daily qa、口语Part1日常回答、日常口语表达题 +--- +# Speaking Daily QA 口语日常回答题生产技能 +## 题型说明 +本技能对应官方题型:**口语 Part1 日常回答【阶段归属:L1&L2共用,通过难度参数区分】**,考察核心能力为**口语表达(日常用语运用+快速反应)**:学生回答3-4个日常问题,每个问题回答1-3句话,考察日常词汇、句式的运用能力和表达流畅度。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第1-2阶段 | Starters 1-2 | 问题为个人基本信息类,答案为1-2个单词/短语即可 | +| B级 | L1 第3-4阶段 | Starters 3 | 问题为喜好/日常活动类,答案为1个简单句即可 | +| C级 | L1 第5-6阶段 | Movers 1 | 问题为习惯/能力类,答案为2个简单句即可 | +| D级 | L2 第1-2阶段 | Movers 2-3 | 问题为经历/计划类,答案为2-3个连贯句子即可 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:口语表达、日常用语运用、快速反应 +2. 能力标签分级规则: + - 1级标签统一使用:**口语表达** + - 2级标签根据考察点动态匹配:基础信息表达/喜好表达/习惯表达/计划表达 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:3-4个问题、每个问题的参考回答、评分标准 +2. 难度匹配规则: + - A级:问题为What's your name?/How old are you?类基础问题,答案简短 + - B级:问题为What color do you like?/What food do you like?类喜好问题,答案简单 + - C级:问题为What do you do every day?/Can you swim?类习惯/能力问题,答案稍长 + - D级:问题为What did you do yesterday?/What will you do tomorrow?类经历/计划问题,答案连贯 +3. 问题要求:符合日常交流场景,贴近学生生活 +4. 参考回答要求:至少提供1个满分回答,1个合格回答 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L1第2阶段` / `Starters 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1套(4个问题) | +| 场景要求 | 🟢 | `场景为个人介绍` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:回答下列日常问题] +--- +【题目1】 +【问题列表】 +1. [问题1内容] +2. [问题2内容] +3. [问题3内容] +【参考回答】 +1. +满分回答:[满分答案1] +合格回答:[合格答案1] +2. +满分回答:[满分答案2] +合格回答:[合格答案2] +【评分标准】 +优秀:回答完整流畅,发音清晰,语法正确 +合格:回答包含核心信息,发音可理解,语法错误不影响理解 +不合格:未回答核心信息,或发音完全无法理解 +【能力项】 +题目1 - 口语表达([2级标签])- [考察核心知识点] +题目2 - 口语表达([2级标签])- [考察核心知识点] +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在L1单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:问题复杂度、参考回答长度不符合对应等级要求 +4. 逻辑校验:问题不符合日常交流场景 +## 脚本使用说明 +执行`scripts/generate_speaking_daily_qa.py`完成自动化生产: +```bash +python scripts/generate_speaking_daily_qa.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "个人介绍场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1词库(路径:`business_knowledge/L1_word_list.json`)中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/writing/writing_email_reply/SKILL.md b/questions/writing/writing_email_reply/SKILL.md new file mode 100644 index 0000000..5a54629 --- /dev/null +++ b/questions/writing/writing_email_reply/SKILL.md @@ -0,0 +1,87 @@ +--- +name: writing_email_reply +description: K12英语写作邮件回复题标准化设计、生产、审校工具。对应题型:L2 - Movers - 写作 Part1 邮件回复,考察核心能力:书面表达、格式规范、信息提取。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的写作邮件回复题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产写作邮件回复题。触发关键词:写作邮件回复、邮件回复题、writing email reply、写作Part1邮件回复、应用文写作题 +--- +# Writing Email Reply 写作邮件回复题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 写作 Part1 邮件回复【阶段归属:L2专属】**,考察核心能力为**书面表达(格式规范+信息提取)**:学生阅读一封简短邮件,根据要求写20-50词的回复邮件,考察邮件格式、信息完整性、语言正确性。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 回复要求明确,只需回答2个简单问题,20-30词,格式简单 | +| B级 | L2 第1-2阶段 | Movers 2 | 回复要求回答3个问题,30-40词,包含问候和结尾 | +| C级 | L2 第3-4阶段 | Movers 3 | 回复要求回答3个问题+1个附加要求,40-50词,格式完整 | +| D级 | L2 第5-6阶段 | Flyers 1 | 回复要求回答3个问题+表达个人观点,50-60词,语言连贯 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:书面表达、格式规范、信息提取 +2. 能力标签分级规则: + - 1级标签统一使用:**书面表达** + - 2级标签根据考察点动态匹配:信息回复、格式应用、语言组织 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:1封收到的邮件、回复要求、参考范文、评分标准 +2. 难度匹配规则: + - A级:收到的邮件是简单问候/邀请,回复只需回答是/否+简单信息 + - B级:收到的邮件是活动邀请,回复需要回答时间/地点/是否参加等信息 + - C级:收到的邮件是活动询问,回复需要回答问题+提供额外信息 + - D级:收到的邮件是讨论/建议,回复需要回答问题+表达个人观点 +3. 邮件要求:内容贴近学生生活,格式规范,符合对应难度词汇要求 +4. 参考范文要求:包含完整格式(问候、正文、结尾署名),符合字数要求 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为生日派对邀请` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:阅读邮件,写一封回复] +--- +【题目1】 +【收到的邮件】 +From: Lily +To: Tom +Subject: Birthday Party +Hi Tom, +I will have a birthday party this Saturday. Would you like to come? +Please write to me soon. +Lily +【回复要求】 +1. 回复Lily是否参加 +2. 说明你喜欢的食物 +【参考范文】 +Hi Lily, +Thank you for your invitation. I'd love to come to your party. I like cake very much. +See you on Saturday! +Tom +【评分标准】 +优秀:格式完整,信息完整,语法正确,字数符合要求 +合格:格式基本完整,信息完整,语法错误不影响理解 +不合格:信息缺失,或语法错误严重无法理解 +【能力项】 +题目1 - 书面表达([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【书面表达(对应能力标签)】能力。按照要求回答所有问题,注意邮件的格式:开头问候,结尾署名,内容连贯就可以拿高分哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:回复要求复杂度、字数要求不符合对应等级要求 +4. 逻辑校验:参考范文不符合回复要求,或格式不规范 +## 脚本使用说明 +执行`scripts/generate_writing_email_reply.py`完成自动化生产: +```bash +python scripts/generate_writing_email_reply.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "邀请场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。 diff --git a/questions/writing/writing_picture_writing/SKILL.md b/questions/writing/writing_picture_writing/SKILL.md new file mode 100644 index 0000000..55a5d7c --- /dev/null +++ b/questions/writing/writing_picture_writing/SKILL.md @@ -0,0 +1,79 @@ +--- +name: writing_picture_writing +description: K12英语写作看图写作题标准化设计、生产、审校工具。对应题型:L2 - Movers - 写作 Part2 看图写作,考察核心能力:书面表达、图片观察、逻辑组织。使用场景:(1) 根据给定知识点、难度等级生成符合教研规范的写作看图写作题;(2) 校验题目格式、难度匹配、内容合规性;(3) 批量生产写作看图写作题。触发关键词:写作看图写作、看图写作题、writing picture writing、写作Part2看图写作、看图写话题 +--- +# Writing Picture Writing 写作看图写作题生产技能 +## 题型说明 +本技能对应官方题型:**L2 - Movers - 写作 Part2 看图写作【阶段归属:L2专属】**,考察核心能力为**书面表达(图片观察+逻辑组织)**:学生根据1-3张图片的提示,写3-5句话的短文,考察图片信息提取、语言组织、逻辑连贯能力。 +## 难度对应关系(与教研标准对齐) +| 难度等级 | 对应L1/L2阶段 | 对应剑桥考试等级 | 难度描述 | +|----------|------------|------------------|----------| +| A级 | L1 第5-6阶段 | Movers 1 | 1张简单图片,写3句话,描述图片内容即可 | +| B级 | L2 第1-2阶段 | Movers 2 | 2张连续图片,写4句话,描述事件过程 | +| C级 | L2 第3-4阶段 | Movers 3 | 3张连续图片,写5句话,描述完整事件 | +| D级 | L2 第5-6阶段 | Flyers 1 | 3张连续图片,写6句话,描述事件+表达感受 | +## 能力标签绑定规则 +1. 题型固定绑定通用能力标签:书面表达、图片观察、逻辑组织 +2. 能力标签分级规则: + - 1级标签统一使用:**书面表达** + - 2级标签根据考察点动态匹配:图片描述、事件叙述、情感表达 +3. 生产时自动标注每道题考察的核心知识点 +## 生产规则 +1. 每道题包含:图片描述、写作要求、参考范文、评分标准 +2. 难度匹配规则: + - A级:图片为单个物品/人物,描述外观/状态即可 + - B级:图片为两个连续动作,描述动作过程即可 + - C级:图片为完整事件的三个阶段,按照顺序描述事件即可 + - D级:图片为完整事件,描述事件+表达个人感受/观点 +3. 图片描述要求:清晰说明图片的核心内容、人物、动作、场景 +4. 参考范文要求:符合字数要求,逻辑连贯,词汇语法正确 +## 输入参数 +| 参数 | 必填 | 格式示例 | 说明 | +|------|------|----------|------| +| 知识点 | ✅ | `apple n.苹果;red adj.红色;eat v.吃` | 考察的核心知识点列表 | +| 难度等级 | ✅ | `A级` / `L2第2阶段` / `Movers 2` | 难度等级或对应阶段 | +| 题量 | 🟢 | `5` | 生成题目数量,默认1道 | +| 场景要求 | 🟢 | `场景为公园玩耍` | 指定题目场景,不指定则自动匹配知识点 | +## 输出格式规范 +严格按照以下格式输出,禁止额外内容: +``` +【题目组描述】 +[整体场景说明,例如:根据图片内容写3-5句话] +--- +【题目1】 +【图片描述】 +1. 第一张图:一个男孩在公园里跑步 +2. 第二张图:男孩停下来买冰淇淋 +3. 第三张图:男孩坐在长椅上吃冰淇淋 +【写作要求】 +描述图片中的内容,不少于3句话 +【参考范文】 +It is sunny today. Tom is running in the park. He feels hot, so he buys an ice cream. He eats the ice cream and feels happy. +【评分标准】 +优秀:内容完整,逻辑连贯,语法正确,字数符合要求 +合格:内容基本完整,逻辑基本连贯,语法错误不影响理解 +不合格:内容与图片无关,或语法错误严重无法理解 +【能力项】 +题目1 - 书面表达([2级标签])- [考察核心知识点] +【解析】 +✅ 本题考察【书面表达(对应能力标签)】能力。按照图片的顺序描述,注意动作的先后逻辑,使用学过的词汇和句型,就能写出不错的短文哦😉 +--- +【题目2】 +...(多套题重复上述结构) +``` +## 校验规则 +自动校验不通过直接返回错误: +1. 词汇校验:所有知识点必须在对应级别单词库中,禁止超纲 +2. 格式校验:缺少必填字段或格式不符合规范 +3. 难度校验:图片复杂度、字数要求不符合对应等级要求 +4. 逻辑校验:参考范文不符合图片内容,或逻辑不连贯 +## 脚本使用说明 +执行`scripts/generate_writing_picture_writing.py`完成自动化生产: +```bash +python scripts/generate_writing_picture_writing.py \ + --knowledge "apple n.苹果;red adj.红色;eat v.吃" \ + --difficulty "A" \ + --count 3 \ + --scene "公园场景" +``` +> 🔘 词汇校验规则:脚本会自动校验所有知识点是否在共享L1/L2词库中,禁止使用超纲词汇,无需单独传入词表文件。