التعرّف على الكيانات المسماة (NER)
لين الحين، أغلب تركيزنا كان على مهمة وحدة في معالجة اللغة الطبيعية (Natural Language Processing — NLP)، وهي التصنيف. بس فيه مهام ثانية تقدر الشبكات العصبية تنجزها، ومنها التعرّف على الكيانات المسماة (Named Entity Recognition — NER). هالمهمة تتعرّف على كيانات محددة داخل النص، مثل الأماكن، وأسماء الأشخاص، والفترات الزمنية، والصيغ الكيميائية، وغيرها.
مثال على استخدام NER
افترضوا إننا نبي نطوّر روبوت محادثة يفهم اللغة الطبيعية، مثل Amazon Alexa أو Google Assistant. روبوت المحادثة الذكي يحاول يفهم وش يبي المستخدم عن طريق تصنيف نص الجملة المدخلة. ناتج التصنيف يسمّى القصد (intent)، وهو اللي يحدد وش الإجراء اللي المفروض يسويه الروبوت.
وصف الشكل: مخطط يوضح كيف يستخرج روبوت المحادثة القصد والكيانات المسماة من طلب المستخدم
بس المستخدم ممكن يذكر معطيات داخل عبارته. مثلًا، إذا سأل عن الطقس، ممكن يحدد مكان أو تاريخ. هنا لازم الروبوت يفهم هالكيانات ويعبّي خانات المعطيات المناسبة قبل ما ينفّذ الإجراء. وهذا بالضبط دور NER.
✅ مثال ثاني: تحليل الأوراق العلمية الطبية. من أهم الأشياء اللي نبي نلقاها مصطلحات طبية محددة، مثل الأمراض والمواد الطبية. عدد بسيط من أسماء الأمراض ممكن نطلّعه بالبحث عن جزء مطابق من النص، لكن الكيانات الأعقد—مثل المركّبات الكيميائية وأسماء الأدوية—تحتاج أسلوب أقوى.
NER بوصفه تصنيفًا للرموز
نماذج NER هي أساسًا نماذج لتصنيف الرموز (token classification). يعني إننا نقرر، لكل رمز في الإدخال، هل ينتمي لكيان أو لا؛ وإذا كان ينتمي، نحدد فئة هالكيان.
خلونا ناخذ عنوان الورقة التالي:
Tricuspid valve regurgitation and lithium carbonate toxicity in a newborn infant.
الكيانات هنا هي:
- Tricuspid valve regurgitation مرض (
DIS)
- lithium carbonate مادة كيميائية (
CHEM)
- toxicity مرض بعد (
DIS)
لاحظوا إن الكيان الواحد ممكن يمتد على أكثر من رمز. وفي هالمثال عندنا كيانان جايين وراء بعض، فلازم نفرّق بينهم. عشان كذا، المعتاد إننا نستخدم فئتين لكل نوع كيان: فئة لأول رمز في الكيان، وغالبًا تبدأ بالبادئة B- اختصارًا لـ beginning؛ وفئة لبقية رموزه، وتبدأ بـ I- اختصارًا لـ inner token. ونستخدم O لكل الرموز other اللي ما تنتمي لأي كيان. هالطريقة اسمها وسم BIO، وتنسمّى بعد IOB. بعد الوسم، يصير العنوان كذا:
بما إننا نبي تطابقًا واحدًا لواحد بين الرموز والفئات، نقدر ندرّب نموذج شبكة عصبية متعدد إلى متعدد (many-to-many) من النوع اللي بأقصى يمين الصورة:
وصف الشكل: صورة توضّح الأنماط الشائعة للشبكات العصبية المتكررة.
الصورة من هالتدوينة لـ Andrej Karpathy. نماذج NER اللي تصنّف الرموز تقابل بنية الشبكة الموجودة بأقصى يمين الصورة.
تدريب نماذج NER
بما إن نموذج NER هو نموذج لتصنيف الرموز، نقدر نستخدم الشبكات العصبية المتكررة (Recurrent Neural Networks — RNNs) اللي أخذناها قبل. في هالحالة، كل كتلة من الشبكة المتكررة ترجع معرّف الرمز. دفتر المثال اللي تحت يوضّح لنا كيف ندرّب شبكة الذاكرة طويلة وقصيرة المدى (Long Short-Term Memory — LSTM) لتصنيف الرموز.
✍️ دفتر المثال: NER
كمّلوا التعلّم في الدفتر التالي:
الخلاصة
نموذج NER هو نموذج لتصنيف الرموز؛ لذلك نقدر نستخدمه عشان نتعرّف على كيانات محددة داخل النص، مثل الأماكن، والأسماء، والتواريخ. وتصنيف الرموز من المهام الشائعة جدًا في NLP، وهذا يخلي NER أداة مهمة في تطبيقات NLP العملية.
🚀 التحدي
أنجزوا التكليف المرتبط تحت لتدريب نموذج يتعرّف على المصطلحات الطبية، وبعدها جرّبوه على مجموعة البيانات المختلفة اللي تختارونها.
المراجعة والتعلّم الذاتي
اقرؤوا تدوينة The Unreasonable Effectiveness of Recurrent Neural Networks، وكملوا على قسم القراءة الإضافية فيها عشان تعمّقون فهمكم.
في تكليف هالدرس، بتدرّبون نموذجًا للتعرّف على الكيانات الطبية. تقدرون تبدؤون بنموذج LSTM مثل ما شرحنا في الدرس، وبعدها تنتقلون لنموذج المحوّل BERT. كل التفاصيل موجودة في التعليمات.