news 2026/2/26 21:06:14

SiameseUIE在制药行业落地:药品说明书里成分、适应症、禁忌、不良反应抽取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SiameseUIE在制药行业落地:药品说明书里成分、适应症、禁忌、不良反应抽取

SiameseUIE在制药行业落地:药品说明书里成分、适应症、禁忌、不良反应抽取

药品说明书是临床用药最权威的信息来源,但其文本结构复杂、术语密集、句式多变——人工提取关键信息耗时费力,还容易遗漏或误判。比如一份2000字的说明书里,“阿司匹林肠溶片”的【成分】可能藏在段落中间,“【禁忌】对本品过敏者禁用”和“【不良反应】偶见胃肠道不适”又分散在不同章节。传统正则或规则系统面对同义表达(如“禁用”“不得使用”“严禁服用”)、嵌套描述(如“肝肾功能不全者慎用,尤其老年患者”)时频频失效。

SiameseUIE中文-base模型的出现,让这件事有了新解法:它不依赖预定义标签体系,也不需要标注数据,只需用自然语言写清楚“你要找什么”,就能从任意药品说明书中精准定位并抽取出成分、适应症、禁忌、不良反应等结构化字段。这不是简单的关键词匹配,而是真正理解语义后的片段定位——就像一位熟悉药学语言的老药师,快速扫一眼说明书,就准确圈出所有关键信息。

这背后不是黑箱魔法,而是一套清晰可解释的技术路径:以提示(Prompt)为指令、以文本为上下文、以指针网络为“标尺”,直接在原文中划出起止位置。它把命名实体识别、关系抽取、事件要素提取等任务,统一成“给定问题,在原文中找答案片段”这一件事。对制药企业来说,这意味着说明书解析不再卡在数据标注瓶颈上,也无需为每种新药重写规则;对AI工程师而言,它把复杂的NLP任务,简化成了“写好一句话+传入一段文字”的轻量操作。


1. 为什么药品说明书抽取特别难?

药品说明书不是普通文档。它有四个典型难点,恰好是传统方法的“死穴”。

1.1 术语高度专业,表达方式极不统一

同一概念在不同说明书里写法千差万别:

  • 成分:可能叫“主要成分”“活性成分”“含……”“每片含……”“本品由……组成”
  • 适应症:可能表述为“适用于”“用于治疗”“可用于缓解”“推荐用于……患者”
  • 禁忌:有“禁用”“禁止使用”“不得用于”“严禁与……合用”“XX情况下应避免使用”
  • 不良反应:常见“偶见”“罕见”“常见”“可能发生”“报告过……症状”

正则表达式很难覆盖所有变体,而微调模型又面临标注成本高、泛化性差的问题——一个在降压药说明书上训练好的NER模型,换到抗肿瘤药上准确率可能断崖下跌。

1.2 信息高度嵌套,逻辑关系隐含在长句中

看这个真实案例(某抗凝药说明书节选):

“本品禁用于严重肝功能不全(Child-Pugh C级)患者;对于中度肝功能不全(Child-Pugh B级)患者,应谨慎使用,并密切监测INR值;轻度肝功能不全(Child-Pugh A级)患者无需调整剂量。”

这里同时包含:

  • 禁忌主体(严重肝功能不全患者)
  • 禁忌条件(Child-Pugh C级)
  • 慎用主体(中度肝功能不全患者)
  • 慎用条件(Child-Pugh B级)
  • 监测要求(监测INR值)
  • 免调剂量主体(轻度肝功能不全患者)

传统方法要么把整句当禁忌,要么漏掉“慎用”这个关键分层逻辑。而SiameseUIE能通过设计不同的Prompt,分别精准定位每一类信息及其修饰条件。

1.3 结构松散,关键信息不按固定顺序出现

有的说明书把【不良反应】放在【禁忌】前面,有的穿插在【注意事项】里;有的【成分】列在开头,有的藏在【药理毒理】末尾。没有强制模板,意味着基于位置或章节标题的抽取策略大概率失效。

1.4 中文长距离依赖强,指代关系复杂

例如:“本品为白色片剂。口服后迅速吸收,30分钟内达峰浓度。常见不良反应包括头痛、恶心,其中头痛发生率约为15%。”
这里的“本品”“其”“其中”都指向主语,但跨度长达三句话。BERT类模型虽能建模长程依赖,但标准NER输出的是扁平标签序列,无法天然表达“头痛”属于“不良反应”这一层级关系。

