想象你是某集团军机要局的一名新人译电员。每天,前线军医会发来成百上千封“密电”——它们其实就是电子病历,只是写法实在潦草:“患者咳嗽三日,伴发热,胸痛明显,予阿莫西林治疗”。医生们为了抢时间,大量使用缩写、省略和医院内部黑话,标点能省则省,像极了战场上的急电。你的工作,是让一台机器替你看懂这些密电:自动圈出症状、药物、疾病,理清它们之间的关系,甚至给出辅助判断。要做到这一点,光有聪明的算法不够,还需要两本特殊的“密电对照手册”——哈工大构建的学术标准数据集,以及平安智慧医疗整理的真实临床数据集。前者像军事学院的统考题库,后者像前线缴获的实战档案。本文将从这本“破译手册”的编纂、任务、模型到评估,带你完整走一遍中文电子病历 NLP 的入门之路。

岗位关联

掌握中文电子病历 NLP 的核心概念与主流数据集,是从事医疗 AI、临床决策支持系统研发的必备基础,能帮你快速理解领域现状、做出合理的技术选型。

目录
  1. 可视化演示
  2. 病历文本特点
  3. 标注规范设计
  4. 哈工大数据集
  5. 平安数据集
  6. 核心任务定义
  7. 基准模型
  8. 评测指标
  9. 临床落地
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示中文电子病历NER的BIO实体标注、疾病-症状-药物实体关系抽取、以及BERT等模型的F1基准对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

NER标注 BIO标注疾病症状药物 B-D/I-D 逐字符标注中文病历实体

病历文本特点

前线阵地的电报员个个惜字如金。伤员的伤情、用药、病史,往往挤在几十个字里发回来:“患者咳嗽三日,伴发热,胸痛明显,予阿莫西林治疗。”标点能省则省,主语能跳则跳。你若把这封电报原样念给门外汉听,他大概能听懂一半;但若把十封不同医生的电报摆在一起,你会惊讶地发现,连“咳嗽”都有可能被写成“咳”或“咯”。这就是电子病历最真实的样貌。

电子病历(EHR)就是这样的“前线密电”。它由医生在日常诊疗中录入,为了追求速度,大量使用缩写、省略句和科室内部的习惯写法。与新闻、小说这类规范文本截然不同,临床文本天生带着“能懂就行”的随意感。计算机读取规范文本尚需费力,面对这种随意文本更是四处碰壁。正因如此,医疗 NLP 才需要专门的数据集和模型。

具体来看,中文电子病历有四大特点。其一,缩写繁多,比如用“BP“表示血压、用”TIA“表示短暂性脑缺血发作;其二,语法不完整,大量句子没有主语或谓语,甚至只写”右上腹痛“五个字;其三,领域新词层出不穷,新药名、新术式、新检查项目不断出现,通用词典根本追不上;其四,书写不统一,同一症状在不同医生笔下可能呈现为”上感”“感冒”“上呼吸道感染”三种表述,让机器很难对上号。

正因为这些“密电笔迹”如此潦草,才需要后面那两本精心编纂的“对照手册”。哈工大与平安智慧医疗的数据集,正是为了让机器在凌乱的临床文本中“认字”而准备的起步基石。理解了文本之乱,你就理解了数据集为什么是这门技术真正的“粮草”。

标注规范设计

单靠老译电员的脑子,记不住成千上万条暗语。必须把“密语—含义”一条条抄写成册。但抄写也有大学问:什么算密语?“咳”算不算“咳嗽”?“三日”和“3天”要不要统一?两个译电员同时抄一份电文,会不会抄出两个版本?这些问题不解决,手册就会自相矛盾,破译工作也无从谈起。

数据集构建的第一步,就是制定标注规范。所谓标注,就是让有医学背景的人把病历里的实体(如症状、药物、疾病)和关系(如“药物—治疗—疾病”)手工标出来,作为机器学习的标准答案。规范需要回答三件事:实体有哪些类型、边界从哪里到哪里、同一表述有歧义时听谁的。只有规定得足够细,不同标注者才能给出几乎一致的答案。

