Biblioteca para PNL clínica con Spacy.

Medspacy se encuentra actualmente en Beta.
MedSpacy es una biblioteca de herramientas para realizar tareas clínicas de PNL y procesamiento de texto con el popular marco de Spacy. El paquete medspacy reúne varios otros paquetes, cada uno de los cuales implementa una funcionalidad específica para el procesamiento de texto clínico común específico para el dominio clínico, como la segmentación de oraciones, el análisis contextual y la afirmación de atributos, y la detección de la sección.
medspacy se modularizó para que cada componente se pueda usar de forma independiente. Toda medspacy está diseñada para ser utilizada como parte de una tubería de procesamiento spacy . Cada uno de los siguientes módulos está disponible como parte de medspacy :
medspacy.preprocess : preprocesamiento destructivo para modificar el texto clínico antes del procesamientomedspacy.sentence_splitter : segmentación de oraciones clínicasmedspacy.ner : Utilidades para extraer conceptos del texto clínicomedspacy.context : Implementación del contexto para detectar modificadores y atributos semánticos de las entidades, incluida la negación y la incertidumbremedspacy.section_detection : detección y segmentación de la sección clínicamedspacy.postprocess : Marco flexible para modificar y eliminar entidades extraídasmedspacy.io : Utilidades para convertir textos procesados a datos estructurados e interactuar con bases de datosmedspacy.visualization : utilidades para visualizar conceptos y relaciones extraídas del textoSpacyQuickUMLS : Extracción de concepto de UMLS compatible con Spacy y Medspacy implementado por nuestra bifurcación de Quickumls. Se pueden encontrar más detalles sobre este componente, cómo usarlo, cómo generar recursos de UMLS más allá de la pequeña muestra UMLS en este cuaderno.El trabajo futuro podría incluir E/S, extracción de relaciones y modelos clínicos previamente capacitados.
¿Qué hay de nuevo en 1.3.1?
requirements.txt reconfigurados.txt y actualizado MedSpacyDependencies para admitir versiones posteriores de Spacy hasta 3.8.2.A partir del 2/10/2021 (versión 0.2.0.0), MedSpacy admite Spacy V3
A partir de mayo de 2024, Medspacy se ha reestructurado para permitir la distribución de reglas y recursos en idiomas además del inglés.
Tenga en cuenta que algunos idiomas están efectivamente "vacíos" desde la perspectiva de Medspacy. Hemos tenido solicitudes para permitir algunos de estos idiomas, pero no tenemos reglas ya que el equipo de Medspacy trabaja principalmente en inglés. Consulte la tabla a continuación para obtener un resumen de lo que está disponible en cada idioma, ya que cada uno varía. Al momento de escribir este artículo, los idiomas se han ordenado en orden de qué reglas/madurez que admiten actualmente. Si está leyendo esto y tiene reglas o desea desarrollar reglas en otro idioma, considere contribuir. Podemos ayudar a integrar su trabajo.
| Idioma | Reglas de contexto | Reglas de la sección | Muestra de QuickUmls (y prueba unitaria) |
|---|---|---|---|
| Inglés (es) | Sí | Sí | Sí |
| Francés (FR) | Sí | Muy pocos | Sí |
| Holandés (NL) | Sí | No | No |
| Español (es) | No | Muy pocos | Sí |
| Polaco (PL) | No | No | No |
| Portugués (PT) | No | No | Sí |
| Italiano (it) | No | No | Sí |
| Alemán (DE) | No | No | No |
Con respecto a las reglas que están disponibles en estos idiomas, algunas citas para mencionar:
Puede instalar medspacy usando setup.py :
python setup.py installO con pip:
pip install medspacyPara instalar una versión anterior que usa Spacy 2:
pip install medspacy==medspacy 0.1.0.2 Se requieren e instalan los siguientes paquetes cuando se instala medspacy :
Si descarga otros modelos, puede usarlos proporcionando el modelo en sí o el nombre del modelo a 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" }) Aquí hay un ejemplo simple que muestra cómo implementar y visualizar una tubería simple basada en reglas 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 ver ejemplos y explicaciones más detallados de cada componente, consulte la carpeta de cuadernos.
Si usa Medspacy en su trabajo, ¡considere citar nuestro artículo! Presentado en el Simposio Anual de AMIA 2021, preimpresión disponible en 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"
}
}
Aquí hay algunos enlaces a proyectos o tutoriales que usan MedSpacy. Si tiene un proyecto que usa Medspacy que le gustaría usar, ¡háganoslo saber!
notebooks/nlp-*.ipynb