مكتبة لـ NLP السريري مع Spacy.

Medspacy حاليا في بيتا.
Medspacy هي مكتبة من الأدوات لأداء مهام المعالجة السريرية ومهام معالجة النص مع إطار Spacy الشهير. تجمع حزمة 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 متوافق مع Spacy و Medspacy التي تنفذها شوكة Quickumls لدينا. يمكن العثور على مزيد من التفاصيل حول هذا المكون ، وكيفية استخدامه ، وكيفية إنشاء موارد UMLS خارج عينة UMLS الصغيرة في دفتر الملاحظات هذا.يمكن أن يشمل العمل المستقبلي الإدخال/الإخراج ، واستخراج العلاقات ، والنماذج السريرية التي تم تدريبها مسبقًا.
ما الجديد في 1.3.1:
requirements.txt إعادة تشكيلها. TXT وتحديث MedSpaceDependencies لدعم الإصدارات اللاحقة من Spacy حتى 3.8.2.اعتبارًا من 10/2/2021 (الإصدار 0.2.0.0) ، يدعم MedSpacy Spacy V3
اعتبارًا من مايو 2024 ، تمت إعادة هيكلة Medspacy للسماح بتوزيع القواعد والموارد باللغات إلى جانب اللغة الإنجليزية.
يرجى ملاحظة أن بعض اللغات "فارغة" بشكل فعال من منظور medspacy. لقد تلقينا طلبات للسماح ببعض هذه اللغات ، لكن ليس لدينا قواعد لأن فريق MedSpacy يعمل بشكل أساسي باللغة الإنجليزية. يرجى الاطلاع على الجدول أدناه للحصول على ملخص لما هو متاح في كل لغة ، حيث يختلف كل منها. اعتبارًا من كتابة هذه السطور ، تم فرز اللغات من أجل القواعد/الاستحقاق التي تدعمها حاليًا. إذا كنت تقرأ هذا وكان لديك قواعد أو ترغب في تطوير قواعد بلغة أخرى ، فيرجى التفكير في المساهمة. يمكننا المساعدة في دمج عملك.
| لغة | قواعد السياق | قواعد القسم | عينة Quickumls (واختبار الوحدة) |
|---|---|---|---|
| اللغة الإنجليزية (en) | نعم | نعم | نعم |
| الفرنسية (الاب) | نعم | عدد قليل جدا | نعم |
| الهولندي (NL) | نعم | لا | لا |
| الإسبانية (ES) | لا | عدد قليل جدا | نعم |
| البولندية (PL) | لا | لا | لا |
| البرتغالي (حزب العمال) | لا | لا | نعم |
| إيطالي (هو) | لا | لا | نعم |
| الألمانية (دي) | لا | لا | لا |
فيما يتعلق بالقواعد المتوفرة في هذه اللغات ، بعض الاستشهادات التي يجب ذكرها:
يمكنك تثبيت medspacy باستخدام setup.py :
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: 
لمزيد من الأمثلة والتفسيرات التفصيلية لكل مكون ، راجع مجلد دفاتر الملاحظات.
إذا كنت تستخدم medspacy في عملك ، ففكر في الاستشهاد بالورقة! قدمت في ندوة AMIA السنوية 2021 ، Preprint متاح على 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