# 灵枢英文原子化语义检索 · 复现文档 ## 概述 灵枢大脑库支持中英双语原子化语义检索。 中文通过 char-bigram + terms 字段预提取关键词实现(命中率 95-99%)。 英文通过 归一化原子词 + Jaccard 相似度实现(命中率 53/80/88)。 两者的差距源于语言固有属性:英文每个概念平均有 5.2 种同义表达(CC-CEDICT 数据), 中文只有 1-2 种。同义词数量级差异 1820 倍(95 对 vs 172,950 对)导致英文 query 和 content 极可能选用不同表达,词面匹配无法命中。 ## 目录结构 ``` dsh-memory/md_cg/ |-- mdcg.py # 核心检索引擎(中文+英文通用) |-- semantic/ | |-- atoms.json # 语义原子表(815 个中文概念) | |-- SCHEMA.md # 语义层 IR 定义 | |-- en_normalizer.py # 独立英文归一化模块 | |-- zh_en_atoms.py # 原子级中英序列化器(灵枢→soul hub) | |-- canonical.py # 标准语义归一面(词表真源+OOV 审计+组合共现) | |-- search_index.json # 双语搜索索引 | └── REPRODUCE.md # 本文档 └── lexicon/ |-- RULES.md # 构词法规则(R1-R7) |-- standard_en.json # 英文标准库(62 词条 + 186 语素,空格分隔) └── char_atoms_clean.json # 字级英文原子库(6320 字映射) ``` ## 快速复现 ### 英文检索(中文语义归一化桥接 · 96.8/99.8/99.8,2026-09-14 主路线定稿) **路线裁定(使用者 2026-09-14)**:英文检索问题用「中文翻译 + 语义归一化」解决—— 查询侧由 AI 把英文原句归一为中文标准关键词(归一主体=AI,系统只供词表真源), 中文关键词经字级原子映射转英文原子,与双语原子库做 Jaccard 匹配,返回英文原文。 LoCoMo 500 题给定中文关键词 hit@10 = **99.8%**(`bench_en_atoms_public.py` 臂②,**检索侧上界口径**——AI 归一环节质量未纳入该评测)。边界对照 (同脚本臂③④⑤⑥⑦):英文原题不做归一直接词面匹配 78.2-81.2%(同义词 鸿沟硬边界);机械词表归一端到端 57.2%(④,CEDICT 28294 键直译→②同 链路,外部复核与本仓逐位一致);②路鲁棒性:漏 20% 关键词/插 3 噪词/ 错译 20% 后 hit@10 仍 99.2-99.8(⑤⑥⑦,确定性扰动)——AI 归一只需 「大致方向对」,不需完美。机械词级归一→纯中文库上界 33.6%(已排除)。 加载字级原子库和语料,对中文内容做字级原子映射、对英文原文做归一化, 合并为节点原子集。中文 query 关键词经字级原子映射转英文原子后,与节点原子集做 Jaccard 匹配。 归一化规则(设计者裁定): - 小写化(Caroline → caroline) - 去停用词(the/a/is/was/what 等不入原子集) - 去时态(不规则动词查 IRREGULAR 表;规则动词去 -ed/-ing) - 去复数(pets→pet;保守策略:-ous/-us/-is 结尾不剥) - 清标点(引号/问号等清除) - 保守原则(宁可少剥不可误剥,courageous 不剥 -s) ### 字级原子库 - 来源:通用规范汉字表一二级 6500 字 交集 CC-CEDICT 6494 单字条目 - 映射数:6319 字(97.2% 覆盖率;内容政策清单剔除 1 字) - 排除:173 个纯音缀字(玻/璃/葡/萄 等无独立语义的字) ### 已验证评测结果 | 方法 | hit@1 | hit@5 | hit@10 | 语料 | |---|---|---|---|---| | 中文(md_cg 管线) | 94.6% | 99.2% | 99.2% | LoCoMo 500 题 | | **英文(中文语义归一化桥接,主路线)** | **96.8%** | **99.8%** | **99.8%** | LoCoMo 500 题(中文关键词→字级英文原子 × 双语原子库;检索侧上界) | | 英文机械归一端到端(④,词表直译无 AI) | 24.0% | 46.0% | 57.2% | LoCoMo 500 题(英文原题→CEDICT 直译→②同链路) | | 英文(归一化原子+Jaccard) | 52-53% | 79-81% | 87-88% | LoCoMo 500 题(中文关键词→英文原子) | | 英文理论天花板 | - | - | - | 同义词鸿沟 1820x | 2026-09-14 本仓定稿复现(`bench_en_atoms_public.py`,词表与停用词表迭代后): doc 侧=中文五槽字级映射 ∪ 英文正文归一词(双语原子库);臂② 中文关键词→ 字级英文原子 **96.8/99.8/99.8(主路线定稿数字)**——查询侧语义链与写入侧 加工面(中文五槽摘要)同构,与 ① 同属写入侧加工口径;臂③ 英文原题不归一 直接匹配 50.0/74.6/81.2、臂③a 纯英文正文直接匹配 39.0/67.0/78.2—— 两臂为「不做语义归一化」的对照,与主路线 99.8 的差值即**中文翻译+语义 归一化对英文检索问题的闭合量**(21.6pp);臂④ 机械词表归一端到端 24.0/46.0/57.2(英文问句→normalize_en_query 词表直译→②同链路,与② 唯一差异=归一来源)——机械直译错译可译词(race→人种),低于不归一的 81.2%,是「归一主体必须为 AI」的直接证据;臂⑤⑥⑦ ②路鲁棒性(确定性 扰动:每 5 词丢 1/尾插 3 噪词「天气 音乐 旅行」/每 5 词错译 1)hit@10 99.4/99.8/99.2——归一过半正确即稳 99%+;dsh 端 87-88 行为裸对话语料 口径,与本仓加工面语料不同构,仅作方法学沿革记录。 ### 渐进式语义检索(Progressive Semantic Retrieval,2026-09-14) 理论(使用者与 GPT 定稿):语义解析的完整性与检索的必要性不是同一个 问题——查询是不断收紧的约束集合,从最小可靠语义宽检索、按候选间区分度 逐步加条件使语义收敛;DEFER=「分辨率不足,继续获取条件」(四态控制器 语义)。控制器 `md_cg/progressive.py`(core_subset/discriminative/ progressive_search,纯函数确定性,评分器注入式),测试 `test_progressive.py` 19 断言,实验 `bench_progressive.py` 双实验: - 实验一(locomo-zh-500,doc 侧与②同口径):G0 一次性全原子 96.8/99.8/99.8(=②锚点自校验)· G2 只宽检 50% 核心原子 85.2/95.8/97.0 · G1 渐进(平均 +2.97 条件)final 93.6/98.8/99.0 (MRR 0.8987→0.9579)——与一次性差 0.8pp,实证「不必一句话完成 语义理解」。 - 实验二(受控干扰池 42+2 节点真实 MdCGOS):2 条邻居伪造生效条件= gold 同款 → judge 判 ACCEPT(冒充形态构造成功);渐进后 top1 稳 gold 且不引入新冒充。**边界(如实)**:条件面冒充不被内容词渐进 消除(judge reason:生效条件命中+5 要素+负条件+基底全过)——词面 条件确认必要非充分,真伪判据=verification_basis/时间线冲突 (证据强度分离,另案)。 run: `python -m md_cg.bench_progressive` ### 已排除的无效方案 以下方案经过实测并确认无效或恶化,不应重新尝试: 1. 同义词扩展(CC-CEDICT 共现词不是同义词) 2. 概念级映射替换字级(粒度不是瓶颈) 3. terms 注入 content(稀释 Jaccard 分母,反而恶化) 4. query 预判词注入 content(同上) 5. query 共现扩展(共现词不等于同义词) 6. char-bigram 英文匹配(英文字符无独立语义,区分度极低) 7. md_cg char-bigram 管线跑英文(架构不适配,比独立方案更差) 8. 词级 terms 映射(干净但覆盖面窄,不如字级+英文原文组合) 9. 英文→中文**机械**词级归一→纯中文库(2026-09-14 使用者终局裁定排除; 注意排除的是机械词级归一路,非「中文归一化」路线本身——查询侧归一由 AI 完成,即主路线「中文翻译+语义归一化桥接」的正身): CEDICT 词级反查(17700→28294 键,doc 语料三级同构消歧)后 u2 hit@10 仅 33.6%,五连探针证据链(泛词/多候选/数字/消歧覆盖/原子差集)证明 缺口 100%=题面无词的 8 倍信息差(英文自然问句 p50 交集 1 vs 中文 标注关键词 p50 交集 8),机械归一路上界,与翻译质量无关; 中文关键词同库同路 99.2%(u2c)——瓶颈是题面信息量而非机制。 产物保留:`md_cg/lexicon/build_cedict_en_zh.py`(消歧器)+ `cedict_en_zh.json`(28294 键资产)+ `bench_unified_en.py`(对照评测)。 ### 与中文检索的关系 中文检索走 md_cg 管线(char-bigram + 四路 RRF + 同义扩展 + terms 字段)。 英文检索走「中文语义归一化桥接」主路:查询侧 AI 归一为中文关键词 → 字级 原子映射 → 与双语原子库 Jaccard 匹配(不经过 md_cg char-bigram 管线, 机械映射部分独立实现)。两者查同一个图,共用同一条中文语义链;英文原题 直接词面匹配(78.2-81.2)仅作「不做归一化」的对照边界保留。 ### 语义摘要路(MDCG_SEMANTIC=1,2026-09-14) 使用者设想的落地形态:**归一主体是 AI(写入侧与查询侧),系统只供词表真源**。 - 词表真源:`atoms.json` 815 标准概念(`canonical.atoms_zh()` 只读加载); - 写入:AI 归一后传 `add(semantic="鱼 油")`(空格分隔标准原子序列),落 `fm.semantic` 衍生层;OOV token 记 `fm.semantic_oov`(警告不拒绝); 正文原文无损——归一错误仅限摘要层,词表更新后重归一可修复; - 查询:AI 检索前把原句归一为标准原子串(如「荤油」→「猪 油」); - 检索(opt-in,默认关闭零回归):`fm.semantic` 节点无条件入候选池 (摘要=检索面),打分用组合窗口共现(`canonical.pair_hits`,win=6) 与词法分 **max 聚合**。 同义归一表**不进代码**(「荤油→猪油」由 AI 在两端理解里完成); 纯邻接判据已证过严(只救 1/3),win=6 为探针实证口径; 开放域「鱼和油分述」的误配风险由组合结构约束兜底(P1 compositions,另案)。 验收(`bench_blind_comp.py` seed=7,受控 33 篇):L3 语义层 b0/b1=0% → b2(gold 带 semantic + 归一 query)=100%(hit@1/MRR=1.0,n=3); L1 双臂 100% 不变(max 聚合零拖累)。原句直查(查询侧未归一)只救 词面原子齐备题(1/3)——两端归一缺一不可。 ### 同义词数量级差异(根本原因) - 中文同义词对:95 个(10 组,47 词) - 英文同义词对:172,950 个(8,493 汉字,9,691 英文词) - 差异倍数:1,820 倍 - 平均每概念英文表达数:5.2 种 中文:概念→表达 是 1:1~1:2,词面匹配天然命中 英文:概念→表达 是 1:5~1:20,query 和 content 极可能选不同表达