天津市高考英语阅读理解解析
用途
把天津市高考英语阅读理解真题(原卷或已有解析),生成为一份可直接印发的
解析文档(.docx),版式与内容对齐用户历年真题解析文档的传统。
何时使用
- 用户给出天津卷阅读理解真题 A/B/C/D 各篇(docx / pdf / 纯文本 / 图片),要求「解析」
- 用户要求为阅读理解做「词汇注释」「长难句分析」「语篇分析」「翻译」「逐题分析」
- 用户要对某一年某一次天津卷做命题人视角的深度剖析
核心工作流(7 步,严格按序)
0 定位真题 → ①抽取语篇与选项 → ②语篇整体分析(深度思考模型)→ ③词汇注释
→ ④长难句解析 → ⑤翻译(DeepL / 模型)→ ⑥逐题解析(七步)→ ⑦渲染 docx
↓
glossary_lookup.py(查手册,分流「需联网」清单)
↓
WebFetch(仅对需联网词条补义)
⚠️ ②必须在⑥之前:逐题解析的「预判原文映射区域」要回指语篇分析的段落功能表,
先做逐题解析会失去宏观依据。
第 0 步 定位与读取真题
真题通常在 D:\新版外研版高中英语\高考英语真题\ 下按 年份年 第几次\ 分目录存放,
文件名形如 2025 天津卷 第二次 阅读理解D.docx。
若需要编辑或读取 docx 内容,先按 workbuddy-office-routing 的规则选择通道
(读/改既有文档 → workbuddy-local-office-edit)。若只是要把正文抽成纯文本供分析,
用 scripts/extract_reading.py 即可,不必走编辑器通道。
第 1 步 抽取语篇与选项(脚本化)
python scripts/extract_reading.py "2025 天津卷 第二次 阅读理解D.docx" --json -o extracted.json
脚本已处理天津卷真题的全部版式差异:
| 版式 | 特征 | 处理 |
|---|---|---|
| 2018—2022 | 语篇在单格表格里,词汇注释作为普通段落穿插 | 自动识别「语篇区」有实质表格 → 只取表格单元格 |
| 2023—2025 | 语篇是普通段落,选项紧随其后 | 无实质表格 → 取段落 |
| 2023+ 应用文 | 整篇语篇在一个单元格内 | 单元格内按换行还原自然段 |
| 2018—2022 | 语篇是带句法标注保存的([ ] < > { }) |
自动剥离标注,还原干净原文 |
| 任意 | 词汇注释行粘连进语篇单元格 | 按「词性+」等特征截断 |
| 任意 | 选项字母缺省点(C It needs…) |
兼容解析 |
| 任意 | 一行两选项 / 一行四选项 | 兼容解析 |
| 任意 | 题号区间不固定(2021 第一次 A=36-39、C=45-50) | 从文档实际题号推断,不写死 |
题号区间由 detect_range() 从文档自动推断;也可用 --first/--last 手工指定。
第 2 步 语篇整体分析(调用深度思考模型)
按 references/discourse_analysis.md 对完整语篇做深层分析,产出 discourse 对象。
必须覆盖六个维度:语篇类型与体裁图式、宏观结构与超主位、主题(显性/深层)、
逻辑衔接手段索引、情感线索与语境一致性、命题主轴总结。
调用方式:用 Agent 工具,subagent_type: "general-purpose"、model: "reasoning",
把完整语篇 + references/discourse_analysis.md 一并交给它,要求返回 JSON。
产出要点:
- 段落功能表(必须标注每段涉及的题号——这是后续「预判原文映射区域」的依据)
- 段落逻辑链表(句子 | 功能 | 逻辑关系,2025 第二次 D 卷的成熟形态)
- 情感弧线(起点→转折→终点),每段引原文句作证据,并标出情感复现处
- 语境三层面:语场 / 语旨 / 语式 → 推出全文基调与 anti_schema(反常识图式)
- 命题主轴:考查重心分布 + 题号—图式槽位对应 + 必抓衔接信号清单
第 3 步 词汇注释(核心,脚本化)
这是本技能最确定、最可复用的部分,务必走脚本,不要凭记忆填释义。
# ① 筛重点词汇候选(按解题相关性打分:选项/题干/语篇/逻辑词/评价词/专名/词块)
python scripts/scan_reading.py extracted.json --top 40 --with-score
# ② 查《高中英语词汇手册》,输出规范表格行(--family 输出词族,与真题文档一致)
python scripts/glossary_lookup.py --passage passage.txt --top 40 --family
# ③ 只要「需联网补义」的清单
python scripts/glossary_lookup.py --passage passage.txt --top 40 --only-online
脚本行为:
- 自动探测《高中英语词汇手册.xlsx》(默认在 D:\新版外研版高中英语\高考英语真题\),
也可 --glossary "<绝对路径>" 指定
- 做索引感知的词形还原:shaped→shape、hoped→hope、tuned→tune、
carried→carry、bought→buy(不规则表),并处理连字符与撇号
(piano-tuning→tune、O'Hare→Hare)
- 短语精确匹配:in vain / give away / at random 不会被同首词条目污染
- 输出与真题文档完全一致的 5 列 星级|词条|音标|词性|注释内容
- 把「查无此词」和「释义为空」两类分流为需联网补义清单
> 实测:手册 4540 个词条中约 1554 行释义为空(多为专有名词与文化词),
> 这正是需要在线词典补齐的对象。
选词标准见 references/glossary_spec.md:标「解题所依赖的词、选项涉及词、
承载逻辑关系的词、评价态度词、文化专有名词」,不标冠词介词代词等虚词。
每篇 25—45 条,分 6—12 个语义场小组。
补义:按 references/online_dictionaries.md 用 WebFetch 补齐。
注意 Collins 必须用 WebFetch(curl 会 403),Macmillan 当前不可达直接跳过。
补齐后在单元格内注明来源(如「(据 Collins 补齐)」),并给该组加 ⚠ 标注。
第 4 步 长难句解析
筛出三层及以上结构的句子,按 references/sentence_analysis.md 的
「五步分析法」+ 用户既有的标注符号系统([] 定语从句、<> 状语、
() 补足语、《》 状语从句、{} 整体、= 同位语、● 句首标记)逐步拆解。
每句必须写清:层次切分 L1/L2/L3 → 句法主干与从句 → 语义新信息与逻辑功能 →
信息焦点 → 关联到哪一道小题。若某句关联不到任何小题,就不必列为长难句。
第 5 步 翻译(DeepL 优先)
按 references/translation.md 执行:
python scripts/deepl_translate.py --check # 检验密钥
python scripts/deepl_translate.py --text-file passage.txt -o translation.json
python scripts/deepl_translate.py --text-file passage.txt --split-only -o sentences.json
DeepL 密钥配置:写入 ~/.workbuddy/settings.json 的 env.DEEPL_AUTH_KEY
(Bash 不加载 shell profile,export 无效;脚本会主动读该文件,无需重启)。
未配置时脚本输出待译清单并以退出码 3 结束,此时改用模型翻译通道,
并在 translation.engine_note 如实标注「未配置 DEEPL_AUTH_KEY,由模型翻译」
——不得伪造译文来源。
产出两部分:
- paragraphs:逐段对照译文,段落与原文严格一一对应
- aligned:关键句中英对照表(必填「关联题号」列),覆盖所有定位句、
长难句、情感转折句、主题句、文化词句、结论句
翻译质量红线(从真题文档的真实误译中提炼):保留括号释义、保留引号内容、
人名译名前后统一、不得逐字硬译(如 experienced quiet 须译「体验到了安静」
而非真题文档里的误译「讨厌安静」)。
第 6 步 逐题解析(七步框架)
按 references/item_analysis_spec.md,每题必含七项:
① 考查类型 ② 提取定位词(显性/隐性)③ 预判原文映射区域 ④ 定位句
⑤ 原文高关联性相关信息(信息比对)⑥ 正确项依据 ⑦ 各干扰项原文、干扰类型及排除理由。
干扰项分析用三列表(真题文档惯例,正确项不入表):
| 选项原文 | 干扰类型 | 排除理由 |
|---|---|---|
干扰类型必须取自 item_analysis_spec.md 的实证词表(44 份文档统计得出:
无中生有 190、偷换概念 115、反向干扰 80、以偏概全 55、张冠李戴 44、
曲解文意 38、过度推断 32、答非所问 30、以常代异 7、范围绝对/缩小/扩大、
因果倒置、条件结果倒置、条件混淆、时序颠倒…),可双标如「无中生有/偷换概念」,不自造。
同时必须应用从 44 份文档中提炼的隐含精细技能(见 spec 末节):
干扰项原文回指检查、数字陷阱专项、词形偷换(scientific idea≠correct idea)、
搭配/共现检查、例证题方向性、主旨题范围维度、反常识题、定位词首现优先、
题干限定词四敏感点、复现即证据。
语篇层面的宏观预测要回指第 2 步 discourse.paragraph_map 的题号对应。
第 7 步 渲染成文档
python scripts/build_docx.py result.json -o "天津市高考英语阅读理解解析.docx"
脚本仅依赖标准库,不需要 python-docx。生成后用 present_files 呈现给用户。
输出 JSON 数据结构
{
"title": "天津市高考英语阅读理解解析",
"meta": { "卷别": "天津卷·第二次", "篇目": "阅读理解 D" },
"passage": ["第1段原文", "..."],
// ===== 第2步产出:语篇整体分析 =====
"discourse": {
"genre": "说明文(科普随笔)",
"schema": "General Statement → Specific Examples → Conclusion",
"structure": "开篇立论 → 三类局限分类展开 → 定义澄清与升华",
"tense_frame": "全文以一般现在时为主",
"macroscopic_theme": "开篇核心陈述:……",
"theme": { "explicit": "…", "implicit": "…", "carrier": "承载句原文" },
"paragraph_map": [
{ "para": 1, "superordinate": "主题句原文", "function": "Orientation(开端)",
"items": [51, 52] }
],
"cohesion_index": { "connectives": ["but","yet"], "reference": ["it(=science)"],
"lexical": ["mysteries ↔ mysteries"], "markers": ["Think about this"],
"rhetoric": ["What if…?(设问)"] },
"ring_composition": "开头 … 与结尾 … 呼应",
"emotion_thread": { "arc": "自信 → 谦抑 → 敬畏 → 开放",
"evidence": [{ "emotion": "自信", "quote": "原文句" }],
"recur": ["第3段与第5段的情感复现"] },
"context": { "field": "…", "tenor": "…", "mode": "…", "tone": "…",
"anti_schema": "「不可检验的想法反而最有趣」" },
"axis_summary": "事实细节 2 题 + 推理判断 1 题 + 段落主旨 1 题 + 定义理解 1 题",
"item_map": "51-52 第1-2段|53 第3段|54 第4段|55 第5段",
"key_items": ["54", "55"],
"must_catch": ["but", "yet", "never", "by definition"]
},
"paragraph_logic": [
{ "sentence": "1. We can do…", "function": "肯定成就(扬)", "relation": "铺垫" }
],
"global_summary": ["三到五句全文总结"],
// ===== 第4步产出:长难句 =====
"sentences": [
{ "text": "●<标注文本>",
"layers": "L1 …;L2 …;L3 …",
"syntax": "句法分析", "semantics": "语义分析", "focus": "信息焦点",
"why": "关联题号与解题价值" }
],
// ===== 第3步产出:词汇注释 =====
"glossary": [
{ "head": "核心概念词",
"rows": [["**","testable","/ˈtestəbl/","adj.","可检验的;可试验的;可验证的"]] },
{ "head": "culture ⚠ 词汇手册未给出释义",
"rows": [["","piano","/piˈænəʊ/","n.","钢琴(据 Collins 补齐)"]],
"note": "⚠《高中英语词汇手册》中该词条「释义」列为空,释义据 Collins 补齐。" }
],
// ===== 第6步产出:逐题解析七项 =====
"items": [
{ "no": 51,
"stem": "Why does the author mention \"knife\" and \"hammer\" in Paragraph 1?",
"options": { "A": "…", "B": "…", "C": "…", "D": "…" },
"answer": "D",
"qtype": "推理判断题(写作意图/例证目的题)",
"locators": { "explicit": ["knife","hammer","Paragraph 1"],
"implicit": ["why mention(作者为什么举例)"] },
"predict": "首段例证处。例证题通常「例子在前,观点在后」……",
"anchor": "There are occasions where I have used the handle of a knife…",
"compare": ["刀柄当锤子:能用,但「更合适的工具」会更好。",
"a more suitable tool ↔ the right tool"],
"core": "工具要匹配任务;科学也有适用范围。",
"distractors": [
{ "opt": "A", "text": "To demonstrate how tools can be used creatively.",
"type": "无中生有/曲解文意",
"reason": "工具可创造性使用:原文不是强调创意,而是强调工具是否合适。" }
] }
],
// ===== 第5步产出:翻译 =====
"translation": {
"engine": "deepl",
"engine_note": "DeepL API(api-free)", // 无密钥时写「未配置 DEEPL_AUTH_KEY,由模型翻译」
"aligned": [
{ "no": 1, "en": "…", "zh": "…", "items": [51], "why": "第51题定位句" }
],
"paragraphs": [ { "en": "…", "zh": "…" } ]
},
"closing": ["命题规律总结……"]
}
bundled 资源
| 文件 | 作用 |
|---|---|
scripts/extract_reading.py |
从真题 .docx 抽取语篇与选项(兼容 2018—2025 全部版式) |
scripts/scan_reading.py |
重点词汇候选筛选(按解题相关性打分) |
scripts/glossary_lookup.py |
查《高中英语词汇手册》并输出规范表格行;分流「需联网」清单 |
scripts/deepl_translate.py |
DeepL 翻译 + 逐句对照;无密钥时产出待译清单并降级模型翻译 |
scripts/build_docx.py |
把结果 JSON 渲染成 .docx(仅标准库) |
scripts/prepare_packages.py |
批量流程:一次抽出全部篇目并生成「工作包」JSON(含已查好的词汇表) |
scripts/refine_vocab.py |
判断哪些「手册未给释义」的词值得联网补义(排除基础词与短语碎片) |
scripts/validate_all.py |
批量流程:校验全部篇目的解析 JSON 是否满足硬性要求 |
scripts/build_master.py |
批量流程:把多篇解析合并渲染为单份总册 .docx |
scripts/verify_master.py |
批量流程:对总册做最终完整性核验 |
scripts/self_check.py |
技能自检:frontmatter/语法/引用完整性 |
references/discourse_analysis.md |
语篇分析六维度规范 + 段落逻辑链表格式 |
references/item_analysis_spec.md |
逐题七步规范 + 实证干扰类型词表 + 隐含精细技能清单 |
references/sentence_analysis.md |
长难句标注符号系统 + 五步分析法 + 句型速查 |
references/glossary_spec.md |
词汇注释选词标准 + 表格版式 + 星级规则 |
references/online_dictionaries.md |
在线词典优先级、URL 模板、访问方式与坑 |
references/translation.md |
DeepL 接入方式 + 翻译质量红线 + 逐句对照格式 |
references/sample_output.json |
完整示例数据,可直接改写 |
批量处理多篇真题(推荐流程)
当用户一次性给出多篇(如 A/B/C/D 全篇、多年份)时,用批量流水线:
# ① 一次抽出全部篇目,生成工作包(已内置词汇查表结果)
python scripts/prepare_packages.py # → packages/pkg_<tag>.json + _index.json
# ② 判断哪些词需要联网补义(排除基础词),把清单给 WebFetch 批量查
python scripts/refine_vocab.py # 自测;实际清单见各包的 online 字段
# ③ 交给子代理(reasoning 模型)按组生成解析 JSON → results/res_<tag>.json
# 每组 4 篇,11 组可并行;提示词模板见本文件「输出 JSON 数据结构」
# ④ 校验全部篇目
python scripts/validate_all.py # 逐篇核对全部硬性要求
# ⑤ 合并渲染总册
python scripts/build_master.py # → outputs/天津市高考英语阅读理解解析(…).docx
# ⑥ 最终核验
python scripts/verify_master.py
分工建议:
- 机械部分(抽取、查表、渲染、校验)→ 脚本,零 token 成本。
- 思辨部分(语篇分析、长难句、逐题七步、翻译)→ model: "reasoning" 的子代理。
- 子代理产出后必须跑 validate_all.py,并把不达标的项返工。
注意:results/ 里的 JSON 由子代理写出,偶发把单个中文字写成替换字符(U+FFFD)。
合并前应扫描 ` 并按上下文订正 ——tools/fix_mojibake.py` 是本次的修复范例。
质量红线
- 释义必须来自手册或在线词典原文,不得凭记忆编造音标与释义。
- 干扰类型从实证词表取,不自造;干扰项表格只列 3 个,正确项不入表。
- 每题必须含七项字段,顺序固定,缺一不可。
- 排除理由必须回指原文,不接受空泛表述。
- 信息比对至少 2 组同义替换对(
↔连接)。 - 语篇分析必须在逐题解析之前完成,且逐题的宏观预测要回指段落功能表。
- 手册无星级时星级列留空,不自行杜撰 ⭐ 标记。
- 需联网补义的必须显式标注 ⚠ 并注明来源词典。
- 译文来源必须如实标注(DeepL / 模型),不得伪造。
- 长难句必须同时给句法与语义,层次切分写到 L3 及以上,且关联到具体题号。