基于BERT的医学影像报告语料库构建

大模型时代,任何行业,任何企业的数据治理未来将会以“语料库”的自动化构建为基石。因此这一系列精选的论文还是围绕在语料库的建设以及自动化的构建。

通读该系列的文章,犹如八仙过海,百花齐放。非结构的提取无外乎关注于非结构化的对象以及对象之间的关系,进而提炼为架构化的数据进行治理。目前优质的基座模型甚多,如何准备微调的语料库样本库(如何标注)以及如何设计标注的结构则十分关键,好的设计将使得微调过的模型能够快速学会自动化标注。

在医学诊断与治疗过程中,影像学扮演着至关重要的角色。无论是揭示肿瘤病变、追踪神经系统状况、评估心血管功能,还是解析肌肉骨骼问题,放射科医师通过解读复杂且非结构化的医学影像,为临床决策提供关键信息。这些信息通常以详尽的放射学报告形式呈现,但其自由叙事的特性使得它们在进行二次利用时,如回顾性分析或临床决策支持系统构建,面临着结构化转化的挑战。如今,这一难题正因一项创新研究而得到突破性进展,本篇论文将创建了“Corpus of Annotated Medical Imaging Reports(CAMIR)”的独特资源,首次将精细事件结构与概念标准化巧妙融合,革新了医学影像报告的处理方式。

方法论

数据集:论文使用了一个现有的包含2007年至2020年间来自华盛顿大学医学系统四个医院的普通患者群体的临床数据库,其中包括1,417,586份CT报告、541,388份MRI报告和39,150份PET-CT报告。从每种成像模态中随机抽取报告:CT报告203份、MRI报告202份、PET-CT报告204份。这些报告使用神经去标识符自动进行了去标识化处理。

标注模式:CAMIR事件模式中,每个事件包括一个标识事件的触发器和描述事件的参数。下图展示了在整个注解过程中使用的BRAT快速注解工具的注解示例。

标注方式:四位医学生对CAMIR进行了标注。两两组队对357份报告进行了双重标注,另有252份报告由相同的标注员进行了单次标注。经过五轮双重标注后,标注员的水平达到了一致的交互式一致性评价(IAA)标准,随后进行了4轮单次标注。数据集中训练集、验证集和测试集的比例为70%:10%:20%。训练集中有41%为双重标注,整个验证集和测试集均为双重标注,以确保评估的可靠性。双重标注报告平均每份包含2.65±0.48个指征触发器、10.15±1.31个医学问题触发器和9.77±0.99个病变触发器,而单次标注报告平均每份包含2.14±0.26个指征触发器、9.91±2.58个医学问题触发器和8.78±1.06个病变触发器。

信息提取(IE)提取框架:为了提取CAMIR事件,研究团队考察了两种基于BERT的语言模型:(1)mSpERT和(2)增强版的PL-Marker,PL-Marker++。对于这两套系统,研究团队把事件分解为包含实体和关系的一个组,其中关系头是触发器,关系尾是参数。

mSpERT

上图显示了mSpERT架构,包括各种主体类型、主体子类型和关系输出层。这种尝试较为直接,直接使用BERT联合提取主体和关系。

输出层通过外接Adapter负责分类跨度识别以及多标签之间的关系预测。研究团队因此也利用它来预测子类型标签,mSpERT输出的最终结果可以生成CAMIR预先定义的事件结构,进而完成数据自动化的抽取。

PL-Marker++

PL-Marker是一个多阶段提取框架,第一阶段识别各种主体信息,第二阶段解析关系。为了提取CAMIR事件,研究团队引入了PL-Marker的增强版PL-Marker++。唯一的区别在于第三个分类阶段,用于带值子类型的标签。上图展示了PL-Marker++架构,其中实体类型和关系阶段与原始PL-Marker模型相同。

看到这里会比较烧脑,大白话的解释就是C阶段就是传统的PL-marker框架,主要是提取每一段文字的各种主体信息(含开始和结束位置)、主体之间的关系。因为这样的操作是并行计算,速度和效率可以得到保障。

而B阶段就是所谓的第三分类阶段,进一步将C阶段的成果再次通过Bert基座识别出对应实体的额外信息。这个过程主要是C阶段提炼的每一个实体对象插入标识符生成新的输入。再讲这个输入利用Bert CLS标记的隐藏状态输入外挂分类器,进而识别出每个主体的二级子类。最终一段文本被自动化的标注为结构化的语料库。

