毕业设计项目——基于transformer的中文医疗领域命名实体识别(论文/代码)

完整的论文代码见文章末尾 以下为核心内容

摘要

近年来,随着深度学习技术的发展,基于Transformer和BERT的模型在自然语言处理领域取得了显著进展。在中文医疗领域,命名实体识别(Named Entity Recognition, NER)是一项重要任务,旨在从文本中识别出特定类别的命名实体,如疾病、药物、治疗方法等。传统方法在处理中文医疗领域NER时面临着语言复杂性和领域专业性等挑战,而基于Transformer和BERT的模型能够更好地捕捉句子中的上下文信息、语义关系和依赖关系,从而提升NER的准确性和泛化能力。通过结合Transformer和BERT的架构,以及预训练模型的迁移学习方法,可以有效地构建适用于中文医疗领域的NER模型,为医疗信息提取和医疗知识图谱构建等任务提供更加准确和高效的支持。

本文方法

Transformer模型设计与实现

使用transformer中的AutoModelForTokenClassification,基于上文的Bert分词模型,其用于进行标记分类(Token Classification)任务的模型训练和推理。

预训练的Transformer模型存在以下两个结构:

嵌入层(Embedding Layer):在Transformer模型中,嵌入层首先接收输入的标记(tokens)。这些标记通过BERT分词器处理后,转换为模型可以理解的数字ID。嵌入层包括词嵌入、位置嵌入和段落嵌入(对于处理多段落文本的模型而言)。这些嵌入结合起来,将每个标记转换为具有丰富语义和上下文信息的固定大小的向量表示。

Transformer编码器层:这些向量表示随后被送入多层的Transformer编码器。每一层编码器包括两个主要部分:多头自注意力机制和前馈神经网络。多头自注意力机制允许模型在处理每个标记时,考虑到其他标记的信息,从而捕捉复杂的依赖关系。前馈网络则进一步处理这些信息。残差连接和层归一化帮助改善训练过程中的稳定性和效率。

在预训练模型的基础上,为了进行标记分类任务,会增加一个特定的分类头。这通常是一个线性层,用于将Transformer模型最后一层的输出(每个标记的表示)映射到标记类别的概率分布上。

输入处理阶段,文本首先经过分词器处理,分解为标记,并转换为数字ID。这些ID通过嵌入层转换为向量,这些向量包含了标记的初步语义表示。

接着,这些向量通过多层Transformer编码器处理,每层都使用自注意力机制来理解标记之间的上下文关系。模型能够学习到每个标记与其他标记之间的相互作用,从而获得丰富的上下文化表示。通过Transformer编码器的处理,得到的每个标记的表示随后被送入分类头,这个线性层将每个标记的表示映射到预定义类别的概率分布上,从而完成标记分类任务。

最终模型输出每个标记的类别预测,这些预测用于识别文本中的实体名。在训练阶段,模型使用带标签的数据进行微调,通过计算预测类别分布和实际标签之间的损失(通常是交叉熵损失),并通过反向传播更新模型参数,以最小化这一损失。在推理(或测试)阶段,模型对新的未标记文本进行标记分类预测,基于学习到的表示和分类头,模型能够为每个输入标记分配最可能的标签。

自注意力机制优化

传统的Transformer模型在计算注意力时,会对所有的输入序列进行全注意力计算,这导致了巨大的计算和存储开销。在医疗NER任务中,可以通过稀疏化注意力来减少计算量。具体来说,只关注与当前词条最相关的其他几个词条,而不是整个序列。本文使用局部窗口注意力机制来优化模型。

局部窗口注意力机制的核心思想是:在自注意力的计算中,不是考虑整个序列的全局信息,而是只关注每个词条周围的有限范围内的其他词条。这种方法基于的假设是,文本中很多重要的信息和依赖通常局限在词条的近邻范围内,特别是在医疗文本中,相关的医学术语和描述往往在相对集中的文本区域内出现。

可以为每个词条定义一个固定大小的窗口(例如,前后各包含5个词条),只计算窗口内词条之间的注意力。这种方法在保持上下文相关性的同时,显著降低了计算量。
在本文的医疗NER任务中,选择前后各3至5个词的窗口大小。修改传统的Transformer模型中的注意力计算方式,在局部窗口注意力机制中,只计算窗口内词条之间的注意力分数。

这可以通过掩码操作实现,即在计算注意力分数时,将窗口外的词条对应的分数设为一个非常小的值(或负无穷),这样在应用softmax函数时,这些词条的影响就被忽略了。使用局部窗口注意力不需要改变Transformer的基本结构,仅需修改注意力层的计算方式。

结果展示

NER任务常用BIO(Begin-Inside-Outside)标注模式来标识实体的边界。在这种标注体系中,每个标签都有其特定的含义:“B”(开始)标签标记实体的开始,“I”(中间)标签标记实体内部的字符,“E”(结束)标签标记实体的结束,而“O”(非实体)标签则用于标记不属于任何实体的字符。此外,标注中的数字0通常用于表示句子的分隔或其他特殊情况。

