Bibliothèque pour la PNL clinique avec spacy.

Medspacy est actuellement en version bêta.
Medspacy est une bibliothèque d'outils pour effectuer des tâches cliniques de traitement des PNL et de texte avec le cadre populaire de Spacy. Le package medspacy rassemble un certain nombre d'autres packages, chacun mettant en œuvre des fonctionnalités spécifiques pour un traitement de texte clinique commun spécifique au domaine clinique, tel que la segmentation des phrases, l'analyse contextuelle et l'affirmation d'attribut, et la détection de section.
medspacy est modularisé de sorte que chaque composant peut être utilisé indépendamment. Toute medspacy est conçue pour être utilisée dans le cadre d'un pipeline de traitement spacy . Chacun des modules suivants est disponible dans le cadre de medspacy :
medspacy.preprocess : Prétraitement destructeur pour modifier le texte clinique avant le traitementmedspacy.sentence_splitter : segmentation clinique des phrasesmedspacy.ner : Utilitaires pour extraire les concepts du texte cliniquemedspacy.context : implémentation du contexte de détection des modificateurs sémantiques et des attributs des entités, y compris la négation et l'incertitudemedspacy.section_detection : Détection et segmentation de la section cliniquemedspacy.postprocess : Cadre flexible pour modifier et supprimer les entités extraitesmedspacy.io : Utilitaires pour convertir les textes traités en données structurées et interagir avec les bases de donnéesmedspacy.visualization : Utilitaires pour visualiser les concepts et les relations extraits du texteSpacyQuickUMLS : Extraction du concept UMLS Compatible avec Spacy et MedSpacy implémentées par notre fourche de QuickUMLS. Plus de détails sur ce composant, comment l'utiliser, comment générer des ressources UMLS au-delà de l'échantillon de petit UMLS peut être trouvé dans ce cahier.Les travaux futurs pourraient inclure les E / S, l'extraction des relations et les modèles cliniques pré-formés.
Quoi de neuf dans 1.3.1:
requirements.txt et mis à jour medSpacyDependces pour prendre en charge les versions ultérieures de Spacy jusqu'à 3.8.2.Au 10/2/2021 (version 0.2.0.0), MedSpacy prend en charge Spacy V3
En mai 2024, Medspace a été restructuré pour permettre la distribution de règles et de ressources en langues en plus de l'anglais.
Veuillez noter que certaines langues sont effectivement "vides" du point de vue de Medspacy. Nous avons eu des demandes pour permettre certaines de ces langues, mais nous n'avons aucune règle puisque l'équipe MedSpacy travaille principalement en anglais. Veuillez consulter le tableau ci-dessous pour un résumé de ce qui est disponible dans chaque langue, car ils varient chacun. Au moment d'écrire ces lignes, les langues ont été triées dans l'ordre des règles / maturité qu'ils soutiennent actuellement. Si vous lisez ceci et que vous avez des règles ou si vous souhaitez développer des règles dans une autre langue, veuillez envisager de contribuer. Nous pouvons vous aider à intégrer votre travail.
| Langue | Règles de contexte | Règles de section | Échantillon QuickUMLS (et test unitaire) |
|---|---|---|---|
| Anglais (en) | Oui | Oui | Oui |
| Français (FR) | Oui | Très peu | Oui |
| Néerlandais (NL) | Oui | Non | Non |
| Espagnol (ES) | Non | Très peu | Oui |
| Polon (PL) | Non | Non | Non |
| Portugais (PT) | Non | Non | Oui |
| Italien (it) | Non | Non | Oui |
| Allemand (DE) | Non | Non | Non |
Concernant les règles disponibles dans ces langues, quelques citations à mentionner:
Vous pouvez installer medspacy à l'aide de setup.py :
python setup.py installOu avec pip:
pip install medspacyPour installer une version précédente qui utilise Spacy 2:
pip install medspacy==medspacy 0.1.0.2 Les packages suivants sont nécessaires et installés lorsque medspacy est installé:
Si vous téléchargez d'autres modèles, vous pouvez les utiliser en fournissant le modèle lui-même ou le nom du modèle à 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" }) Voici un exemple simple montrant comment implémenter et visualiser un pipeline basé sur des règles à l'aide de 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: 
Pour des exemples plus détaillés et des explications de chaque composant, consultez le dossier des cahiers.
Si vous utilisez Medspacy dans votre travail, pensez à citer notre papier! Présenté au Symposium annuel de l'AMIA 2021, préparation disponible sur 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"
}
}
Voici quelques liens vers des projets ou des tutoriels qui utilisent Medspacy. Si vous avez un projet qui utilise Medspacy que vous souhaitez utiliser, faites-le nous savoir!
notebooks/nlp-*.ipynb