التضمينات الدلالية، مثل Word2Vec وGloVe، تُعتبر في الواقع خطوة أولى نحو نمذجة اللغة - إنشاء نماذج تفهم (أو تمثل) طبيعة اللغة بطريقة ما.
الفكرة الرئيسية وراء نمذجة اللغة هي تدريبها على مجموعات بيانات غير معنونة بطريقة غير خاضعة للإشراف. هذا مهم لأن لدينا كميات هائلة من النصوص غير المعنونة المتاحة، بينما تكون كمية النصوص المعنونة محدودة دائمًا بسبب الجهد المطلوب لتصنيفها. غالبًا ما يمكننا بناء نماذج لغة تستطيع توقع الكلمات المفقودة في النص، لأن من السهل إخفاء كلمة عشوائية في النص واستخدامها كعينة تدريب.
في الأمثلة السابقة، استخدمنا تضمينات دلالية مُدربة مسبقًا، ولكن من المثير للاهتمام أن نرى كيف يمكن تدريب هذه التضمينات. هناك عدة أفكار يمكن استخدامها:
- نمذجة اللغة باستخدام N-Gram، حيث نتوقع رمزًا معينًا من خلال النظر إلى N رموز سابقة (N-gram).
-
كيس الكلمات المستمر (CBoW)، حيث نتوقع الرمز الأوسط
$W_0$ في سلسلة الرموز$W_{-N}$ , ...,$W_N$ . -
Skip-gram، حيث نتوقع مجموعة من الرموز المجاورة {$W_{-N},\dots, W_{-1}, W_1,\dots, W_N$} من الرمز الأوسط
$W_0$ .
صورة مأخوذة من هذه الورقة البحثية
واصل التعلم من خلال دفاتر الملاحظات التالية:
في الدرس السابق، رأينا أن تضمينات الكلمات تعمل بشكل مذهل! الآن نعلم أن تدريب تضمينات الكلمات ليس مهمة معقدة جدًا، ويجب أن نكون قادرين على تدريب تضمينات الكلمات الخاصة بنا للنصوص المتخصصة إذا لزم الأمر.
- الدرس الرسمي لـ PyTorch حول نمذجة اللغة.
- الدرس الرسمي لـ TensorFlow حول تدريب نموذج Word2Vec.
- استخدام إطار العمل gensim لتدريب التضمينات الأكثر استخدامًا في بضعة أسطر من الكود موضح في هذه الوثيقة.
في المختبر، نتحداك لتعديل الكود من هذا الدرس لتدريب نموذج Skip-Gram بدلاً من CBoW. اقرأ التفاصيل
