# 灵枢英文原子化语义检索 · 复现文档

## 概述

灵枢大脑库支持中英双语原子化语义检索。
中文通过 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 极可能选不同表达