SiameseUIE的指针网络架构,恰恰绕开了这些陷阱——它不预测每个字的标签,而是直接学习“从第X字到第Y字”这段原文,就是你要找的【不良反应】。指代消解、语义聚合、关系绑定,都在一次前向推理中完成。


2. SiameseUIE如何专治说明书抽取难题?

SiameseUIE不是为制药行业特制的模型,但它天生适配说明书场景。它的核心能力,正好切中前述四大痛点。

2.1 提示即指令:用自然语言定义你要什么

不需要懂NER标签体系,不用写正则,只要像跟人提需求一样写清楚:

{"成分": null} {"适应症": null} {"禁忌": null} {"不良反应": null}

这就是Schema。null不是占位符,而是告诉模型:“我要找的是‘成分’这个概念在原文中的具体文字片段,不是分类标签”。模型会自动将“每片含阿司匹林100mg”“本品主要成分为布洛芬”“活性物质:盐酸二甲双胍”全部识别为【成分】的值。

更进一步,你可以细化约束:

{"禁忌": {"人群": null, "条件": null}}

模型就会分别抽出“严重肝功能不全患者”(人群)和“Child-Pugh C级”(条件),而不是把整句打包返回。

2.2 指针网络:在原文中“画框”,不丢失上下文

传统NER输出是类似这样的序列:

[O, O, B-成分, I-成分, I-成分, O, ...]

而SiameseUIE的输出是:

{"成分": [{"text": "每片含阿司匹林100mg", "start": 12, "end": 28}]}

startend是字符级位置,确保抽取出的片段100%来自原文,零幻觉、零改写。这对药品信息至关重要——“100mg”不能变成“约100毫克”,“Child-Pugh C级”不能简化为“重度肝损”。

2.3 双流编码器:速度与精度兼顾

模型采用StructBERT双塔结构:一个编码器处理Prompt(如{"适应症": null}),另一个编码器处理说明书全文。两者交互后,只对Prompt相关的文本区域做精细计算。相比单塔模型遍历全文计算,推理速度提升30%,实测在A10显卡上,单次抽取平均耗时<800ms(文本≤300字),满足批量处理需求。

2.4 零样本泛化:一套模型,通吃所有药品

我们用未见过的说明书测试:

  • 抗生素说明书 → 准确抽取出【适应症:敏感菌所致呼吸道感染】、【禁忌:对本品及青霉素类过敏者】
  • 中成药说明书 → 识别出【成分:黄芪、党参、白术】、【不良反应:偶见口干、便秘】
  • 生物制剂说明书 → 定位【禁忌:活动性结核病患者禁用】、【注意事项:用药前需筛查结核】

无需任何微调,F1值稳定在89.2%~92.7%(人工校验100份说明书)。这是因为模型在预训练阶段已见过海量医药文献,对“适应症”“禁忌”等概念的语义边界已有深刻理解。


3. 在制药场景中落地:四步完成说明书结构化

部署不是目的,用起来解决问题才是。以下是我们实际在药企知识库建设中验证过的四步法,全程无需修改代码,仅靠调整Prompt和输入即可。

3.1 第一步:定义制药专用Schema

不要照搬通用Schema。针对说明书特点,我们优化了四类核心字段:

{ "成分": {"化学名": null, "商品名": null, "含量": null}, "适应症": {"疾病名称": null, "适用人群": null, "使用场景": null}, "禁忌": {"绝对禁忌": null, "相对禁忌": null, "禁忌组合": null}, "不良反应": {"常见": null, "罕见": null, "严重": null} }

这个Schema既保留了灵活性(null允许模型自由匹配),又引导了结构化方向(区分“常见/罕见/严重”)。实测比扁平Schema提升12.3%的字段完整率。

3.2 第二步:预处理说明书文本

说明书常含页眉页脚、表格、图标等干扰项。我们采用轻量规则清洗:

  • 删除所有页码(如“第1页/共5页”)
  • 合并被换行切断的长句(如“用于治疗高血” + “压” → “用于治疗高血压”)
  • 将表格内容转为自然语言描述(如将“| 不良反应 | 发生率 |” 表格转为“不良反应包括头痛(发生率15%)、恶心(发生率8%)”)

注意:不删除任何医学内容,只清理格式噪声。清洗后文本控制在300字内,符合模型最佳输入长度。

3.3 第三步:调用服务抽取(附可运行代码)

启动服务后,用Python脚本批量调用Gradio API:

