当前位置: 首页 > news >正文

医疗领域名词标准化工具

1.项目整体目标

医疗系统记录的专有名词标准化,医生记录的非标准术语转化为标准的术语和id

词汇表:https://www.snomed.org/what-is-snomed-ct

SNOMED CT 术语结构:

SNOMED CT 术语查询网址:NHSDigital SNOMED CT Browser

FSN - Fully Specified Name(完全限定名称)

FSN 是对一个 SNOMED 概念最完整、最明确、不含歧义的命名方式。它包括了该概念的核心术语和它的上下文,以确保它在任何地方都可以被唯一识别

特点

• 每个 SNOMED 概念 只有一个 FSN
• 通常以括号中的词(如 (disorder)、(procedure) 等)表示 语义类别
• 用于程序内部的 唯一识别与精确区分,处理术语映射或知识抽取,FSN 是可靠的概念“标签”
• 不适合作为界面友好显示,通常界面上会使用 Preferred Term(首选术语)

概念(Concept)例子

SNOMED CT 标识符示例:

• 22298006:表示"心肌梗死"这一概念
• 73211009:表示"糖尿病"这一概念

• 39156-5:表示"体温"这一概念

每个概念都有一个唯一的数字标识符,不论使用何种语言表达,这个概念的核心含义都不变。

描述(Description)例子

完全限定名称(FSN)示例:

• 22298006 |心肌梗死(疾病)|
• 73211009 |糖尿病(疾病)|

• 386661006 |发热(临床发现)|

同义词示例:
1. 心肌梗死(22298006)的同义词:
1. 首选同义词:心肌梗死
2. 可接受的同义词:心梗、急性心肌梗死、冠脉堵塞
2. 糖尿病(73211009)的同义词:
1. 首选同义词:糖尿病2. 可接受的同义词:高血糖症、血糖异常

关系(Relationship)例子

IS A关系示例:

• 心肌梗死 IS A 心脏疾病
• 2型糖尿病 IS A 糖尿病

• 阿司匹林 IS A 非甾体抗炎药

属性关系示例:

  • 肺炎的属性关系:
  1. 有发病部位:肺组织
  2. 有病因:肺炎链球菌(细菌性肺炎的情况)
  3. 有临床表现:发热、咳嗽、呼吸困难
  • 阿司匹林的属性关系:
  1. 有活性成分:乙酰水杨酸
  2. 有药理作用:抗血小板聚集
  3. 有适应症:预防心肌梗死、缓解疼痛

场景1:医疗记录标准化

医生在病历中写道:"患者出现胸痛,诊断为急性心肌梗死"。
系统会将“急性心肌梗死”映射到SNOMED CT概念22298006。
使其在所有相关系统中被一致识别,无论当地医生习惯使用何种表达方式。

场景2:多语言环境

不同语种

  • 中文系统中显示:"心肌梗死"
  • 英文系统中显示:"Myocardial infarction"
  • 西班牙语系统中显示:"Infarto de miocardio“

但三者背后都是同一个概念ID:22298006,这使得不同语言的医疗系统可以无缝交换信息。

场景3:药物相互作用检测

当医生为一位已在服用华法林(抗凝药)的患者开具阿司匹林时,系统通过属性关系识别到两种药物都有"抗凝"作用,自动发出药物相互作用警告,可能增加出血风险。

场景4:医疗数据分析

研究人员想分析所有心脏疾病患者的数据,系统可以通过IS A关系自动包含心肌梗死、心绞痛、心律失常等所有心脏疾病的子类,确保分析的全面性。

场景5:临床决策支持

医生记录患者有"发热、咳嗽、血常规示白细胞升高"等症状,决策支持系统通过SNOMED CT的关系网络,可以提示可能的诊断包括肺炎、支气管炎等,并根据属性关系推荐相应的检查和治疗方案。


2.项目技术实现

代码下载和功能演示

https://github.com/huangjia2019/rag-project02-medical-nlp-box

构建医学专有名词知识库

1. 选择一个好的Embedding模型