例如,在一串序列标签[1, 2, 2, 2, 3, 4, 4, 4, 4, 4, 4, 4, 0, 0]中,标签组合[1, 2, 2, 2, 3]代表一个完整的实体,其内部结构表明了实体的起始、中间部分以及结束,这使得模型能够清晰地识别并界定实体的范围。在实际的文本分析中,这可以直接转化为实体“半月板钙化”的检测,其中“半月板”由标签1(B)开始,“钙化”由标签3(E)结束。

当我们将这些序列标签映射回原始文本时,可以得到精确的实体识别结果,例如,{‘start’: 0, ‘end’: 3, ‘word’: ‘瘦脸针’}。这表明模型不仅能识别出“瘦脸针”这一实体,还能定位其在原文中的确切位置。

在这里插入图片描述

模型结果评估

数据集及序列标注方法

i2b2 (Informatics for Integrating Biology and the Bedside): i2b2是医疗领域常用的一个数据集,旨在促进生物医学研究和健康信息的集成。i2b2组织的挑战赛提供了多个与医疗文本处理相关的任务,包括但不限于患者病史的时间线分析、药物和疾病名称的提取等。这些数据集通常由临床笔记、病历摘要等构成。

MIMIC-III (Medical Information Mart for Intensive Care III): MIMIC-III是一个公开可用的大型数据库,包含了来自数千名重症监护病人的详细健康信息。数据内容丰富,包括病人的生理参数、实验室检测结果、医疗报告等。研究人员常用MIMIC-III来开展医疗NER等自然语言处理任务,以自动从文本中识别和分类医疗相关的实体。

BIO是一种简单的序列标注方案,其中"B"代表实体的开始,"I"代表实体的内部,"O"代表非实体。例如,在标注疾病名称时,“B-Disease”表示疾病名称的开始,“I-Disease”表示疾病名称的内部部分。这种方法适用于多种类型的实体识别任务,特别是在医疗领域中,能够有效地识别出疾病、症状、药物等实体的边界。

对比试验

本节的目标是验证所提出的基于Transformer的医疗NER模型在医疗实体识别任务上是否超过现有的标准方法或模型。

通过在数据集上进行对比实验,这些模型在专业实体的识别任务上的表现被详细评估和比较。实验结果揭示了每种模型在实体识别精度上的表现,展现了从BiLSTM-CRF到BERT及其变种模型,到本文的基于Transformer和bert分词模型的的逐步优化和性能提升的过程。

在这里插入图片描述

实验模型(基于Transformer):这是表格中性能最优的模型,实现了82.00%的准确率和83.50%的召回率,以及82.74%的F1分数。这个结果不仅证明了Transformer架构在处理复杂语言模型中的强大能力,也展示了在模型设计和训练过程中可能采取的优化措施的有效性,使得模型在专业实体识别任务上达到了更高的准确性和鲁棒性。

总体来看,从BiLSTM-CRF到基于Transformer的实验模型,可以观察到随着模型结构的复杂化和优化,NER任务的性能表现逐步提升。Transformer架构在命名实体识别(NER)上之所以展现出优越性,主要归功于以下几个关键特性:

Transformer模型的核心是自注意力机制,它允许模型在处理序列的每个元素时,同时考虑序列中的所有其他元素。这使得模型能够捕捉长距离依赖性,从而更好地理解上下文,这在NER任务中尤为重要。

与循环神经网络(RNN)不同,Transformer不需要按顺序处理序列数据,从而允许并行计算,大幅提高了训练效率。其通常由多个编码器和解码器层堆叠而成,每一层都能够学习序列的不同表示,从更抽象的层面捕捉语言的语义和结构信息。

获取方式

在这里插入图片描述
具有完备代码和论文以及其他材料。

点这里

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中,表单组件的使用场景非常广泛。为了提高开发效率,我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件,让你只需要通过属性配置轻松实现各种表单,效果图如下: 一、准备…

如何利用免费音频剪辑软件制作出精彩音频

现在有许多免费的音频剪辑软件可供选择,它们为广大用户提供了丰富的功能和便捷的操作体验,让音频编辑变得更加轻松和有趣。接下来,让我们一起走进这些免费音频剪辑软件的世界,探索它们的独特魅力和强大功能。 1.福昕音频剪辑 链…

【Nacos入门到实战十四】Nacos配置管理:集群部署与高可用策略

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

点云补全 学习笔记

目录 Depth completion with convolutions and vision transformers 依赖项: DCNv2 softpoolnet Depth completion with convolutions and vision transformers Zhang, Y., Guo, X., Poggi, M., Zhu, Z., Huang, G., Mattoccia, S.: Completionformer: Depth co…

力扣10.6

134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 …

docker运行arm64架构的镜像、不同平台镜像构建