import requests import json def extract_from_leaflet(text: str, schema: dict) -> dict: url = "http://localhost:7860/run" payload = { "data": [ text, json.dumps(schema, ensure_ascii=False) ] } response = requests.post(url, json=payload) result = response.json() # 解析Gradio返回的嵌套结构 extracted = json.loads(result["data"][0]) return extracted # 示例:抽取某降脂药说明书片段 text = "本品主要成分为阿托伐他汀钙。适用于原发性高胆固醇血症和混合型高脂血症。禁用于活动性肝病患者及不明原因的血清转氨酶持续升高者。常见不良反应为头痛、肌痛、腹痛。" schema = { "成分": {"化学名": null}, "适应症": {"疾病名称": null}, "禁忌": {"绝对禁忌": null}, "不良反应": {"常见": null} } result = extract_from_leaflet(text, schema) print(json.dumps(result, indent=2, ensure_ascii=False))

输出结果(已格式化):

{ "成分": [ { "text": "阿托伐他汀钙", "start": 12, "end": 18 } ], "适应症": [ { "text": "原发性高胆固醇血症和混合型高脂血症", "start": 25, "end": 52 } ], "禁忌": [ { "text": "活动性肝病患者及不明原因的血清转氨酶持续升高者", "start": 59, "end": 102 } ], "不良反应": [ { "text": "头痛、肌痛、腹痛", "start": 110, "end": 124 } ] }

3.4 第四步:后处理与质量校验

抽取结果需两道校验:

  • 完整性校验:检查是否所有Schema字段都有返回。若某字段为空,不是模型失败,而是原文未提及(如某药说明书未写明“罕见不良反应”,则"罕见": null是合理结果)。
  • 医学一致性校验:用规则过滤明显错误。例如:
    • 成分中出现“每日一次”“口服”等非成分词 → 舍弃
    • 禁忌中出现“建议”“可以”等非禁止性动词 → 警告人工复核
    • 不良反应中出现“疗效显著”“治愈率高”等疗效描述 → 清除

我们封装了一个PharmaValidator类,内置27条医药领域校验规则,将人工复核工作量降低76%。


4. 实际效果对比:比传统方法快多少?准多少?

我们在某TOP5药企的真实项目中做了AB测试,对比三种方案处理1000份说明书(平均长度1850字,经清洗后取关键段落320字):

方案单文档处理时间【成分】准确率【禁忌】召回率人工复核率部署复杂度
正则+人工规则42秒73.1%65.8%89%低(但维护成本高)
微调BERT-NER18秒86.4%82.3%41%高(需标注500+样本)
SiameseUIE(本文方案)6.2秒91.7%93.5%12%极低(开箱即用)

关键发现:

  • 速度优势:SiameseUIE比微调方案快近3倍,主要得益于双流架构和零样本特性,省去了模型加载、分词、标签映射等冗余步骤。
  • 质量跃升:在【禁忌】这类高风险字段上,召回率高达93.5%,意味着几乎不会漏掉任何一条禁忌信息——这对药品安全至关重要。
  • 人力节省:人工复核率从89%降至12%,意味着90%以上的抽取结果可直接入库,知识库构建效率提升5倍以上。

更值得强调的是稳定性:当新增一款生物类似药说明书时,正则方案需更新17条规则,微调方案需补充标注并重新训练,而SiameseUIE只需提交新文本+原有Schema,5分钟内完成首条抽取。


5. 常见问题与避坑指南

在落地过程中,我们踩过一些典型的“坑”,整理成这份实战指南,帮你绕过弯路。

5.1 输入文本超长怎么办?

模型建议≤300字,但说明书关键信息常分散。不要截断!正确做法是:

  • 按语义块切分:将说明书按【成分】【适应症】【禁忌】【不良反应】等小节分别抽取
  • 对长段落做摘要:用LLM(如Qwen)先生成300字内摘要,再送入SiameseUIE
  • 避免跨段落合并:如把【成分】和【药理作用】强行拼接,会混淆模型对“成分”的语义理解

5.2 Schema写错导致无结果?三步排查

  1. JSON语法检查:用在线工具验证,确保无逗号遗漏、引号闭合
  2. 键名大小写敏感"成分""成分 "(末尾空格)≠"成份"(错别字)
  3. 避免过度嵌套{"禁忌": {"人群": {"年龄": null}}}过深,模型更擅长{"禁忌": {"人群": null, "条件": null}}

5.3 抽取结果有偏差?优先调Schema,而非改模型

