"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > d[IA]gnosis: توجيه التشخيص باستخدام نماذج Python وLLM المضمنة

d[IA]gnosis: توجيه التشخيص باستخدام نماذج Python وLLM المضمنة

تم النشر بتاريخ 2024-09-02
تصفح:599

في المقالة السابقة قدمنا ​​تطبيق d[IA]gnosis الذي تم تطويره لدعم ترميز التشخيصات في الإصدار العاشر من التصنيف الدولي للأمراض. سنرى في هذه المقالة كيف توفر لنا InterSystems IRIS for Health الأدوات اللازمة لتوليد المتجهات من قائمة رموز ICD-10 باستخدام نموذج لغة مدرب مسبقًا وتخزينه والبحث اللاحق عن أوجه التشابه في كل هذه المتجهات المولدة .

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

مقدمة

إحدى الميزات الرئيسية التي ظهرت مع تطوير نماذج الذكاء الاصطناعي هي ما نعرفه باسم RAG (جيل الاسترجاع المعزز) الذي يسمح لنا بتحسين نتائج نماذج LLM من خلال دمج السياق في النموذج. حسنًا، في مثالنا، يتم توفير السياق من خلال مجموعة تشخيصات الإصدار العاشر من التصنيف الدولي للأمراض، ولاستخدامها يجب علينا أولاً توجيهها.

كيف يمكن توجيه قائمة التشخيصات لدينا؟

محولات الجملة ولغة Python المضمنة

لإنشاء المتجهات استخدمنا مكتبة Python SentenceTransformers التي تسهل إلى حد كبير تحويل النصوص المجانية من النماذج المدربة مسبقًا. من موقعهم الإلكتروني:

محولات الجملة (المعروف أيضًا باسم SBERT) هي وحدة Python للوصول إلى نماذج تضمين النصوص والصور الحديثة واستخدامها وتدريبها. يمكن استخدامه لحساب التضمينات باستخدام نماذج Sentence Transformer (البدء السريع) أو لحساب درجات التشابه باستخدام نماذج Cross-Encoder (البدء السريع). يؤدي هذا إلى فتح مجموعة واسعة من التطبيقات، بما في ذلك البحث الدلالي، والتشابه النصي الدلالي، واستخراج إعادة الصياغة.

من بين جميع النماذج التي طورها مجتمع SentenceTransformers، وجدنا BioLORD-2023-M، وهو نموذج تم تدريبه مسبقًا والذي سيولد متجهات ذات 786 بُعدًا.

تم تدريب هذا النموذج باستخدام BioLORD، وهي استراتيجية جديدة للتدريب المسبق لإنتاج تمثيلات ذات معنى للجمل السريرية والمفاهيم الطبية الحيوية.

تعمل المنهجيات الحديثة على تعظيم التشابه في تمثيل الأسماء التي تشير إلى نفس المفهوم، ومنع الانهيار من خلال التعلم المتباين. ومع ذلك، نظرًا لأن الأسماء الطبية الحيوية لا تشرح نفسها دائمًا، فإنها تؤدي أحيانًا إلى تمثيلات غير دلالية.

تتغلب BioLORD على هذه المشكلة من خلال تأسيس تمثيلاتها المفاهيمية باستخدام التعريفات، بالإضافة إلى الأوصاف القصيرة المستمدة من رسم بياني معرفي متعدد العلاقات يتكون من علم الوجود الطبي الحيوي. بفضل هذا الأساس، ينتج نموذجنا المزيد من تمثيلات المفاهيم الدلالية التي تتطابق بشكل أوثق مع البنية الهرمية للأنطولوجيات. ينشئ BioLORD-2023 حالة جديدة من الفن لتشابه النص في كل من الجمل السريرية (MedSTS) والمفاهيم الطبية الحيوية (EHR-Rel-B).

كما ترون في تعريفه، تم تدريب هذا النموذج مسبقًا باستخدام المفاهيم الطبية التي ستكون مفيدة عند توجيه كل من رموز ICD-10 والنص المجاني.

بالنسبة لمشروعنا، سنقوم بتنزيل هذا النموذج لتسريع إنشاء المتجهات:

if not os.path.isdir('/shared/model/'):
    model = sentence_transformers.SentenceTransformer('FremyCompany/BioLORD-2023-M')            
    model.save('/shared/model/')

بمجرد انضمامنا إلى فريقنا، يمكننا إدخال النصوص لتوجيهها في القوائم لتسريع العملية، دعونا نرى كيف نقوم بتوجيه رموز ICD-10 التي سجلناها مسبقًا في ENCODER.Object.Codes فصل.

st = iris.sql.prepare("SELECT TOP 50 CodeId, Description FROM ENCODER_Object.Codes WHERE VectorDescription is null ORDER BY ID ASC ")
resultSet = st.execute()
df = resultSet.dataframe()

if (df.size > 0):
    model = sentence_transformers.SentenceTransformer("/shared/model/")
    embeddings = model.encode(df['description'].tolist(), normalize_embeddings=True)

    df['vectordescription'] = embeddings.tolist()

    stmt = iris.sql.prepare("UPDATE ENCODER_Object.Codes SET VectorDescription = TO_VECTOR(?,DECIMAL) WHERE CodeId = ?")
    for index, row in df.iterrows():
        rs = stmt.execute(str(row['vectordescription']), row['codeid'])
else:
    flagLoop = False

كما ترون، نقوم أولاً باستخراج الرموز المخزنة في جدول رموز ICD-10 الخاص بنا والتي لم نقم بتحويلها بعد ولكن قمنا بتسجيلها في خطوة سابقة بعد استخراجها من ملف CSV، ثم نقوم باستخراج قائمة الأوصاف لتوجيه واستخدام مكتبة Python sentence_transformers، سنقوم باستعادة نموذجنا وإنشاء التضمينات المرتبطة به.

أخيرًا، سنقوم بتحديث كود ICD-10 بالوصف الموجه عن طريق تنفيذ التحديث. كما ترون، الأمر لتوجيه النتيجة التي أرجعها النموذج هو أمر SQL TO_VECTOR في IRIS.

استخدامه في IRIS

حسنًا، لدينا رمز Python الخاص بنا، لذلك نحتاج فقط إلى تغليفه في فئة تمتد Ens.BusinessProcess وإدراجه في إنتاجنا، ثم توصيله بخدمة الأعمال المسؤولة عن استرداده ملف CSV وهذا كل شيء!

دعونا نلقي نظرة على الشكل الذي سيبدو عليه هذا الكود في إنتاجنا:

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

كما ترون، لدينا خدمة الأعمال لدينا مع محول EnsLib.File.InboundAdapter الذي سيسمح لنا بجمع ملف التعليمات البرمجية وإعادة توجيهه إلى عملية الأعمال لدينا حيث سنقوم بتنفيذ جميع عمليات النقل والتخزين، مما يعطينا مجموعة من السجلات مثل ما يلي:

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

الآن سيكون تطبيقنا جاهزًا لبدء البحث عن التطابقات المحتملة مع النصوص التي نرسلها إليه!

في المقال التالي...

سنعرض في المقالة التالية كيف يتم دمج الواجهة الأمامية للتطبيق التي تم تطويرها في Angular 17 مع إنتاجنا في IRIS for Health وكيف يستقبل IRIS النصوص المراد تحليلها، ويوجهها ويبحث عن أوجه التشابه في ICD-10 جدول الكود.

لا تفوتها!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/intersystems/diagnosis-vectorizing-diagnostics-with-embedded-python-and-llm-models-3n8a?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3