帶有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