遇到“把【注意事项】误抽为【禁忌】”,不是模型不准,而是Prompt不够精准。试试:

  • {"禁忌": null}改为{"禁忌": "明确禁止使用的条件或人群"}
  • 加入否定词提示:{"禁忌": "含‘禁用’‘禁止’‘严禁’等强禁止性表述的内容"}
  • 用对比式Prompt:{"禁忌": "与‘慎用’‘注意’‘建议’等弱提示词区分的强禁止内容"}

实测87%的“误抽”问题,通过优化Prompt即可解决,无需碰模型参数。

5.4 如何集成到现有系统?

我们提供两种轻量集成方式:

  • API模式:直接调用Gradio HTTP接口(如上文Python示例),适合已有后端服务的企业
  • 本地库模式:导出app.py核心逻辑为独立Python模块,去掉Gradio依赖,直接from siamese_uie import extract调用,内存占用降低40%

6. 总结:让药品说明书从“文档”变成“知识”

SiameseUIE在制药行业的价值,远不止于“快一点、准一点”。它正在改变药品信息的流转方式:

  • 对研发部门:新药申报材料中,说明书关键信息可自动生成结构化表格,缩短注册周期;
  • 对医学事务部:实时监控竞品说明书更新,自动比对【适应症】扩展、【禁忌】新增,支撑市场策略;
  • 对客服中心:将说明书结构化后接入对话机器人,患者问“我有高血压能吃这个吗?”,系统直接定位【禁忌】和【注意事项】字段作答;
  • 对知识图谱团队:抽取结果天然构成(药品-成分-适应症-禁忌)三元组,一键导入Neo4j。

这一切的前提,是放弃“必须标注、必须微调、必须定制”的旧思维。SiameseUIE证明:一个理解中文语义本质的模型,配合恰到好处的Prompt设计,就能成为制药行业信息处理的“通用扳手”。

你不需要成为NLP专家,只需要想清楚——下一份说明书里,你最想立刻拿到哪几个字段?然后,写下来,交给模型。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 12:56:54

MGeo多卡GPU部署尝试:分布式推理是否必要?实测告诉你

MGeo多卡GPU部署尝试&#xff1a;分布式推理是否必要&#xff1f;实测告诉你 1. 为什么地址匹配需要MGeo&#xff1f;一个被低估的现实痛点 你有没有遇到过这样的情况&#xff1a;电商后台导出的收货地址五花八门——“北京市朝阳区建国路8号SOHO现代城A座”、“北京朝阳建国…

作者头像 李华
网站建设 2026/2/26 17:40:22

DCT-Net卡通化模型惊艳案例:毕业照集体转二次元纪念册生成

DCT-Net卡通化模型惊艳案例&#xff1a;毕业照集体转二次元纪念册生成 你有没有想过&#xff0c;把班级毕业合影一键变成手绘风动漫海报&#xff1f;不是简单加滤镜&#xff0c;而是让每个人物都拥有独立线条、柔和阴影和日系配色的专属二次元形象——头发丝有质感&#xff0c…

作者头像 李华
网站建设 2026/1/30 14:16:58

Windows APK运行完全指南:轻量工具实现跨平台应用体验

Windows APK运行完全指南&#xff1a;轻量工具实现跨平台应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在寻找在Windows系统上高效运行Android应用的方案吗…

作者头像 李华
网站建设 2026/2/24 11:08:02

BSHM人像抠图全流程演示,附完整操作命令

BSHM人像抠图全流程演示&#xff0c;附完整操作命令 人像抠图这件事&#xff0c;说简单也简单——把人从背景里干净利落地分离出来&#xff1b;说难也真难——边缘发丝、半透明纱质衣物、复杂光影交界处&#xff0c;稍有不慎就糊成一片。BSHM&#xff08;Boosting Semantic Hu…

作者头像 李华
网站建设 2026/2/26 11:07:33

VibeThinker-1.5B-WEBUI安全设置:防止未授权访问配置指南

VibeThinker-1.5B-WEBUI安全设置&#xff1a;防止未授权访问配置指南 1. 为什么必须重视WEBUI的安全配置 VibeThinker-1.5B-WEBUI 是一个轻量但功能完整的推理界面&#xff0c;它让开发者能快速体验这个微博开源的15亿参数小模型在数学与编程任务上的惊人表现。但正因为它部署…

作者头像 李华
网站建设 2026/2/4 23:30:48

飞控系统状态验证全流程指南:从异常重启到安全恢复

飞控系统状态验证全流程指南&#xff1a;从异常重启到安全恢复 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 无人机系统恢复能力是保障飞行安全的核心环节&#xff0c;尤其是在突发电源波动、软件…

作者头像 李华