规范好不好,关键看标注一致性。一个简单实用的衡量指标是一致率,它表示两位标注者在所有标注位置上意见一致的占比:

好的对照手册,从来不是一蹴而就的。它是在多轮“标注—核对—争论—修订”的循环中打磨出来的。哈工大与平安的数据集,本质上也都是这么一页一页“抄写”出来的。当你看到精美的数据卡片时,不妨想想背后那些为一条边界规则争得面红耳赤的标注员——他们才是破译事业真正的奠基人。

A=NagreeNtotal\displaystyle A = \frac{N_{agree}}{N_{total}}
一致率 A 表示两位标注者意见一致的标注位置占全部标注位置的比例,A 越高,说明规范越清晰、数据越可靠。
  1. 一致标注数 \(N_{agree}\)两位标注者对同一文本的标注结果中,实体类型与边界完全相同的数量。
    Nagree∈N\displaystyle N_{agree} \in \mathbb{N}
  2. 总标注数 \(N_{total}\)全部标注位置的总数,包括一致与不一致的部分。
    Ntotal=Nagree+Ndisagree\displaystyle N_{total} = N_{agree} + N_{disagree}

哈工大数据集

哈工大牵头构建的中文电子病历数据集,像是一本印刷精美的军用标准手册。它源于中文医学知识图谱与自然语言处理领域的学术评测任务,核心定位是给研究者提供一个“统一起跑线”。在这本手册里,文本来源、标注体系、任务划分都写得清清楚楚,任何团队都可以用它在同一套题上检验自己的模型。

这个数据集聚焦中文电子病历中的命名实体识别任务,覆盖症状、药物、检查、疾病、手术等核心实体类型。文本取自真实病历的脱敏片段,但经过了严格的筛选和规整——句子相对完整、噪声得到控制、标注经过复核。这种“规整感”是它作为学术基准的底气所在:正因为数据干净,模型之间的性能差异才能真实反映算法本身的优劣。

对于研究者而言,哈工大数据集最大的价值是“可比”二字。无论你用的是传统条件随机场,还是最新的预训练语言模型,只要在同一个评测协议下报告精确率、召回率与 F1 值,别人就能一目了然地判断你的方法到底管不管用。它就像军事学院的统考卷,人人都做同一张卷子,分数自然可以横着比。

当然,标准手册也有它的遗憾——过于规整的数据,与前线真实战况还有距离。真实的电子病历可能长达数千字、夹杂大量口头禅、甚至还有录入错误。这正是下一本“实战档案”——平安智慧医疗数据集——登上舞台的原因。

平安数据集

如果说哈工大的手册是军事学院的统考卷,那么平安智慧医疗整理的数据集,就是从战区直接运回来的实战档案柜。它来自平安合作医院的真实临床电子病历,带着消毒水的气息和急诊室的匆忙——文本更长、噪声更多、书写更随意,却也更贴近真实世界的挑战。

平安数据集最突出的特点是“大”与“真”。规模上,它远超一般学术评测集,足以支撑深度学习模型在海量临床文本上充分训练;真实性上,它保留了原始病历中各种“不完美”的表达:医生随手写的缩写、诊断与主诉之间的跳跃、甚至键盘误触留下的别字。这些噪声对模型是折磨,却也是从实验室走向临床必须跨越的鸿沟。

在任务设计上,平安数据集不局限于实体识别,还涵盖了关系抽取、属性抽取、医疗术语标准化等多类任务。它试图回答的不只是“病历里有什么”,更是“这些信息如何组织成可用的临床知识”。此外,医疗数据涉及患者隐私,构建过程中必须进行严格的脱敏处理,去除姓名、身份证号、联系方式等可识别身份的信息,这也是医疗数据集与通用数据集的一个显著差异。

