带有Spacy的临床NLP库。

MedSpacy目前正在Beta中。
MedSpacy是使用流行的Spacy框架执行临床NLP和文本处理任务的工具库。 medspacy软件包汇集了许多其他软件包,每个软件包都为特定于临床领域的常见临床文本处理实现了特定的功能,例如句子细分,上下文分析和属性主张以及截面检测。
medspacy是模块化的,因此每个组件都可以独立使用。所有medspacy旨在用作spacy处理管道的一部分。以下每个模块都可以作为medspacy的一部分提供:
medspacy.preprocess :处理之前修改临床文本的破坏性预处理medspacy.sentence_splitter :临床句子细分medspacy.ner :从临床文本中提取概念的实用程序medspacy.context :实施上下文,用于检测实体的语义修饰符和属性,包括否定和不确定性medspacy.section_detection :临床部分检测和分割medspacy.postprocess :用于修改和删除提取的实体的灵活框架medspacy.io :用于将处理的文本转换为结构化数据并与数据库进行交互的实用程序medspacy.visualization :可视化概念和从文本中提取的关系的实用程序SpacyQuickUMLS :UMLS概念提取与我们的Quickumls叉实现的Spacy和Medspacy兼容。有关此组件的更多详细信息,如何使用它,如何在本笔记本中找到超出小型UMLS样本的UMLS资源。未来的工作可能包括I/O,关系提取和预训练的临床模型。
1.3.1中的新功能:
requirements.txt和更新的MedSpacyDepentencies,以支持以后版本的Spacy最高3.8.2。截至2021年10月2日(版本0.2.0.0),MedSpacy支持Spacy V3
截至2024年5月,MedSpacy进行了重组,以允许以英语以外的语言分发规则和资源。
请注意,从MedSpacy的角度来看,某些语言实际上是“空的”。我们有要求允许其中一些语言的要求,但是我们没有规则,因为MedSpacy团队主要用英语工作。请参阅下表以获取每种语言中可用的内容的摘要,因为它们每种都不同。在撰写本文时,这些语言已按顺序排序,按照它们目前支持的规则/成熟度进行排序。如果您正在阅读本文,并且有规则或想制定其他语言的规则,请考虑贡献。我们可以帮助您整合您的工作。
| 语言 | 上下文规则 | 部分规则 | Quickumls样本(和单位测试) |
|---|---|---|---|
| 英语(EN) | 是的 | 是的 | 是的 |
| 法语(fr) | 是的 | 很少 | 是的 |
| 荷兰(NL) | 是的 | 不 | 不 |
| 西班牙 | 不 | 很少 | 是的 |
| 抛光(PL) | 不 | 不 | 不 |
| 葡萄牙(PT) | 不 | 不 | 是的 |
| 意大利语(IT) | 不 | 不 | 是的 |
| 德国(de) | 不 | 不 | 不 |
关于这些语言中可用的规则,请提及一些引用:
您可以使用setup.py安装medspacy :
python setup.py install或使用pip:
pip install medspacy安装使用Spacy 2的先前版本:
pip install medspacy==medspacy 0.1.0.2安装medspacy时需要以下包装并安装:
如果下载其他型号,则可以通过将模型本身或模型名称提供给medspacy.load(model_name) :
import spacy ; import medspacy
# Option 1: Load default
nlp = medspacy . load ()
# Option 2: Load from existing model
nlp = spacy . load ( "en_core_web_sm" , disable = { "ner" })
nlp = medspacy . load ( nlp )
# Option 3: Load from model name
nlp = medspacy . load ( "en_core_web_sm" , disable = { "ner" })这是一个简单的示例,展示了如何使用medspacy实现和可视化基于规则的管道:
import medspacy
from medspacy . ner import TargetRule
from medspacy . visualization import visualize_ent
# Load medspacy model
nlp = medspacy . load ()
print ( nlp . pipe_names )
text = """
Past Medical History:
1. Atrial fibrillation
2. Type II Diabetes Mellitus
Assessment and Plan:
There is no evidence of pneumonia. Continue warfarin for Afib. Follow up for management of type 2 DM.
"""
# Add rules for target concept extraction
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 ) Output: 
有关每个组件的更详细的示例和说明,请参见Notebooks文件夹。
如果您在工作中使用Medspacy,请考虑引用我们的论文!在AMIA年度专题讨论会2021年度,可在ARXIV上提供。
H. Eyre, A.B. Chapman, K.S. Peterson, J. Shi, P.R. Alba, M.M. Jones, T.L. Box, S.L. DuVall, O. V Patterson,
Launching into clinical space with medspaCy: a new clinical text processing toolkit in Python,
AMIA Annu. Symp. Proc. 2021 (in Press. (n.d.).
http://arxiv.org/abs/2106.07799.
@Article{medspacy,
Author="Eyre, H. and Chapman, A. B. and Peterson, K. S. and Shi, J. and Alba, P. R. and Jones, M. M. and Box, T. L. and DuVall, S. L. and Patterson, O. V. ",
Title="{{L}aunching into clinical space with medspa{C}y: a new clinical text processing toolkit in {P}ython}",
Journal="AMIA Annu Symp Proc",
Year="2021",
Volume="2021",
Pages="438--447"
}
}
这是一些使用MedSpacy的项目或教程的链接。如果您有一个使用您想使用的MedSpacy的项目,请告诉我们!
notebooks/nlp-*.ipynb