临床NLP工具medSpaCy技术解析

medSpaCy是基于spaCy框架的临床自然语言处理工具包,提供句子分割、实体识别、上下文分析、段落检测等核心功能,支持多语言临床文本处理,包含规则匹配和UMLS概念提取技术。

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

medSpaCy目前处于测试阶段。

概述

medSpaCy是一个基于流行spaCy框架的临床NLP和文本处理工具库。该软件包整合了多个专用模块,每个模块实现针对临床文本处理的特定功能,包括句子分割、上下文分析、属性断言和段落检测等。

medspacy采用模块化设计,每个组件均可独立使用。所有功能均设计为spacy处理流程的组成部分,包含以下模块:

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

未来工作可能包括I/O处理、关系提取和预训练临床模型。

最新版本1.3.1(2024年11月21日)

新特性:

  • 优化数据库I/O,支持批量写入SQLite概念数据(已在mariadb测试)
  • 重新配置requirements.txt并更新依赖以支持spaCy 3.8.2及以上版本
  • 停止支持Python 3.6和3.7版本
  • 可选允许在段落标题中添加句子边界

自2021年10月2日(版本0.2.0.0)起支持spaCy v3

多语言支持

截至2024年5月,medspacy已重构以支持除英语外的其他语言规则和资源分发。各语言支持情况如下:

语言 ConText规则 段落规则 QuickUMLS样本(含单元测试)
英语 (en)
法语 (fr) 少量
荷兰语 (nl)
西班牙语 (es) 少量
波兰语 (pl)
葡萄牙语 (pt)
意大利语 (it)
德语 (de)

安装使用

通过setup.py安装:

1
python setup.py install

或使用pip: pip install medspacy

安装使用spaCy 2的旧版本: pip install medspacy==0.1.0.2

基础使用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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型糖尿病

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

# 添加目标概念提取规则
target_matcher = nlp.get_pipe("medspacy_target_matcher")
target_rules = [
    TargetRule("心房颤动", "问题"),
    TargetRule("肺炎", "问题"),
    TargetRule("II型糖尿病", "问题"),
    TargetRule("华法林", "药物")
]
target_matcher.add(target_rules)

doc = nlp(text)
visualize_ent(doc)
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计