如果说哈工大数据集教会了模型“做题”,那么平安数据集就是逼着模型“上战场”。一个只在统考卷上拿高分的破译员,未必能在枪林弹雨中准确译报;同样,一个只在规整数据上表现出色的模型,也需要真实病历的洗礼才能真正走向临床应用。

核心任务定义

破译密电绝不是一件轻松的事。机要员要先认出电文里“谁是关键词”,再理清“词与词之间什么关系”,最后还要补充“时间、地点、数量”等细节。对应到电子病历 NLP 上,这三个环节就是命名实体识别、关系抽取和属性抽取——它们是医疗文本结构化这座大厦的三根承重柱。

命名实体识别(NER)是从文本中找出具有特定意义的片段并打上类别标签,比如把“咳嗽”标为症状、“阿莫西林”标为药物、“肺炎”标为疾病。关系抽取则进一步判断实体之间的语义联系,例如“阿莫西林”与“肺炎”之间可能存在“药物治疗疾病”的关系。属性抽取负责补充描述性信息,如症状发生的时间、用药的剂量和频次。

从数学上看,命名实体识别通常被建模为序列标注问题:把一段文本看成由字或词组成的序列,模型为每个位置预测一个标签。条件随机场(CRF)是其中非常经典的解法,它直接在标签序列层面建模,数学形式如下:

从“找出关键词”到“理清关系”再到“补全细节”,每一步都在把零散的密电符号变成结构化的军事情报。哈工大与平安的数据集,正是用来训练和检验这些破译任务的“练兵场”。当你看到模型准确地把“阿莫西林”识别为药物时,请记住,这只是整条破译流水线的第一道工序。

P(Y∣X)=1Z(X)exp⁡(∑t=1T∑k=1Kλkfk(yt−1,yt,X,t))\displaystyle P(Y|X) = \frac{1}{Z(X)} \exp\left(\sum_{t=1}^{T}\sum_{k=1}^{K}\lambda_k f_k(y_{t-1}, y_t, X, t)\right)
这个公式表示:给定输入词序列 X,模型输出标签序列 Y 的概率等于所有特征打分之和的指数除以归一化因子。它本质上是在“全局”层面评估一整条标签路径的好坏,而不是孤立地看每个词。
  1. 输入序列 \(X\)由 T 个字或词组成的病历文本,例如“患者咳嗽三日”。
    X=(x1,x2,…,xT)\displaystyle X = (x_1, x_2, \dots, x_T)
  2. 输出标签序列 \(Y\)与 X 等长的标签序列,每个标签表示对应位置的实体类别。
    Y=(y1,y2,…,yT),yt∈{B-症状,I-症状,O,… }\displaystyle Y = (y_1, y_2, \dots, y_T), \quad y_t \in \{ B\text{-症状}, I\text{-症状}, O, \dots \}
  3. 特征函数 \(f_k\)描述“前一个标签、当前标签、输入文本、当前位置”之间关系的规则,例如“当前词是'咳嗽'且标签是 B-症状”。
    fk(yt−1,yt,X,t)∈{0,1}\displaystyle f_k(y_{t-1}, y_t, X, t) \in \{0, 1\}
  4. 权重 \(\lambda_k\)每个特征的权重,训练过程就是学习这些权重,让正确的标签序列获得更高的分数。
    λk∈R\displaystyle \lambda_k \in \mathbb{R}
  5. 归一化因子 \(Z(X)\)对输入 X 所有可能的标签序列求和,把分数转换成真正的概率。
    Z(X)=∑Yexp⁡(∑t=1T∑k=1Kλkfk(yt−1,yt,X,t))\displaystyle Z(X) = \sum_{Y} \exp\left(\sum_{t=1}^{T}\sum_{k=1}^{K}\lambda_k f_k(y_{t-1}, y_t, X, t)\right)

基准模型