标注结果

左图给出了双重标注报告的一致性(IAA)数据。对双重标注报告中的所有触发器和参数进行评估,总体一致性得分为0.762 F1。对于触发器标注的一致性更高,指示(Indication)、病变(Lesion)和医学问题(Medical Problem)分别为0.856、0.805和0.854 F1。尺寸(Size)、尺寸趋势(Size Trend)和计数(Count)参数出现频率远低于其他参数,从而导致这些参数的一致性得分较低。特征(Characteristic)参数的语义非常多样,导致频繁的假阴性结果。

CAMIR中标注现象的分布情况。虽然成像方式的关注点可能有所不同,但大多数参数类型的标注在各成像方式间的分布相似。

两种框架的效果对比

从上图看,PL-Marker++相对于mSpERT取得了显著更高的整体性能(0.759 F1 对比 0.736 F1)。尽管mSpERT和PL-Marker++模型在提取指示和医学问题触发器和参数方面的表现相似,但PL-Marker++在提取病变触发器和除一种参数类型外的所有参数方面表现出色。PL-Marker++模型在提取病变事件的特征、尺寸和尺寸趋势参数方面分别获得了+∆0.05 F1的提升。PL-Marker++整体性能的提高可归因于通过BERT模型的所有层注入触发器和参数位置信息。

总结

CAMIR语料库凭借其独特的事件结构与概念标准化结合的设计,连接了高度专业的放射学语言与机器学习算法。使海量非结构化的影像报告得以转化为结构化数据,为科研人员、临床医生及医疗软件开发者提供了宝贵的研究素材与开发资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635104.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电路笔记 :元器件焊接相关 酒精灯松香浴加热取芯片

记录一下只使用松香和小火源加热(如酒精灯、小蜡烛)从电路板中取芯片。 过程 多放松香 让松香淹没芯片尽量均匀加热,等芯片旁边的松香开始从芯片里冒细小的“泡泡”,就差不多了 注:这种方法也可以用于焊接&#xff0…

UBUNTU22.04无法安装nvidia-driver-550 依赖于 nvidia-dkms-550 (<= 550.54.15-1)

类似的报错信息,就是卡在了nvidia-dkms-550无法安装 Loading new nvidia-550.40.07 DKMS files… Building for 6.5.0-15-generic Building for architecture x86_64 Building initial module for 6.5.0-15-generic ERROR: Cannot create report: [Errno 17] File e…

VLAN创建及配置

V-- 虚拟 LAN ---局域网 ---地理覆盖范围较小的网络 MAN ---城域网 WAN ---广域网 VLAN ---虚拟局域网 --- 交换机和路由器协同工作后,将原先的一个广播域,逻辑上切分为多个 第一步:创建VLAN [Huawei]display vlan---查看VLAN信息 VID -- VLAN ID ----…

DNS域名解析与智能选路

要开始访问公网了!! 你在访问百度的时候,你也不知道百度的IP地址是啥,你只知道他的域名是baidu AD这台设备可以做入站的负载平衡,AD来选择你访问的时候是用联通网还是电信网,避免卡顿 pc并不会域名解析&…

[算法] 优先算法(二): 双指针算法(下)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

Python TCP编程简单实例

客户端:创建TCP链接时,主动发起连接的叫做客户端 服务端:接收客户端的连接 连接其他服务器 可以通过tcp连接其他服务器。 示例: import socket# 1.创建一个socket # 参数1:指定协议 AF_INET(ipv4&#…

ftp是什么,ftp能做什么,ftp有什么用 -----在Windows搭建ftp服务器

大家好,我是风屿,今天教大家如何从零开始搭建一台属于自己的ftp,本期教大家搭建Windows客户端的,后面是linux的 首先第一步要有一台联网的Windows电脑 1打开控制面板,找到程序,点击打开或关闭Windows功能…

MQTT 5.0 报文解析 05:DISCONNECT

欢迎阅读 MQTT 5.0 报文系列 的第五篇文章。在上一篇中,我们已经介绍了 MQTT 5.0 的 PINGREQ 和 PINGRESP 报文。现在,我们将介绍下一个控制报文:DISCONNECT。 在 MQTT 中,客户端和服务端可以在断开网络连接前向对端发送一个 DIS…

