首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >临床NLP工具库medspaCy架构

临床NLP工具库medspaCy架构

原创
作者头像
用户11764306
发布2026-05-26 09:36:37
发布2026-05-26 09:36:37
460
举报

medspaCy:基于spaCy的临床自然语言处理库

概述

medspaCy 是一个工具库,用于使用流行的 spaCy 框架执行临床 NLP 和文本处理任务。该包汇集了多个其他包,每个包都实现了针对临床领域特定常见临床文本处理的具体功能,例如句子分割、上下文分析和属性断言,以及章节检测。

medspaCy 采用模块化设计,每个组件都可以独立使用。整个库设计为 spaCy 处理管道的一部分。以下每个模块都是 medspaCy 的一部分:

  • medspacy.preprocess:破坏性预处理,用于在处理前修改临床文本
  • medspacy.sentence_splitter:临床句子分割
  • medspacy.ner:从临床文本中提取概念的工具
  • medspacy.context:ConText 算法的实现,用于检测实体的语义修饰符和属性,包括否定和不确定
  • medspacy.section_detection:临床章节检测和分割
  • medspacy.postprocess:用于修改和移除提取实体的灵活框架
  • medspacy.io:将处理后的文本转换为结构化数据并与数据库交互的工具
  • medspacy.visualization:可视化从文本中提取的概念和关系的工具
  • SpacyQuickUMLS:与该机构 fork 的 QuickUMLS 实现的 UMLS 概念提取,兼容 spaCy 和 medspacy

未来工作将包括 I/O、关系提取和预训练的临床模型。

最新版本 1.3.1 (2024-11-21)

主要更新:

  • 优化数据库 I/O,将概念批量写入 SQLite
  • 重新配置 requirements.txt,更新依赖以支持 spaCy 3.8.2 版本
  • 停止支持 Python 3.6 和 3.7
  • 可选择允许在章节标题添加句子边界

自 2021-10-02 (版本 0.2.0.0) 起,medspaCy 支持 spaCy v3。

多语言支持

截至 2024 年 5 月,medspacy 已重构,支持分发英语之外语言的规则和资源。下表总结了各语言可用内容(按规则成熟度排序):

语言

ConText 规则

章节规则

QuickUMLS 示例

英语

法语

极少

荷兰语

西班牙语

极少

波兰语

葡萄牙语

意大利语

德语

安装

可使用 setup.py 安装:

代码语言:bash
复制
python setup.py install

或使用 pip:

代码语言:bash
复制
pip install medspacy

安装旧版本(使用 spaCy 2):

代码语言:bash
复制
pip install medspacy==0.1.0.2

依赖要求

安装 medspacy 时会自动安装以下包:

  • spaCy v3
  • pyrush

基本使用示例

代码语言:python
复制
import medspacy
from medspacy.ner import TargetRule
from medspacy.visualization import visualize_ent

# 加载 medspacy 模型
nlp = medspacy.load()
print(nlp.pipe_names)

text = """
既往病史:
1. 心房颤动
2. II型糖尿病

评估与计划:
无肺炎证据。继续使用华法林治疗房颤。随访管理2型糖尿病。
"""

# 添加目标概念提取规则
target_matcher = nlp.get_pipe("medspacy_target_matcher")
target_rules = [
    TargetRule("atrial fibrillation", "PROBLEM"),
    TargetRule("atrial fibrillation", "PROBLEM", pattern=[{"LOWER": "afib"}]),
    TargetRule("pneumonia", "PROBLEM"),
    TargetRule("Type II Diabetes Mellitus", "PROBLEM", 
              pattern=[
                  {"LOWER": "type"},
                  {"LOWER": {"IN": ["2", "ii", "two"]}},
                  {"LOWER": {"IN": ["dm", "diabetes"]}},
                  {"LOWER": "mellitus", "OP": "?"}
              ]),
    TargetRule("warfarin", "MEDICATION")
]
target_matcher.add(target_rules)

doc = nlp(text)
visualize_ent(doc)

引用 medspaCy

如在工作中使用 medspaCy,可引用发表于 AMIA 2021 年会的论文(预印本可在 Arxiv 获取)。

使用 medSpaCy 的项目

  • VA_COVID-19_NLP_BSV:用于从临床文本识别 COVID-19 阳性病例的 NLP 管道
  • clinspacy:用于在 R 中执行临床 NLP 和 UMLS 链接的 R 包装器
  • mimic34md2020_materials:墨尔本大学的临床数据科学速成课程
  • ReHouSED NLP:用于研究该机构住房稳定性的 NLP 管道
  • Melanoma Pathology NLP:用于从自由文本病理报告中提取黑色素瘤诊断和特征的管道FINISHED

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • medspaCy:基于spaCy的临床自然语言处理库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档