项目介绍:medspacy
medspacy是一个基于spaCy的临床自然语言处理(NLP)工具库,专门设计用于处理医学领域的文本。尽管该项目目前还处于测试阶段(Beta),但它已经集成了多个模块,每个模块都能独立执行特定的临床文本处理任务,如句子分割、上下文分析、属性断言以及段落检测等。
工具概览
medspacy通过模块化的设计,使其具备灵活的使用方式,并且可以与spaCy处理管道协同工作。主要模块包括:
- medspacy.preprocess: 用于对临床文本进行破坏性预处理,以便于后续的处理。
- medspacy.sentence_splitter: 实现医学句子分段。
- medspacy.ner: 提供从临床文本中提取概念的工具。
- medspacy.context: 使用ConText框架进行语义修辞和实体属性检测,包括否定和不确定性判断。
- medspacy.section_detection: 识别和分割临床文本的章节。
- medspacy.postprocess: 提供灵活的框架来修改和移除提取的实体。
- medspacy.io: 提供将处理后的文本转换为结构化数据并与数据库交互的工具。
- medspacy.visualization: 用于可视化从文本中提取的概念和关系。
- SpacyQuickUMLS: 支持UMLS概念提取并兼容spacy和medspacy,由QuickUMLS项目实现。
未来,medspacy还可能扩展到包括数据输入输出、关系提取以及预训练的临床模型。
语言支持
截至2024年,medspacy已经重新构建以支持除英语以外的多语言规则和资源。以下是支持的语言及其规则可用性:
- 英语(English):完全支持
- 法语(French):支持ConText规则,有限的章规则
- 荷兰语(Dutch):支持ConText规则,缺少章规则
- 西班牙语(Spanish):几乎没有规则支持
- 波兰语(Polish)和德语(German):暂无规则支持
对于支持的规则,medspacy团队主要工作在英语上,如果有意开发其他语言的规则,欢迎贡献。
使用指南
安装
通过setup.py
安装:
python setup.py install
或使用pip安装:
pip install medspacy
想要安装使用spaCy 2的版本:
pip install medspacy==medspacy 0.1.0.2
基本使用示例
以下是一个简单的示例,展示如何使用medspacy构建和可视化基于规则的管道:
import medspacy
from medspacy.ner import TargetRule
from medspacy.visualization import visualize_ent
# 加载medspacy模型
nlp = medspacy.load()
print(nlp.pipe_names)
text = """
过去的病史:
1. 心房颤动
2. 2型糖尿病
评估与计划:
没有发现肺炎的证据。继续使用华法林治疗Afib。随访以管理2型糖尿病。
"""
# 添加目标概念提取规则
target_matcher = nlp.get_pipe("medspacy_target_matcher")
target_rules = [
TargetRule("心房颤动", "PROBLEM"),
TargetRule("肺炎", "PROBLEM"),
TargetRule("2型糖尿病", "PROBLEM",
pattern=[
{"LOWER": "type"},
{"LOWER": {"IN": ["2", "ii", "two"]}},
{"LOWER": {"IN": ["dm", "diabetes"]}},
{"LOWER": "mellitus", "OP": "?"}
]),
TargetRule("华法林", "MEDICATION")
]
target_matcher.add(target_rules)
doc = nlp(text)
visualize_ent(doc)
medspacy是一个强大的工具,不仅方便实用,还支持多种临床文本分析需求。 如果您想在您的工作中使用medspacy,请查看更多详细的使用指南和示例。