ห้องสมุดสำหรับคลินิก NLP ที่มี Spacy

ปัจจุบัน Medspacy อยู่ในช่วงเบต้า
Medspacy เป็นห้องสมุดเครื่องมือสำหรับการดำเนินงาน 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 Concept Extraction เข้ากันได้กับ Spacy และ Medspacy ที่ใช้โดยส้อมของ Quickumls ของเรา รายละเอียดเพิ่มเติมเกี่ยวกับองค์ประกอบนี้วิธีใช้วิธีการสร้างทรัพยากร UMLS นอกเหนือจากตัวอย่าง UMLS ขนาดเล็กสามารถพบได้ในสมุดบันทึกนี้งานในอนาคตอาจรวมถึง I/O การสกัดสัมพันธ์และแบบจำลองทางคลินิกที่ผ่านการฝึกอบรมมาก่อน
มีอะไรใหม่ใน 1.3.1:
requirements.txt ใหม่ TXT และการอัพเดท MedSpacyDependencies เพื่อรองรับเครื่องงอเวอร์ชันในภายหลังถึง 3.8.2ณ วันที่ 10/2/2021 (เวอร์ชัน 0.2.0.0) Medspacy รองรับ Spacy V3
ณ เดือนพฤษภาคม 2567 Medspacy ได้รับการปรับโครงสร้างเพื่ออนุญาตให้มีการแจกจ่ายกฎและทรัพยากรในภาษานอกเหนือจากภาษาอังกฤษ
โปรดทราบว่าบางภาษามีประสิทธิภาพ "ว่าง" อย่างมีประสิทธิภาพจากมุมมองของ Medspacy เรามีการร้องขอให้อนุญาตภาษาเหล่านี้บางภาษา แต่เราไม่มีกฎเนื่องจากทีมงาน Medspacy ทำงานเป็นภาษาอังกฤษเป็นหลัก โปรดดูตารางด้านล่างสำหรับบทสรุปของสิ่งที่มีอยู่ในแต่ละภาษาเนื่องจากแต่ละคนแตกต่างกันไป จากการเขียนนี้ภาษาได้รับการจัดเรียงตามลำดับของกฎ/วุฒิภาวะที่พวกเขาสนับสนุนในปัจจุบัน หากคุณกำลังอ่านสิ่งนี้และคุณมีกฎหรือต้องการพัฒนากฎในภาษาอื่นโปรดพิจารณาการมีส่วนร่วม เราสามารถช่วยให้งานของคุณรวมเข้าด้วยกัน
| ภาษา | กฎบริบท | กฎส่วน | ตัวอย่าง Quickumls (และการทดสอบหน่วย) |
|---|---|---|---|
| ภาษาอังกฤษ (en) | ใช่ | ใช่ | ใช่ |
| ฝรั่งเศส (FR) | ใช่ | น้อยมาก | ใช่ |
| ดัตช์ (NL) | ใช่ | เลขที่ | เลขที่ |
| สเปน (ES) | เลขที่ | น้อยมาก | ใช่ |
| โปแลนด์ (PL) | เลขที่ | เลขที่ | เลขที่ |
| โปรตุเกส (PT) | เลขที่ | เลขที่ | ใช่ |
| อิตาลี (มัน) | เลขที่ | เลขที่ | ใช่ |
| เยอรมัน (DE) | เลขที่ | เลขที่ | เลขที่ |
เกี่ยวกับกฎที่มีอยู่ในภาษาเหล่านี้มีการอ้างอิงสองสามข้อที่กล่าวถึง:
คุณสามารถติดตั้ง 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 มีการพิมพ์ล่วงหน้าบน 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