MTEB Leaderboard排名提供了关于各种任务的最佳文本嵌入模型的整体视图:https://huggingface.co/blog/mteb
2. 用SentenceTransformer(Hugging Face) 下载这个模型

embedding_function = model.dense.SentenceTransformerEmbeddingFunction(# model_name='nvidia/NV-Embed-v2', # model_name='dunzhang/stella_en_1.5B_v5',# model_name='all-mpnet-base-v2',# model_name='intfloat/multilingual-e5-large-instruct',model_name='Alibaba-NLP/gte-Qwen2-1.5B-instruct',# model_name='BAAI/bge-m3',# model_name='jinaai/jina-embeddings-v3',device='cuda:0' if torch.cuda.is_available() else 'cpu',trust_remote_code=True)

3. 创建向量数据库(Milvus)

windows系统不支持Milvus数据库,替换为chroma

专有名词标准化系统设计

系统通过向量数据库处理文本输入,识别医疗相关的术语,并使用NER技术找到相关的医疗关键词。前端需传递特定的文本和向量数据库设定至后端,后端则通过API实现逻辑处理,最终返回最相关的专有名词。系统还能根据设定返回多个最相关的名词,例如top 5或top 10。
 

医疗NER功能实现

使用一个医疗名词抽取(Medical NER)模型来识别和分类医疗术语,特别是疾病和症状。通过分析模型返回的数据类型和种类,将这些信息与项目中的domain ID相链接,从而进行更精准的医疗信息检索和过滤。

通过调用Hugging Face库中的pipeline,可以实现命名实体识别任务。进一步的,通过对模型返回的实体类别进行了解和分析,可以进行类别合并或剔除等定制化操作以满足特定项目需求。例如,可以将特定的身体部位和症状合并成一个实体,或者移除不需要的实体类别如年龄、性别或地理位置。通过这些策略,可以对命名实体识别的结果进行调整和优化,以提高处理的准确性和效率。


医疗名词扩展和纠错功能实现

把名词缩写扩展为完整名词,使用ollama模型


3.利用图数据库提升RAG质量

利用知识图谱,系统不仅能直接匹配相近术语,还能通过概念节点关联,实现复杂语义的检索,如从简称SOB定位到dspnea,从而提高检索质量和信息饱满度。

此方法通过抓取描述信息和相关关系,将其与原有概念结合进行embedding,从而在检索时提供更丰富的语义信息。


 

http://www.dtcms.com/a/333841.html

相关文章:

  • 二分算法(模板)
  • Vue插槽---slot详解
  • RAGFlow入门
  • 大麦APP抢票揭秘
  • 亚马逊新品推广的智能突围:从传统SP广告到DeepBI策略革新
  • 结合项目对AOP的实践和理论讲解-AOP八股
  • 第十四节:物理引擎集成:Cannon.js入门
  • Windows Server Core智能调优
  • 智能体开发实战:用Deepseek做一个生成思维导图的智能体
  • SSH协议的GIT转换
  • 访问者模式C++
  • Day55 Java面向对象09 super关键字详解
  • MySQL 高效查询五虎将——分页、排序、分组、去重、聚合函数实战手册
  • 解决HFSS许可证激活错误的实用方法
  • QT开发中QString是怎么转char*类型的
  • 轴机械臂cad【7张】三维图+设计说明书
  • 子进程资源回收与线程相关概念
  • 机器视觉助力柔性屏贴合工艺升级,精度可达0.01mm
  • 文章数据发布到苹果CMS(MacCMS)网站技巧
  • 深入理解Transformer:从训练机制到长文本处理的核心问题
  • Erlang notes[2]
  • Fastadmin后台列表导出到表格
  • 从理论到实战:KNN 算法与鸢尾花分类全解析
  • [Pyro概率编程] 推理算法Infer | 随机变分推断SVI | MCMC采样机制
  • linux 设备驱动的分层思想
  • MySQL的学习笔记
  • Python 常用库速查手册
  • 小红书帖子评论的nodejs爬虫脚本
  • C++编程学习(第24天)
  • 数据结构与算法p4