QT项目-欢乐斗地主游戏

QT项目-欢乐斗地主游戏 游戏概述游戏规则牌型牌型的大小游戏角色游戏规则游戏的胜负游戏计分规则 游戏相关的类介绍卡牌类玩家类窗口类游戏控制类游戏策略类线程类音频类 游戏主要组件卡牌玩家窗口 游戏控制源码 游戏概述 游戏规则 不同地域游戏规则可能有些许差异&#xff0c…

CCF20220601——归一化处理

CCF20220601——归一化处理 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,a[1000],sum0;scanf("%d",&n);for(int i1;i<n;i){scanf("%d",&a[i]);suma[i];}double aver1.0,b0.0,d1.0;aversum/(n*1…

vue3使用mitt.js进行各种组件间通信

我们在vue工程中&#xff0c;除开vue自带的什么父子间&#xff0c;祖孙间通信&#xff0c;还有一个非常方便的通信方式&#xff0c;类似Vue2.x 使用 EventBus 进行组件通信&#xff0c;而 Vue3.x 推荐使用 mitt.js。可以实现各个组件间的通信 优点&#xff1a;首先它足够小&…

0406 组合放大电路

组合放大电路 共射-共基放大电路共集-共集放大电路 4.6.1 共射—共基放大电路 4.6.2 共集—共集放大电路 共射-共基放大电路 共集-共集放大电路 (a) 原理图 (b)交流通路 T1、T2构成复合管&#xff0c;可等效为一个NPN管

c#点击listview控件获取内容

构造函数添加&#xff1a; 点击事件&#xff1a; &#xff08;listview控件确保有内容&#xff0c;比如已查询到数据添加到了listview&#xff09; if (listView_data_base.Items.Count > 0){listView_data_base.FullRowSelect true;listView_data_base.Items[listView_da…

【C语言】VS编译器的scanf

我们在写代码的时候通常需要用到输入函数&#xff1a;scanf&#xff0c;但在vs编译环境下却必须写为&#xff1a;scanf_s&#xff0c;这是为什么呢&#xff1f;这里就是vs规定的了&#xff0c;VS认为这样写更安全&#xff0c;但如果我们非要写成scanf形式也是有办法的。 # 看我…

服务器c盘爆满了,这几种方法可以帮助C盘“瘦身”

我们在使用服务器的时候基本不会在C盘安装软件&#xff0c;那么用久了发现C盘满了&#xff0c;提示空间不足&#xff1f;那么这是怎么回事&#xff0c;为什么空间会占用这么快呢&#xff1f; 原因一&#xff1a; C盘满了&#xff0c;很可能是因为电脑里的垃圾文件过多。操作系…

从业务角度来看,DevOps 是什么?

如果您在我们的应用程序名称中看到“DevOps”&#xff0c;这意味着我们必须正确解释该术语&#xff0c;我们会这样做&#xff0c;但角度会有所不同。让我们从业务角度看看 DevOps 是什么。 通用名称 首先你应该知道&#xff0c;DevOps 没有明确的定义。是的。 大多数情况下&a…

TypeScript-类型断言

类型断言 当开发者比TS本身更清楚当前的类型是什么&#xff0c;可以使用断言(as)让类型更加精确和具体 const _link document.getElementById(link) console.log(_link.href) // 出错了&#xff0c;如下图 const _link document.getElementById(link) as HTMLAnchorElement…

K8S认证|CKA题库+答案| 14. 排查故障节点

14、排查集群中的故障节点 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node wk8s master …

iptablese防火墙【SNAT和DNAT】

目录 1.SNAT策略及应用 1.1SNAT原理与应用 1.2 SNAT策略的工作原理 1.3 实验操练 2.DNAT策略 2.1 DNAT策略的概述 2.2 DNAT原理与应用 2.3 实验操练 1.SNAT策略及应用 1.1SNAT原理与应用 SNAT 应用环境&#xff1a;局域网主机共享单个公网IP地址接入Internet&#xf…

AJAX、

文章目录 AJAX1. AJAX简介AJAX特点 2. XML简介3. AJAX发送get请求4. post请求设置体参数5. 设置请求头信息6. AJAX请求服务端响应json数据7. ie缓存问题8. 请求超时问题和网络异常9. 取消请求10. 请求重复取消11. jQuery中的AJAX请求12. axios函数发送AJAX使用fetch函数发送AJA…