跳到主要内容
把临床记录翻成患者能读的话,先看「可能」两个字还在不在

把临床记录翻成患者能读的话,先看「可能」两个字还在不在

abanana
abanana

· 阅读约 6 分钟

这两天在 arXiv 的 cs.CL 列表里翻到一篇 10 月 22 号提交的论文,《From Structured Records to Patient Narratives: Preserving Clinical Alignment in LLM-Generated Health Summaries》,18 页、3 张图,作者是 Bayram Ayadi、Florian Geissler 和 Johanna Schmidhuber。场景是月经健康监测:可穿戴设备把几个月的纵向生理记录攒起来,最后要翻成一段患者自己能读懂的叙述。我本来以为又是一篇 RAG 加摘要的组合,读到评估那一节才停下来——它把忠实度和可读性放在同一张表上量,量出来两边是打架的。这篇笔记记的就是这个打架的地方,以及怎么在自己手上的输出里验一遍。

我平时看生成内容的评测,注意力基本都压在「有没有瞎编」上:事实对不对、有没有编出不存在的数值、引用能不能对回证据。这篇提醒我的是另一个失效模式——不确定性被悄悄删掉了。结构化记录里写的是「LH 峰值不明确,样本存在溶血可能,建议下周期复测」,转到患者版叙述里变成「你的激素水平异常」。每个词都不算编造,但那个「可能」和「建议复测」没了,患者拿到的是一句比原始证据更确定的话。这个场景选得挺讲究,它的证据本身就是概率性的(周期长度、峰值、波动范围),不像有些指标有个硬阈值,所以限定词一丢,后果格外明显。

方法拆开看看

先说方法,不说清楚这块,后面那个代价是怎么回事就讲不明白。论文用的是受限生成框架,把结构化证据作为条件,再叠一层基于提示的检索增强,顺序是:

  1. 把纵向记录整理成一条条带出处的证据条目;
  2. 用提示从证据里检索出跟本次摘要相关的那几条,作为上下文喂进去;
  3. 生成阶段加显式接地约束,要求每一句叙述都能落回某条证据。

按这个思路,我自己会搭的骨架大概长这样(这是我的写法,不是论文里的 prompt 原文):

系统: 只能使用下面 evidence 中出现的信息。
     每句输出后用 [E1] [E2] 标注来源。
     evidence 里出现「可能 / 无法排除 / 待复测」的位置,
     输出必须保留同等强度的限定,不得升级为确定结论。
evidence:
  [E1] 周期长度波动 21-45 天,近三个月逐步缩短
  [E2] LH 峰值不明确,样本溶血,建议下周期复测

关键就是第三行那句「不得升级为确定结论」。没有这句,模型会自然往确定的方向收,这是训练目标决定的,读者本来就爱读斩钉截铁的话。加不加这句,大致就是论文里「有显式接地约束」和「没有」的差别。

评估用了三个维度:NLI 衡量的语义对齐、原子事实性指标、可读性指标。三个模型,一共 4500 条摘要。这个量级不算大,但看趋势够了——我关心的是几个维度之间的关系,不是绝对分数。

结果和它另一头的代价

显式接地约束总体上提升了临床对齐,改善最明显的就是不确定性保留:加了约束之后,「可能」「无法排除」这类词确实留下来了。忠实度那边,用检索到的证据去评的时候,约束通常能保持或者提升;至于遗漏,得看具体是哪个模型,没有统一结论。

代价在另一头:临床对齐变好的同时,阅读难度上升,医学术语变多。这个结果我一点都不意外,反倒觉得它不够狠——有一半的「可读性下降」是评估指标自己造出来的。

FKGL / FRE 这类公式算的是音节数、词长、句长。
「无法排除」:四个字、低频词、还带否定结构。
「正常」:两个字、高频词、肯定句。
把前者删掉,分数立刻好看。

所以「可读性提升」里有多少是信息被删掉换来的假提升,取决于你的原文里本来有多少限定词。只拿可读性分数验收一个患者向系统,等于在奖励它把话说满。这一段我是自己拿指标定义推的,没在论文里找到直接证据,说得可能偏,但方向上我觉得成立。

但反过来也不能说术语多就无所谓、接地了就行。如果接地的实现方式是把证据原文整段塞进句子,对齐分数确实好看,患者还是读不懂,等于把翻译这活又推回给读的人。这一点我原来是往反方向想的——之前总觉得接地越强越好,读完这篇有点动摇。接地和通俗不在一条线的两端,是两个都得同时满足的约束,只满足一个的版本看着像成功,其实是没做完。真要解,可能得在约束里明确写「保留限定词的前提下换词」,而不是笼统地说「用患者能懂的语言」。这句我还没想清楚怎么落地,先记下来。

💡 一个不用跑模型就能做的检查:拿一条生成结果,把里面所有表示不确定的词圈出来,跟对应的证据条目对一遍,数少了几个。这个笨办法比跑 NLI 快,也比盯着可读性分数有用。

def check_hedges(summary, evidence):
    hedges = ["可能", "无法排除", "不排除", "建议复测", "待确认"]
    ev_h = {h for h in hedges if h in evidence}
    missing = [h for h in ev_h if h not in summary]
    assert not missing, f"限定词丢失: {missing}"

一个容易踩的坑

最后记一个我觉得最容易踩的坑:别拿 NLI 当唯一的一把尺子。NLI 判的是蕴含关系,证据说「可能异常」、摘要说「异常」,这一向的蕴含其实没断,所以分数不会掉,可限定词已经没了。

我一开始也没想明白这点,是照着那三个评估维度自己过了一遍才反应过来的。要判对齐,得双向看,或者干脆用上面那个圈词的笨办法兜一层——指标好看、关键限定词丢了,这种组合在患者向的摘要里是最坏的一种。

另外评估报告里最好把三个数一起给:忠实度、不确定性保留率、可读性。缺任何一个都能被另一个糊弄过去,单看可读性就是刚才说的假提升,单看忠实度则会把一段念起来像出院小结的东西判成合格。

划重点:第一,测患者向的生成摘要,先测限定词有没有被升级成确定结论,这比测有没有编造更贴近真实伤害;第二,可读性分数下降不一定是坏事,先确认掉下去的那部分是不是被删掉的信息;第三,把忠实度、不确定性保留、可读性三个数一起报,单看一个都会犯错。这篇就记到这里,你可以翻一条自己手上的患者向输出,把不确定词圈一遍试试,如果发现别的坑,回来留言,我补一条。

abanana
abanana

把自己踩过的坑整理成一篇能复现的笔记,写给三个月前的自己看。

查看主页 →