背景 Docker 允许开发者将应用及其依赖打包成一个轻量级、可移植的容器,实现“一次构建,到处运行”的目标。然而,不同的操作系统和硬件架构对容器镜像有不同的要求。例如,Linux 和 Windows 系统有不同的文件系统和系统调用&#…

【预备理论知识——2】深度学习:线性代数概述

简单地说,机器学习就是做出预测。 线性代数 线性代数是数学的一个分支,主要研究向量空间、线性方程组、矩阵理论、线性变换、特征值和特征向量、内积空间等概念。它是现代数学的基础之一,并且在物理学、工程学、计算机科学、经济学等领域有着…

css3-----2D转换、动画

2D 转换(transform) 转换(transform)是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果 移动:translate旋转:rotate缩放:scale 二维坐标系 2D 转换之移动 trans…

OpenGL笔记十九之相机系统

OpenGL笔记十九之相机系统 —— 2024-10-02 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十九之相机系统1.运行1.1.游戏相机1.2.轨迹球相机 2.游戏相机与轨迹球相机切换3.博主笔记本要运行需要更改的文件更改1:28_OpenGL_CameraSystem/applicat…

C语言文件操作(下)(28)

文章目录 前言一、文件的打开和关闭打开打开模式相对路径和绝对路径 关闭 二、文件操作正确流程三、文件顺序读写函数fopenfclosefputcfgetcfputsfgetsfprintffscanfsprintfsscanffwritefread 四、文件随机读写函数fseekftellrewind 五、文件读取结束时候的判断feofferror具体例…

高级 Java Redis 客户端 有哪些?

高级Java Redis客户端主要包括以下几种: 1. Redisson (https://github.com/redisson/redisson) 特点:Redisson是一个在Redis的基础上实现的Java驻留数据网格(In-Memory Data Grid)。它不仅是一个Redis的J…

4个顶级的大模型推理引擎

LLM 在文本生成应用中表现出色,例如具有高理解度和流畅度的聊天和代码完成模型。然而,它们的庞大规模也给推理带来了挑战。基本推理速度很慢,因为 LLM 会逐个生成文本标记,需要对每个下一个标记进行重复调用。随着输入序列的增长&…

什么是 Tammann temperature

Tammann temperature (Tt_tt​) 是材料科学中一个重要的概念,它通常用于描述材料的热力学特性和相变行为。其定义与玻璃态和晶态材料的内部原子运动相关。Tammann 温度在研究材料的扩散、再结晶、以及玻璃化转变过程中具有重要意义。 1. Tammann 温度的定义 Tamma…

【AIGC】2022-NIPS-视频扩散模型

2022-NIPS-Video Diffusion Models 视频扩散模型摘要1. 引言2. 背景3. 视频扩散模型3.1. 重建引导采样以改进条件生成 4. 实验4.1. 无条件视频建模4.2. 视频预测4.3. 文本条件视频生成4.3.1 视频与图像建模的联合训练4.3.2 无分类器指导的效果4.3.3 更长序列的自回归视频扩展 5…

06.useEffect

在 React 开发中,正确使用 useEffect 钩子对于优化组件性能至关重要。一个常见但容易被忽视的性能问题是在依赖数组中使用对象作为依赖项。这可能导致不必要的效果重新执行,从而影响应用性能。通过优先使用原始值(如字符串、数字)作为依赖项,我们可以显著提高组件的效率。…

【多线程】详解 CAS 机制

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. CAS 是什么1.1 CAS 具体步骤1.2 CAS 伪代码 2. CAS 的应用2.1 实现原子类2.1.1 AtomInteger 类2.1.2 伪代…

word无法复制粘贴

word无法复制粘贴 使用word时复制粘贴报错 如下: 报错:运行时错误‘53’,文件未找到:MathPage.WLL 这是mathtype导致的。 解决方法 1)在mathtype下载目录下找到"\MathType\MathPage\64"下的"mathpa…

Qt开发第一讲

一、Qt项目里面有什么? 对各个文件的解释: Empty.pro文件 QT core gui # 要引入的Qt模块,后面学习到一些内容的时候可能会修改这里 #这个文件相当于Linux里面的makefile文件。makefile其实是一个非常古老的技术了。 #qmake搭配.pr…

C++之模版进阶篇

目录 前言 1.非类型模版参数 2.模版的特化 2.1概念 2.2函数模版特化 2.3 类模板特化 2.3.1 全特化和偏特化 2.3.2类模版特化应用实例 3.模版分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决方法 4. 模板总结 结束语 前言 在模版初阶我们学习了函数模版和类…

Redis Stack十部曲之五:管理Redis

文章目录 安全ACLTLS 配置redis.conf配置文件通过命令行传递参数动态修改Redis配置Redis作为缓存使用 Redis SentinelRedis Sentinel像一个分布式系统运行Redis Sentinel配置Redis Sentinelquorum参数其它Sentinel 选项 Redis Sentinel部署模式探索ASCII 图示说明模式1&#xf…