IndicMedDialog: A Parallel Multi-Turn Medical Dialogue Dataset for Accessible Healthcare in Indic Languages¶
会议: ACL 2026
arXiv: 2605.13292
代码: https://github.com/ShubhamKumarNigam/IndicMedDialog (有)
领域: 医学 NLP / 多语言 / 多轮对话
关键词: 印度语系医学对话、并行多语言数据集、LoRA 微调、临床诊断、Asha 翻译质量保证
一句话总结¶
本文构造 IndicMedDialog——首个覆盖英文+9 种印度语系(Assamese / Bengali / Gujarati / Hindi / Marathi / Punjabi / Tamil / Telugu / Urdu)的平行多轮医学诊断对话数据集(2,980 段对话 × 10 语 = 29,800 个实例),用 LLaMA-3.3-70B 合成对话 + TranslateGemma 翻译 + native speaker 校对 + 脚本感知 post-processing 修音/拼/字符间距;并基于 4-bit 量化 LLaMA-3.2-3B + LoRA 训出 IndicMedLM,在英文/印地语/马拉地语等 7/10 种语言上拿到 post-processed accuracy 最高,同时 95.3% 医学安全通过率,揭示了 5 类系统性 failure mode(ID/LC/CDC/TTF/PLG)。
研究背景与动机¶
领域现状:医学对话 AI 在症状评估和初诊建议上潜力很大,但现有系统多为单轮 QA + 英文中心。真正的临床诊断需要多轮 follow-up 来逐步缩小鉴别诊断空间,而 15 亿印度语系人群几乎没有可用的多轮医学对话数据。
现有痛点:(1) 单轮主导:ChatDoctor 等系统假设单轮,无法模拟"医生连环问诊→鉴别诊断"过程;(2) 模板化数据集:MDDial 提供了多轮英文鉴别诊断语料但用模板生成,语言多样性弱;(3) 多语言空白:BiMediX 做了英文-阿拉伯双语,但九大印度语系完全缺平行数据;(4) 简单翻译不行:现成 LLM 翻译对印度语系普遍存在音译错乱、词汇不准、字符间距错乱等系统性错误。
核心矛盾:要在低资源语言上部署可用的医学对话 AI,必须解决"高质量多轮临床对话语料 × 多语种平行 × 算力可负担"的三角约束——前者贵且涉及隐私,后两者技术门槛高。
本文目标:(a) 用合成 + 翻译 + 人工校对的混合 pipeline 构造首个 10 语并行多轮医学对话语料;(b) 基于 4-bit 量化小模型 + LoRA 训出能在普通硬件上跑的 IndicMedLM;(c) 引入可选 patient pre-context(年龄/性别/过敏史等)模拟真实问诊上下文;(d) 通过医生评估 + 错误 taxonomy 揭示 Indic 医学对话的真实失败模式。
切入角度:把 MDDial 作为种子语料 → LLM 扩合成丰富对话多样性 → TranslateGemma + 多 native speaker rater + 脚本感知后处理保障翻译可信 → LoRA + 量化让小模型可部署。
核心 idea:用"语料构造 + 小模型工程化部署 + 系统化错误诊断"三件套,撬开低资源印度语系医学 NLP 这块硬骨头。
方法详解¶
整体框架¶
分为数据构造、模型训练、错误分析三块:
- 数据构造:(i) 用 Llama-3.3-70B-Versatile (via Groq) 合成 1,101 段多轮诊断对话,覆盖 12 种疾病 / 118 种症状 / 4-8 轮对话,注入非确定性患者响应、重叠症状、模糊描述以贴近真实;与原 MDDial 1,879 段合并为 2,980 段;(ii) 用 TranslateGemma 把英文版翻译到 9 种印度语,结构化 prompt 保留临床语义;(iii) 脚本感知 post-processing 把音/拼/字符间距错误映射到目标语言最近正确形式;(iv) 每语 2 名 native speaker 独立打分(翻译质量 T、临床安全 S 各 10 分),均值 \(\bar T = 9.50\)、\(\bar S = 9.56\)。
- 模型训练(IndicMedLM):基模 LLaMA-3.2-3B-Instruct + 4-bit NF4 量化 + LoRA(rank 16, α=16, dropout 0),LoRA 插入所有 attention proj 和 MLP proj;AdamW-8bit lr=\(2\times 10^{-4}\),wd=0.001, bsz=8(2×4 grad acc),300 step + 5 warm,BF16/FP16,seed=3407;每个印度语单独训练,对话格式为 ShareGPT 风格的 human/gpt 交替;可选 patient pre-context 拼到对话前缀,使模型按年龄/性别/过敏等个性化提问。
- 两阶段 post-processing 评测:模型输出经常把正确诊断包裹在解释性长句里,原始 accuracy 会低估真实诊断能力;用 ChatGPT 作为 LLM judge,做"受限语义等价分类"——给定自由文本输出与 12 个标准疾病名,judge 必须从封闭集中选一个或返回 NULL(高于置信阈值时才映射),从而避免幻觉同时回收"对了但格式不对"的案例。
关键设计¶
-
合成 + 翻译 + 脚本感知后处理的多语料 pipeline:
- 功能:在没有真实临床多语对话的前提下,造出语义一致、临床合理、语言准确的 10 语平行语料。
- 核心思路:链路是"Llama-3.3-70B 合成英文多轮诊断 → TranslateGemma 翻 9 种 Indic → 脚本感知 post-processing 修音/拼/间距 → native speaker 双盲打分仲裁"。脚本感知 post-processing 把翻译里产生的音译错乱(如 Bengali 字符间距、Hindi 词形误用)通过最近形态映射回正确形式;同时严格用 12 疾病 × 118 症状 schema 约束合成,控制 4-8 轮长度与症状重叠以贴近真实问诊。
- 设计动机:直接翻译会大量产生"看起来像 Bengali 但实际乱拼"的字符串,单独靠 LLM 后处理不够,必须基于目标语脚本的 Unicode 规则做映射;用真实 native speaker 打分(\(\bar T = 9.50\))作为质量上限验证,避免"自评分"陷阱。
-
LoRA + 4-bit 量化 + Patient Pre-context 的可部署小模型方案:
- 功能:让 3B 小模型在普通硬件上完成多轮个性化问诊。
- 核心思路:(i) 4-bit NF4 量化让 3B 模型显存需求降到消费级 GPU 可接受;(ii) LoRA 同时覆盖 attention 与 MLP proj(rank 16),保证语言表征 + 任务知识都能被调;(iii) ShareGPT 格式让 human=患者 / gpt=医生,明确角色分离;(iv) 可选的 patient pre-context(age, gender, allergies, comorbidities, geographic location)拼到对话前缀,让模型在采症时跳过已知信息、聚焦差异化提问。
- 设计动机:医疗 AI 真正部署的痛点是"乡镇诊所没 GPU 集群",本文显式以低算力为约束反推架构选型;patient pre-context 设计源于真实临床 workflow——医生不会重复问已经知道的信息,AI 也不应该。
-
两阶段后处理评测 + 5 类 Failure Mode taxonomy:
- 功能:(a) 把"对了但格式不对"的预测回收成正确;(b) 用统一框架解释为什么不同 Indic 语言失败模式差异巨大。
- 核心思路:post-processing 用 ChatGPT 5.3 作 closed-set judge,从 12 个 canonical 标签里选最语义等价者或返回 NULL;同时系统化整理出 5 类 FM——FM1 Instruction Drift(输出散文不带标签,部分可恢复,对应 Hindi/Marathi 的 +54pp 提升)、FM2 Label Collapse(多种病映射到同一假名,如 Bengali 所有 5 类病都映射到"肺感染")、FM3 Cross-Domain Confusion(如冠心病 → 甲状腺炎)、FM4 Tokenization/Truncation Failure(Punjabi/Telugu 字符级截断,但 Devanagari Hindi/Marathi 不受影响,证明是 tokenizer Unicode 覆盖问题非数据量问题)、FM5 Paraphrase-over-Label Generation(输出疾病描述而非标准名,最可恢复)。
- 设计动机:仅看 raw accuracy 会把 Hindi/Marathi 严重低估(19% 看起来很差,post-processing 后 73%/69%),五类 FM 直接把"模型烂"细分为"格式不对/标签碰撞/学科混淆/字符截断/换皮表达",为后续改进提供精准抓手——例如 TTF 应改 tokenizer 而非加数据。
损失函数 / 训练策略¶
标准 causal LM SFT loss(无特殊 reward / KD);每语单独训练同套超参,inference 时 temperature=0.1, top-p=0.95, max_new=128;evaluation 含 (i) 自动诊断准确率(raw vs post);(ii) 三位 MBBS 在读医生做 1-5 Likert 评分 + binary safety,Krippendorff's α=0.81。
实验关键数据¶
主实验¶
10 种语言上的诊断准确率(%),Raw 是原始输出匹配,Post 是 LLM judge 语义等价回收后:
| 语言 | GEMMA Post | Tiny-AYA Post | LLaMA Base Post | IndicMedLM Raw | IndicMedLM Post |
|---|---|---|---|---|---|
| English | 45.11 | 13.19 | 15.74 | 80.85 | 80.85 |
| Hindi | 25.10 | 13.19 | 11.06 | 19.15 | 72.76 (+53.6pp) |
| Marathi | 9.36 | 5.11 | 11.50 | 13.19 | 68.51 (+55.3pp) |
| Bengali | 19.57 | 5.96 | 11.50 | 25.11 | 58.72 |
| Urdu | 2.12 | 13.61 | 2.55 | 4.26 | 28.51 |
| Gujarati | 18.72 | 37.02 | 18.30 | 18.30 | 19.57 |
| Punjabi | 7.66 | 8.12 | 8.51 | 5.96 | 20.42 |
| Assamese | 7.66 | 8.08 | 3.83 | 5.96 | 5.96 |
| Tamil | 11.91 | 3.83 | 6.80 | 6.38 | 6.80 |
| Telugu | 6.38 | 0.00 | 4.68 | 1.28 | 5.96 |
IndicMedLM 在 7/10 语言上拿 post-processed accuracy 第一;Hindi/Marathi 的 raw→post 大跳跃(+53/+55pp)说明这两语的真实诊断能力被 raw 指标严重低估。
消融 / 专家评估(IndicMedLM 综合表现)¶
| 维度 | IndicMedLM |
|---|---|
| Medical Safety Pass Rate | 95.3% |
| Symptom Extraction (1-5) | 4.20 |
| Context Memory (1-5) | 4.40 |
| Diagnostic Correctness (1-5) | 4.10 |
| Conversational Flow (1-5) | 4.30 |
| Efficiency (1-5) | 4.00 |
| Inter-annotator Krippendorff α | 0.81 (strong) |
| Translation Quality (10-pt) | \(\bar T = 9.50\) |
| Clinical Safety in Translation (10-pt) | \(\bar S = 9.56\) |
关键发现¶
- Hindi/Marathi 假性低分:raw 才 19%/13%,post 直接到 73%/69%,说明模型确实学到了诊断知识但喜欢"用印地/马拉地式的 hedging 句子"包裹答案,metric artifact 而非能力缺失——直接 inform 后续 evaluation 协议必须配语义等价 judge。
- 疾病粒度方差极大:Traumatic Brain Injury 在英文/印地 94.7%,在 Assamese/Tamil/Telugu/Urdu 完全 0%;Conjunctivitis 在 Punjabi(语言整体 20%)却 100%——证明语言整体准确率掩盖了高度异质的疾病-语言相关性,应按 (语言, 疾病) 维度分析风险。
- Devanagari vs Gurmukhi/Telugu 的 tokenizer 鸿沟:FM4 Truncation 只在 Punjabi/Telugu 出现,Hindi/Marathi 完全没有,证明问题在 LLaMA 基模的 Unicode tokenizer 覆盖而非训练数据量;这条结论给"为什么单纯加 Indic 数据救不了 Tamil/Telugu"提供了机械层面解释。
- Bengali Label Collapse:5 类病全映射成"肺感染",是 majority-class bias 在语义 hypernym 上的体现,提示 SFT 标签分布需要平衡。
- 95.3% safety pass + 0.81 IAA:医生评估 sample 中 1483/1556 dialog 安全,说明在合成 + LoRA 路线下医学安全风险已基本可控;强 IAA 也表明评测协议本身有效。
亮点与洞察¶
- 首个 10 语平行多轮医学对话语料这一点本身就有巨大社区价值——填补 1.5B 人口的 NLP 资源空白;脚本感知 post-processing pipeline 是后续 Indic 翻译质量的可复用 trick。
- 5 类 FM taxonomy 是该领域第一份"诊断错误诊断"框架——它把"模型烂"区分为格式/语义/学科/字符/换皮 5 个层次,每一类对应不同改进方案(FM1 加格式 reward、FM4 换 tokenizer、FM5 加 post-processing),是工程上极有用的导航图。
- Post-processing recovery 揭示的"低资源语用习惯影响 metric"是一条普适教训:当模型用目标语 idiomatic hedging 表达时,硬匹配会大幅低估能力——这在所有低资源 NLP 评测中都值得引以为戒。
- patient pre-context 的引入虽然简单,但把"医生不会重复问已知信息"这一临床直觉显式注入对话,是医疗对话 AI 工程化非常正确的一小步。
- 4-bit 量化 + LoRA 这条工程路径专门为部署到资源受限地区设计——这呼应了论文使命(accessibility for underserved regions),并非纯学术 trade-off。
局限与展望¶
- 数据仍只覆盖 12 种疾病 / 118 种症状,离真实临床数千种疾病差距巨大;且全是合成 + 翻译,缺真实印度患者-医生对话作 ground truth。
- Assamese / Tamil / Telugu / Urdu 几乎完全失败(accuracy < 10%),主要瓶颈是基模 tokenizer 与 pretraining 数据分布;论文只指出问题但未实质解决——一个根本方案是换用印度语优化的基模(如 Sarvam-1)。
- 评测用 ChatGPT 作 judge,存在评估循环依赖(用闭源模型当 GT 校准开源模型);专家评估只 sample 一小部分对话。
- 个人观察:(a) 多轮诊断的真正难点是"何时停止追问开始下诊断",论文 4-8 轮硬截断未充分探索;(b) "可选 pre-context"在主表上未做有/无对照,无法量化其贡献;(c) 文化语境敏感性(如方言表达、性别禁忌话题)只在 safety pass rate 中粗略反映,未做细粒度分析。
相关工作与启发¶
- vs MDDial (Macherla 2023):MDDial 是英文模板生成的多轮鉴别诊断;本文以其为种子,扩合成、扩多语、加 native verify,把模板 corpus 升级为可用的平行多语语料。
- vs BiMediX (Pieri 2024):BiMediX 是英文-阿拉伯双语医学对话,本文把多语种数从 2 扩到 10,覆盖更稀缺的印度语系。
- vs MedAidDialog (Nigam 2026):是同作者前作(覆盖部分印度语+阿拉伯),本文专精印度语系且做平行数据,错误 taxonomy 更系统。
- vs ChatDoctor / Zhongjing / AMIE:这些工作要么是英文单轮要么是中文多轮;本文证明"小模型 + LoRA + 量化 + 合成数据"在低资源多语场景也能做出可用的多轮诊断系统。
- vs NoteChat (Wang 2024):NoteChat 由临床笔记生成对话,本文由疾病-症状 schema 生成对话,二者可互补——可以想象 future work 把笔记驱动 + schema 驱动两种合成路线结合做出更真实的低资源医学对话。
评分¶
- 新颖性: ⭐⭐⭐⭐ 数据集是首个,方法(合成 + 翻译 + 后处理 + 5-FM taxonomy)是工程组合而非颠覆性技术,但 social impact 角度很有原创性。
- 实验充分度: ⭐⭐⭐⭐ 10 语全表对比 + 12 疾病粒度分析 + 三医生 IAA 评估 + 五类 FM 系统化错误分析,覆盖面广;缺少 ablation(pre-context、post-processing 各自的增量贡献)。
- 写作质量: ⭐⭐⭐⭐ 数据-方法-错误三段式清晰,表格设计很好读;fontspec 标签在 cache 里残留较多影响阅读但不影响内容质量。
- 价值: ⭐⭐⭐⭐⭐ 直接服务 15 亿低资源人群,开源数据集 + 模型 + 训练代码,社区影响力强;五类 FM taxonomy 也对低资源医学 NLP 后续研究有方法学价值。