Biblioteca para PN clínica com Spacy.

Medspacy está atualmente na versão beta.
O MedSpacy é uma biblioteca de ferramentas para executar tarefas clínicas de PNL e processamento de texto com a estrutura de spacy popular. O pacote medspacy reúne vários outros pacotes, cada um dos quais implementa funcionalidade específica para processamento de texto clínico comum específico para o domínio clínico, como segmentação de sentenças, análise contextual e afirmação de atributos e detecção de seção.
medspacy é modularizado para que cada componente possa ser usado de forma independente. Todo o medspacy foi projetado para ser usado como parte de um pipeline de processamento spacy . Cada um dos módulos a seguir está disponível como parte do medspacy :
medspacy.preprocess : Pré -processamento destrutivo para modificar o texto clínico antes do processamentomedspacy.sentence_splitter : segmentação de frases clínicasmedspacy.ner : Utilitários para extrair conceitos de texto clínicomedspacy.context : Implementação do contexto para detectar modificadores e atributos semânticos de entidades, incluindo negação e incertezamedspacy.section_detection : detecção e segmentação de seção clínicamedspacy.postprocess : estrutura flexível para modificar e remover entidades extraídasmedspacy.io : utilitários para converter textos processados em dados estruturados e interagir com bancos de dadosmedspacy.visualization : Utilitários para visualizar conceitos e relacionamentos extraídos do textoSpacyQuickUMLS : UMLS Concept Extração Compatível com Spacy e Medspacy Implementado por nosso garfo de Quickumls. Mais detalhes sobre esse componente, como usá -lo, como gerar recursos UMLS além da amostra Small UMLS pode ser encontrada neste notebook.Trabalhos futuros podem incluir E/S, extração de relações e modelos clínicos pré-treinados.
O que há de novo em 1.3.1:
requirements.txt reconfigurados.txt e MedSpacyDependências atualizadas para oferecer suporte a versões posteriores do Spacy até 3.8.2.Em 02/10/2021 (versão 0.2.0.0), o MedSpacy suporta Spacy V3
Em maio de 2024, o MedSpacy foi reestruturado para permitir regras e recursos de distribuição em idiomas além do inglês.
Observe que alguns idiomas estão efetivamente "vazios" da perspectiva do MedSpacy. Tivemos pedidos para permitir alguns desses idiomas, mas não temos regras, pois a equipe do MedSpacy trabalha principalmente em inglês. Consulte a tabela abaixo para obter um resumo do que está disponível em cada idioma, pois cada um deles varia. Até o momento em que este artigo foi escrito, os idiomas foram classificados em ordem de que regras/maturidade eles apoiam atualmente. Se você estiver lendo isso e tiver regras ou gostaria de desenvolver regras em outro idioma, considere contribuir. Podemos ajudar a integrar seu trabalho.
| Linguagem | Regras de contexto | Regras da seção | Amostra Quickumls (e teste de unidade) |
|---|---|---|---|
| Inglês (en) | Sim | Sim | Sim |
| Francês (FR) | Sim | Muito poucos | Sim |
| Holandês (NL) | Sim | Não | Não |
| Espanhol (s) | Não | Muito poucos | Sim |
| Polonês (PL) | Não | Não | Não |
| Português (PT) | Não | Não | Sim |
| Italiano (IT) | Não | Não | Sim |
| Alemão (DE) | Não | Não | Não |
Em relação às regras disponíveis nesses idiomas, algumas citações para mencionar:
Você pode instalar medspacy usando setup.py :
python setup.py installOu com PIP:
pip install medspacyPara instalar uma versão anterior que usa Spacy 2:
pip install medspacy==medspacy 0.1.0.2 Os pacotes a seguir são necessários e instalados quando medspacy estiver instalado:
Se você baixar outros modelos, poderá usá -los fornecendo o próprio modelo ou o nome do modelo para 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" }) Aqui está um exemplo simples, mostrando como implementar e visualizar um pipeline simples baseado em regras usando 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: 
Para exemplos e explicações mais detalhadas de cada componente, consulte a pasta Notebooks.
Se você usar o MedSpacy em seu trabalho, considere citar nosso artigo! Apresentado no Simpósio Anual da Amia 2021, pré -impressão disponível no 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"
}
}
Aqui estão alguns links para projetos ou tutoriais que usam MedSpacy. Se você tem um projeto que usa Medspacy que você deseja usar, informe -nos!
notebooks/nlp-*.ipynb