早期破译靠老译电员的死记硬背——看到“阿莫西林”就认出是药,看到“咳嗽”就标成症状。这种基于词典和规则的模型简单透明,却被新词、缩写和书写变体打得毫无还手之力。于是,机要局开始装备新型“破译机器”:基于统计机器学习的序列标注模型。

在深度学习时代,BiLSTM-CRF 一度是电子病历实体识别的标杆模型。BiLSTM(双向长短期记忆网络)像一位前后文通吃的译电员——它不仅看当前词,还同时看这个词左边和右边各发生了什么;CRF 则像一位语法审查官,确保整条标签序列符合规范,比如“B-症状”后面不能接“O“再接”I-症状”。

双向编码的数学表达可以写成:

到了预训练语言模型时代,“破译机器”又换了一代。BERT 及其医学领域变体通过在海量医学文本上预训练,学会了丰富的语言知识和医学常识,只需要在哈工大或平安的数据集上微调,就能大幅刷新此前的纪录。不过,更强的模型也意味着更高的算力需求——这就像最先进的密码破译机,性能虽好,却不是每间机房都放得下。模型选型,本质上是在精度、速度和算力之间做权衡。

ht=[LSTM→(xt,ht−1),LSTM←(xt,ht+1′)]\displaystyle h_t = \left[ \overrightarrow{LSTM}(x_t, h_{t-1}), \overleftarrow{LSTM}(x_t, h_{t+1}') \right]
这里 \(h_t\) 是第 t 个位置的上下文表示,由前向和后向两个 LSTM 在 t 时刻的隐状态拼接而成,相当于把“左边的语境”和“右边的语境”缝在了一起。
  1. 前向隐状态 \(\overrightarrow{LSTM}(x_t, h_{t-1})\)从左往右读文本时,模型在第 t 个位置记住的历史信息。
    h→t=LSTM(xt,h→t−1)\displaystyle \overrightarrow{h}_t = LSTM(x_t, \overrightarrow{h}_{t-1})
  2. 后向隐状态 \(\overleftarrow{LSTM}(x_t, h_{t+1}')\)从右往左读文本时,模型在第 t 个位置“预见”的未来信息。
    h←t=LSTM(xt,h←t+1)\displaystyle \overleftarrow{h}_t = LSTM(x_t, \overleftarrow{h}_{t+1})
  3. 拼接操作 \([\cdot, \cdot]\)把前向与后向两个向量首尾相连,得到融合双向信息的完整表示,让“咳嗽”既知道自己左边有“患者”,也知道右边跟着“三日”。
    ht=[h→t;h←t]\displaystyle h_t = [\overrightarrow{h}_t; \overleftarrow{h}_t]

评测指标

破译员训练得怎么样?考试见分晓。机要局的考核不是简单看“答对多少题”,而是看两件事:报告的内容里有多少是真情报,真情报里又抓回了多少。这两件事在机器学习里分别叫精确率和召回率——一个防“报错”,一个防“漏报”。

精确率(Precision)衡量模型预测出的实体中正确的那部分比例。如果模型标了 10 个实体,其中 8 个是对的,精确率就是 0.8。召回率(Recall)衡量真实存在的实体中被模型找回来的比例。如果文本里共有 10 个实体,模型只找到 6 个,召回率就是 0.6。理想情况当然希望两者都高,但它们往往此消彼长——标得越多越容易误报,标得越少越容易漏掉。

为了综合衡量,业界最常用 F1 值,它是精确率和召回率的调和平均:

除了 P、R、F1 这三个主指标,评测中还常区分“严格匹配”和“宽松匹配”。严格匹配要求实体边界和类型完全一致才算对,宽松匹配则允许边界部分重叠也算对。前者更苛刻,后者更宽容——好比破译电文时,把“右侧胸痛”译成“胸痛”到底算不算对?严格派说不算,宽松派说算。比赛用哪种口径,直接决定了榜单上谁高谁低。

F1=2×P×RP+R\displaystyle F1 = \frac{2 \times P \times R}{P + R}
F1 值把“有多准”和“有多全”压缩成一个分数,是医疗 NLP 论文和评测中最常汇报的“破译成绩单”。
  1. 精确率 \(P\)预测为正例的样本中真正是正例的比例,反映模型“报出去的情报可靠性”。
    P=TPTP+FP\displaystyle P = \frac{TP}{TP + FP}
  2. 召回率 \(R\)真实正例中被模型找回来的比例,反映模型“抓回情报的完整度”。
    R=TPTP+FN\displaystyle R = \frac{TP}{TP + FN}
  3. 分子 \(2 \times P \times R\)通过相乘同时惩罚偏科——精确率或召回率任何一方太低都会拉低整个分数。
    2×P×R\displaystyle 2 \times P \times R
  4. 分母 \(P + R\)对两者求和,配合分子实现调和平均的效果,保证 F1 介于 0 和 1 之间。
    P+R\displaystyle P + R

临床落地

破译机终于走下训练场,被送进了真正的战地医院。在辅助诊断场景中,模型自动从病历里提取主诉、症状、用药等结构化信息,帮医生在几秒内生成病情摘要,减少重复性劳动;在病历质控场景中,系统检查病历是否漏写了关键项,比如手术记录里有没有术后评估,帮助医院提升写病历的规范性;在科研场景中,研究者想要统计近三年某药物的不良反应,再也不必逐份翻病历,模型几小时就能从海量文本中筛出线索。

然而,从数据集到病床,中间还有不少泥泞路。真实病历的噪声远比赛题大,各医院的书写风格千差万别——在 A 医院训练得很好的模型,换到 B 医院可能立刻水土不服。隐私法规要求数据不能随便出医院,模型常常只能“派到前线就地学习”。此外,临床决策事关人命,模型不能只给一个答案,还要解释为什么这么判断,这给可解释性研究提出了很高要求。

面对这些挑战,哈工大与平安数据集的价值不仅在于当下的成绩单,更在于它们树立了医疗 NLP 的“基础设施”标杆。未来的方向,是让模型在更多真实场景中持续学习、在保护隐私的前提下协同训练、在辅助医生而非取代医生的定位上越走越稳。

破译密电的终极目标,从来不是把电文漂亮地抄在纸上,而是让情报真正服务于战争。同样,电子病历 NLP 的终极目标,是让每一份潦草的密电,都能转化为守护患者生命安全的行动。从一本对照手册到一间智慧病房,这条路刚刚开始。

AI 应用场景

临床辅助诊断的病历结构化

阶段:模型推理与决策支持

解决的问题:传统方式下,医生每天要花大量时间阅读和整理病历,患者的完整病史散落在长段非结构化文本中,关键信息(用药史、过敏史、既往诊断)容易遗漏。基于电子病历 NLP 的实体识别与关系抽取模型,可以把自由文本自动转化为结构化摘要,让医生在几秒内掌握患者核心情况。

具体案例:某三甲医院在急诊科部署病历结构化系统。患者入院后,系统自动提取主诉“胸痛三日”、既往史“高血压三年”、当前用药“硝苯地平”等关键实体,并生成一页纸摘要。急诊医生无需翻完整个电子病历,就能快速做出分诊决策。

药物不良反应自动监测

阶段:数据挖掘与模式发现

解决的问题:药物不良反应往往散落在病历甚至出院小结的寥寥数语中,靠人工上报效率极低、漏报率高。利用关系抽取技术,可以从海量病历中自动挖掘“药物—导致—不良反应”的关联,为药监局和医院提供早期预警信号。

具体案例:某药企利用平安智慧医疗数据集预训练的关系抽取模型,对十万份电子病历进行扫描,发现某新型抗生素与“皮疹”存在统计显著关联,触发风险预警后进一步开展临床复核,最终在药品说明书中补充了该不良反应。

病历质量智能管控

阶段:规则引擎与模型评估

解决的问题:病历书写质量直接影响医疗纠纷判定和医保支付。传统质控依赖人工抽查,覆盖面不足。NLP 质控系统可以全量检查每份病历,识别缺项、前后矛盾、术语不规范等问题,并把“问题切片”推送给质控专员确认。

具体案例:某医疗集团在旗下 20 家医院上线病历质控系统,系统对出院小结进行完整性检查,自动标记“缺少出院医嘱”“手术记录无术后评估”等缺陷。上线三个月后,病历甲级率从 82% 提升到 96%。

Python 演示

python56 行
# -*- coding: utf-8 -*-"""基于词典匹配的中文电子病历实体识别演示""" SYMPTOM_DICT = ['咳嗽', '发热', '头痛', '恶心', '呕吐', '胸痛', '腹痛', '乏力']DRUG_DICT = ['阿莫西林', '布洛芬', '奥司他韦', '二甲双胍', '硝苯地平']DISEASE_DICT = ['肺炎', '高血压', '糖尿病', '胃炎', '冠心病']TIME_DICT = ['三日', '五天', '一周', '两周', '一个月']  def match_terms(text, terms):    """在文本中查找词典词, 返回去重后的命中词列表"""    found = []    for term in terms:        if term in text:            found.append(term)    return found  def extract_entities(text):    """按实体类型抽取电子病历中的实体"""    entities = []    entities.extend([('症状', w) for w in match_terms(text, SYMPTOM_DICT)])    entities.extend([('药物', w) for w in match_terms(text, DRUG_DICT)])    entities.extend([('疾病', w) for w in match_terms(text, DISEASE_DICT)])    entities.extend([('时间', w) for w in match_terms(text, TIME_DICT)])    return entities  def compute_f1(gold, pred):    """计算精确率, 召回率与F1值"""    g = set(gold)    pset = set(pred)    tp = len(g & pset)    fp = len(pset - g)    fn = len(g - pset)    p = tp / (tp + fp) if (tp + fp) else 0.0    r = tp / (tp + fn) if (tp + fn) else 0.0    f1 = 2 * p * r / (p + r) if (p + r) else 0.0    return p, r, f1  def main():    text = '患者咳嗽三日, 伴发热, 胸痛明显, 予阿莫西林治疗.'    print('病历原文:', text)    pred = extract_entities(text)    print('识别结果:')    for etype, term in pred:        print('  [%s] %s' % (etype, term))    gold = [('症状', '咳嗽'), ('时间', '三日'), ('症状', '发热'),            ('症状', '胸痛'), ('药物', '阿莫西林')]    p, r, f1 = compute_f1(gold, pred)    print('P=%.2f R=%.2f F1=%.2f' % (p, r, f1))  if __name__ == '__main__':    main()
目的:用词典匹配的朴素方法实现中文电子病历实体识别,并展示精确率、召回率与 F1 值如何计算,帮助理解正文中的评测指标。
  1. match_terms(text, terms)在病历文本中逐个查找词典词,命中就记下来,这是最朴素的“规则基线”。
  2. entities.extend([('症状', w) for w in match_terms(text, SYMPTOM_DICT)])把命中词连同实体类型一起打包成元组,方便与标准答案比较。
  3. g = set(gold)把标准答案转成集合,集合天然去重,也能高效计算交集。
  4. tp = len(g & pset)用集合交集算出“预测对的正例数”,这是精确率和召回率的共同基石。
  5. p = tp / (tp + fp) if (tp + fp) else 0.0三目运算防止分母为零导致程序崩溃。
  6. if __name__ == '__main__':保证代码既可作为模块导入,也能直接运行演示。

常见误区

误区既然平安数据集比哈工大数据集大得多,那肯定是越大越好,直接用大的那个训练就完事了。标注质量、任务匹配度这些都不重要。

正解数据规模只是其中一个因素。哈工大数据集虽然小,但标注规范、边界清晰,特别适合做算法对比和入门验证;平安数据集更真实,但噪声也更大。如果任务目标是发表对比实验,用哈工大;如果目标是落地真实临床,用平安。选数据集的标准不是大小,而是“是否匹配你的任务场景”,就像训练破译员,统考题库和实战档案各有各的用途,缺一不可。

为何常见:人们习惯直觉地认为“数据越多,AI 越聪明”,却忽略了数据质量和任务适配性。这种思维在网络通用语料上或许成立,在高度专业的医疗领域却常常翻车。

误区都是中文文本,把通用 BERT 拉过来微调一下不就行了?病历再特殊,本质也是句子。

正解电子病历的缩写、省略和书写变体远超通用语料,通用模型在新闻、百科上学到的语言习惯,面对“患者咳嗽三日”这种电报式文本往往水土不服。医疗领域需要专门的预训练模型和针对性标注数据,这也是哈工大、平安数据集存在的根本原因。通用模型更像受过通识教育的大学生,而病历 NLP 需要的是听懂前线黑话的“老兵”。

为何常见:通用 NLP 的成功让很多人低估了领域差异,只有真正处理过病历文本的人才懂得“能懂就行”这四个字的水有多深。

误区标注一致率超过 95% 就说明数据质量没问题,可以放心拿去训练。

正解一致性高只是必要不充分条件。如果规范本身定错了(比如把“症状”和“疾病”的定义搞混),两位标注者会“错得一致”,一致率依然很高,但数据是系统性错误的。真正的质量控制,除了看一致性,还要由资深医学专家定期抽检、与外部标准对照、并持续修订标注规范。一致性检查只是体检,专家抽检才是会诊。

为何常见:量化指标总是比定性判断看着更令人安心,但量化本身掩盖不了规范设计缺陷——这就像一场考试大家分数都很高,却不能证明试卷没有出偏题。

误区模型 F1 才 90%,错误那么多,根本不敢给医生用,还是等技术成熟再说。

正解临床上对 NLP 的需求是“辅助”而非“替代”。90% 的 F1 意味着系统能自动完成绝大多数病历的信息抽取,把医生从重复劳动中解放出来,医生只需复核少数低置信度样本即可。而且,实际部署时可以通过阈值调整、人工复核流程设计来弥补模型的不足。追求 100% 准确率会让系统永远走不出实验室,合理的做法是设计“人机协作”的容错流程。

为何常见:对医疗领域人命关天的敬畏让人本能地追求完美指标,却忽略了 AI 产品的价值在于“整体效率提升”而非“零错误”。

面试题

Q1. 电子病历文本最典型的特点是?

单选题 · easy

  • A.书写规范完整
  • B.缩写多语法不全← 正确答案
  • C.全部使用英文
  • D.不包含数字信息

答案:B。电子病历是医生为节省时间写出的“前线密电”,充满缩写、省略句和习惯性写法,语法不完整是常态。选项 A 恰好相反,C、D 与实际不符,故选 B。

Q2. 中文电子病历命名实体识别的主要目标是?

单选题 · easy

  • A.判断患者情绪
  • B.生成就诊摘要
  • C.识别症状药物等实体← 正确答案
  • D.翻译医学术语

答案:C。命名实体识别的核心是从非结构化文本中找出症状、药物、疾病等实体并分类,是病历结构化的第一步。A、B、D 分别属于情感分析、文本生成和机器翻译任务,均不属于 NER。

Q3. 精确率(Precision)的计算公式是?

单选题 · mid

  • A.TP除以TP加FP← 正确答案
  • B.TP除以TP加FN
  • C.TP除以TN加FP
  • D.FP除以FP加FN

答案:A。精确率 = TP / (TP + FP),它衡量“预测为正例的结果中真正是正例的比例”,也就是破译员报出去的情报有多少是可靠的。B 是召回率,C、D 不是标准定义,故选 A。

Q4. 哈工大数据集在中文电子病历 NLP 中的主要用途是?

单选题 · mid

  • A.英文医学论文分类
  • B.医学图像病灶分割
  • C.药物分子结构预测
  • D.中文病历实体识别评测← 正确答案

答案:D。哈工大数据集源于学术评测,聚焦中文电子病历的命名实体识别任务,让所有研究者在同一套标准数据上对比模型性能。A、B、C 分别属于文本分类、图像分割和药物计算领域,与本数据集无关。

Q5. 平安智慧医疗数据集相比哈工大数据集的最大特点是?

单选题 · mid

  • A.来源真实临床规模更大← 正确答案
  • B.完全公开且完全免费
  • C.仅包含英文病历数据
  • D.只含影像不含文本

答案:A。平安数据集来自合作医院的真实电子病历,规模庞大且更贴近实战环境,同时做了严格的隐私脱敏。B 说法不准确,C、D 与事实相反,故选 A。

Q6. 中文电子病历实体识别中常见的实体类型包括哪些?

多选题 · hard

  • A.症状与体征实体← 正确答案
  • B.药物与检查实体← 正确答案
  • C.疾病与诊断实体← 正确答案
  • D.股票与基金实体

答案:ABC。电子病历标注规范中常见的实体类型包括症状体征、药物、检查项目、疾病诊断、手术操作等,这些是辅助诊疗的核心要素。D“股票与基金”属于金融领域,与医疗完全无关,故不选。

Q7. 条件随机场(CRF)在序列标注任务中的作用是?

单选题 · mid

  • A.压缩模型减少参数
  • B.增强训练数据规模
  • C.降低输入特征维度
  • D.约束标签之间转移← 正确答案

答案:D。CRF 通过在标签序列层面建模转移特征,学习“什么样的标签组合是合理的”,比如“B-症状”后面通常跟“I-症状”而不是"O"。A、B、C 描述的分别是模型压缩、数据增强和降维,与 CRF 的核心功能无关。

Q8. 评测电子病历实体识别系统时常用的指标包括?

多选题 · easy

  • A.精确率指标← 正确答案
  • B.召回率指标← 正确答案
  • C.F1综合指标← 正确答案
  • D.网络延迟指标

答案:ABC。精确率、召回率和 F1 值共同构成 NER 系统的“破译成绩单”,F1 是二者的调和平均。D“网络延迟”属于系统性能指标,不在模型效果评估的标准范围内,故不选。

Q9. 在 CCKS 评测数据上表现优异的模型,直接迁移到另一家医院的病历上性能常明显下降,最可能的原因是?

单选题 · extreme

  • A.模型训练速度过慢
  • B.临床文本领域差异大← 正确答案
  • C.模型部署成本过高
  • D.参数规模仍然太小

答案:B。不同医院、不同科室的医生书写习惯差异极大,评测数据的“规整感”与实际病历的“野战感”之间存在明显鸿沟,这种现象称为领域漂移。A、C、D 均与迁移后的性能下降没有直接因果,故选 B。

Q10. 两家医院的电子病历数据需要联合训练一个实体识别模型,但受限于隐私法规数据不能外传,以下哪项描述最符合数据脱敏的作用?

单选题 · hard

  • A.模型训练数据过少
  • B.医院间书写风格差异大← 正确答案
  • C.评测数据没有标注
  • D.推理速度仍然太慢

答案:B。这道题考的是对“脱敏”在医疗数据协作中作用的理解。严格脱敏能去除姓名、身份证号等身份标识,使数据在合规前提下被共享和联合建模,从而缓解单院数据不足。选项 A 是脱敏要解决的挑战而非作用,C、D 与脱敏无关。本题重在理解隐私保护与数据利用之间的平衡。