مقدمة في نماذج التضمين النصي - كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: تطبيقات النماذج اللغوية في معالجة النصوص

📚 معلومات الصفحة

الكتاب: كتاب الذكاء الإصطناعي - الصف 12 - الفصل 1 | المادة: الذكاء الإصطناعي | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: تمارين وأسئلة

مستوى الصعوبة: متوسط

📝 ملخص الصفحة

تتناول هذه الصفحة تطبيقين عمليين لنماذج التضمين النصي في معالجة اللغة الطبيعية باستخدام Python. في القسم الأول، يتم استخدام نموذج SBERT (تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات) لحساب تضمينات المستندات النصية المخزنة في مصفوفة NumPy، ثم تصوير هذه التضمينات في فضاء ثنائي الأبعاد باستخدام أداة TSNEVisualizer لتوضيح التجميعات بناءً على التسميات.

في القسم الثاني، يتم استخدام نموذج Word2Vec لاستبدال الكلمات في جملة معينة بكلمات مشابهة بناءً على التشابه الدلالي، مما يوضح كيفية تطبيق النماذج اللغوية المسبقة التدريب في مهام توليد النصوص أو تحسينها.

يقدم المحتوى أمثلة برمجية عملية تتطلب إكمال الأجزاء الناقصة، مما يساعد الطلاب على فهم كيفية دمج المكتبات مثل sentence_transformers و gensim في مشاريع معالجة النصوص، مع التركيز على الجوانب التطبيقية للذكاء الاصطناعي في تحليل البيانات النصية.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

4

نوع: QUESTION

لديك مصفوفة NumPy تدعى 'Docs' تتضمن مستندًا نصيًا واحدًا في كل صف. لديك كذلك مصفوفة labels تتضمن قيم كل مستند في Docs. أكمل المقطع البرمجي التالي بحيث تستخدم نموذج تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات (SBERT) المدرب مسبقًا لحساب تضمينات كل الوثائق في Docs. ثم استخدم أداة TSNEVisualizer لتضمين المجاور العشوائي الموزع على شكل T لتصوير التضمينات في الفضاء ثنائي الأبعاد، باستخدام لون مختلف لكل واحد من القيم الأربعة المحتملة: from sentence_transformers import ____________________ from ____________________ import TSNEVisualizer model = ____________________ ('all-MiniLM- L6-v2') # loads the pre-trained model. docs_emb = model.____________________ (Docs) # embeds the docs tsne = ____________________ (____________________ = ['blue', 'green', 'red', 'yellow']) tsne.____________________ (____________________) tsne.show();

5

نوع: QUESTION

أكمل المقطع البرمجي التالي بحيث تستخدم نموذج الكلمة إلى المتجه (Word2Vec) لاستبدال كل كلمة في إحدى الجمل بأخرى تكون أكثر شبها بها: import gensim.downloader as ____________________ import re model_wv = ____________________ .____________________ ('word2vec-google-news-300') old_sentence='My name is John and I like basketball.' new_sentence='' for word in re.____________________ (r'\b\w+\b',old_sentence.lower()): ____________________ replacement=model_wv.____________________ (positive=['apple'], ____________________ =1)[0] new_sentence+=____________________ sentence=new_sentence.strip()

نوع: METADATA

وزارة التعليم Ministry of Education 171 2023 - 1445

📄 النص الكامل للصفحة

--- SECTION: 4 --- لديك مصفوفة NumPy تدعى 'Docs' تتضمن مستندًا نصيًا واحدًا في كل صف. لديك كذلك مصفوفة labels تتضمن قيم كل مستند في Docs. أكمل المقطع البرمجي التالي بحيث تستخدم نموذج تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات (SBERT) المدرب مسبقًا لحساب تضمينات كل الوثائق في Docs. ثم استخدم أداة TSNEVisualizer لتضمين المجاور العشوائي الموزع على شكل T لتصوير التضمينات في الفضاء ثنائي الأبعاد، باستخدام لون مختلف لكل واحد من القيم الأربعة المحتملة:from sentence_transformers import ____________________from ____________________ import TSNEVisualizer model = ____________________ ('all-MiniLML6-v2') # loads the pre-trained model.docs_emb = model.____________________ (Docs) # embeds the docs tsne = ____________________ (____________________ = ['blue', 'green', 'red', 'yellow'])tsne.____________________ (____________________)tsne.show();--- SECTION: 5 --- أكمل المقطع البرمجي التالي بحيث تستخدم نموذج الكلمة إلى المتجه (Word2Vec) لاستبدال كل كلمة في إحدى الجمل بأخرى تكون أكثر شبها بها:import gensim.downloader as ____________________ import re model_wv = ____________________ .____________________ ('word2vec-google-news-300')old_sentence='My name is John and I like basketball.' new_sentence=''for word in re.____________________ (r'\b\w+\b',old_sentence.lower()): ____________________replacement=model_wv.____________________ (positive=['apple'], ____________________ =1)[0]new_sentence+=____________________sentence=new_sentence.strip()2023 - 1445

✅ حلول أسئلة الكتاب الرسمية

عدد الأسئلة: 2

سؤال 4: لديك مصفوفة NumPy تدعى 'Docs' تتضمن مستندًا نصيًا واحدًا في كل صف. لديك كذلك مصفوفة labels تتضمن قيم كل مستند في Docs. أكمل المقطع البرمجي التالي بحيث تستخدم نموذج تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات (SBERT) المدرب مسبقًا لحساب تضمينات كل الوثائق في Docs. ثم استخدم أداة TSNEVisualizer لتضمين المجاور العشوائي الموزع على شكل T لتصوير التضمينات في الفضاء ثنائي الأبعاد، باستخدام لون مختلف لكل واحد من القيم الأربعة المحتملة: from sentence_transformers import ____________________ from ____________________ import TSNEVisualizer model = ____________________ ('all-MiniLM- L6-v2') # loads the pre-trained model. docs_emb = model.____________________ (Docs) # embeds the docs tsne = ____________________ (____________________ = ['blue', 'green', 'red', 'yellow']) tsne.____________________ (____________________, ____________________) tsne.show();

الإجابة: 1: SentenceTransformer 2: yellowbrick.text 3: SentenceTransformer 4: encode 5: TSNEVisualizer 6: colors 7: fit 8: docs_emb 9: labels

خطوات الحل:

  1. **الخطوة 1 (المفهوم):** هذا السؤال يتعلق بمعالجة النصوص باستخدام الذكاء الاصطناعي. لدينا مستندات نصية مخزنة في مصفوفة 'Docs'، ولكل مستند تسمية (label) تخبرنا عن فئته. نريد تحويل هذه النصوص إلى أرقام (تضمينات) باستخدام نموذج SBERT، ثم تصويرها في بعدين باستخدام أداة TSNE.
  2. **الخطوة 2 (استيراد المكتبات):** لنبدأ باستيراد المكتبات المطلوبة: - من مكتبة sentence_transformers نستورد SentenceTransformer لتحميل النموذج. - من مكتبة yellowbrick.text نستورد TSNEVisualizer لإنشاء التصور.
  3. **الخطوة 3 (تحميل النموذج وتضمين النصوص):** نحمل النموذج المدرب مسبقاً 'all-MiniLM-L6-v2' باستخدام SentenceTransformer. ثم نحول النصوص في مصفوفة Docs إلى تضمينات رقمية باستخدام دالة encode في النموذج.
  4. **الخطوة 4 (إنشاء التصور):** ننشئ كائن TSNEVisualizer ونحدد له أربعة ألوان (الأزرق، الأخضر، الأحمر، الأصفر) للقيم الأربع المحتملة في labels. نطبق التصور على التضمينات docs_emb والتسميات labels باستخدام دالة fit. أخيراً نعرض النتيجة باستخدام show().
  5. **الخطوة 5 (النتيجة):** إذن الإجابة هي: 1: SentenceTransformer 2: yellowbrick.text 3: SentenceTransformer 4: encode 5: TSNEVisualizer 6: colors 7: fit 8: docs_emb 9: labels

سؤال 5: أكمل المقطع البرمجي التالي بحيث تستخدم نموذج الكلمة إلى المتجه (Word2Vec) لاستبدال كل كلمة في إحدى الجمل بأخرى تكون أكثر شبها بها: import gensim.downloader as ____________________ import re model_wv = ____________________ .____________________ ('word2vec-google-news-300') old_sentence='My name is John and I like basketball.' new_sentence='' for word in re.____________________ (r'\b\w+\b',old_sentence.lower()): ____________________ replacement=model_wv.____________________ (positive=['apple'], ____________________ =1)[0] new_sentence+=____________________ sentence=new_sentence.strip()

الإجابة: 1: api 2: api 3: load 4: findall 5: most_similar 6: topn 7: ' ' + replacement

خطوات الحل:

  1. **الخطوة 1 (المفهوم):** هذا السؤال يتعلق بنماذج تمثيل الكلمات (Word Embeddings). نريد تحميل نموذج Word2Vec المدرب مسبقاً، ثم استبدال كل كلمة في جملة بكلمة أخرى مشابهة لها حسب النموذج.
  2. **الخطوة 2 (استيراد المكتبات وتحميل النموذج):** نستورد مكتبة gensim.downloader باسم api للوصول للنماذج المدربة. نحمل نموذج 'word2vec-google-news-300' باستخدام api.load().
  3. **الخطوة 3 (معالجة الجملة):** نبدأ بجملة نصية. نستخدم تعبيراً منتظماً (regex) لتقسيم الجملة إلى كلمات منفصلة. لكل كلمة، نبحث عن الكلمة الأكثر شبهاً بكلمة 'apple' في النموذج باستخدام دالة most_similar مع تحديد أن نريد نتيجة واحدة فقط (topn=1).
  4. **الخطوة 4 (بناء الجملة الجديدة):** نضيف الكلمة البديلة (replacement) إلى الجملة الجديدة مع إضافة مسافة قبلها. في النهاية نزيل المسافة الزائدة من بداية الجملة باستخدام strip().
  5. **الخطوة 5 (النتيجة):** إذن الإجابة هي: 1: api 2: api 3: load 4: findall 5: most_similar 6: topn 7: ' ' + replacement

📝 أسئلة اختبارية

عدد الأسئلة: 13

سؤال 5: new_sentence+=____________________

  • أ) replacement + ' '
  • ب) word + ' '
  • ج) replacement
  • د) word

الإجابة الصحيحة: replacement + ' '

الشرح: يتم إضافة الكلمة المستبدلة مع مسافة إلى الجملة الجديدة

تلميح: ما الذي يجب إضافته إلى new_sentence؟

سؤال 4: tsne = ____________________ (____________________ = ['blue', 'green', 'red', 'yellow'])

  • أ) TSNEVisualizer, colors
  • ب) TSNE, colors
  • ج) Visualizer, palette
  • د) TSNEVisualizer, palette

الإجابة الصحيحة: TSNEVisualizer, colors

الشرح: يتم إنشاء كائن TSNEVisualizer مع معلمة colors لتحديد الألوان

تلميح: ما هو اسم الفئة والبارامتر المستخدم لتحديد الألوان؟

سؤال 4: docs_emb = model.____________________ (Docs) # embeds the docs

  • أ) encode
  • ب) embed
  • ج) transform
  • د) predict

الإجابة الصحيحة: encode

الشرح: دالة encode في نموذج SentenceTransformer تحول المستندات إلى تضمينات

تلميح: ما اسم الدالة التي تحول النص إلى تمثيلات متجهة؟

سؤال 4: لديك مصفوفة NumPy تدعى 'Docs' تتضمن مستندًا نصيًا واحدًا في كل صف. لديك كذلك مصفوفة labels تتضمن قيم كل مستند في Docs. أكمل المقطع البرمجي التالي بحيث تستخدم نموذج تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات (SBERT) المدرب مسبقًا لحساب تضمينات كل الوثائق في Docs. ثم استخدم أداة TSNEVisualizer لتضمين المجاور العشوائي الموزع على شكل T لتصوير التضمينات في الفضاء ثنائي الأبعاد، باستخدام لون مختلف لكل واحد من القيم الأربعة المحتملة:

الإجابة الصحيحة: انظر الكود المكتمل أدناه

الشرح: هذا سؤال برمجي يتطلب إكمال الكود باستخدام مكتبة sentence_transformers و yellowbrick

تلميح: راجع وثائق مكتبة sentence_transformers و TSNEVisualizer

سؤال 5: أكمل المقطع البرمجي التالي بحيث تستخدم نموذج الكلمة إلى المتجه (Word2Vec) لاستبدال كل كلمة في إحدى الجمل بأخرى تكون أكثر شبها بها:

الإجابة الصحيحة: انظر الكود المكتمل أدناه

الشرح: هذا سؤال برمجي يتطلب إكمال الكود باستخدام مكتبة gensim ونموذج Word2Vec

تلميح: راجع وثائق مكتبة gensim ووظائف نموذج Word2Vec

سؤال 4: from sentence_transformers import ____________________

  • أ) SentenceTransformer
  • ب) SBERTModel
  • ج) TransformerEncoder
  • د) BERTModel

الإجابة الصحيحة: SentenceTransformer

الشرح: يجب استيراد فئة SentenceTransformer من مكتبة sentence_transformers

تلميح: ما هو اسم الفئة الرئيسية في مكتبة sentence_transformers؟

سؤال 4: from ____________________ import TSNEVisualizer

  • أ) yellowbrick
  • ب) matplotlib
  • ج) seaborn
  • د) sklearn

الإجابة الصحيحة: yellowbrick

الشرح: TSNEVisualizer متوفر في مكتبة yellowbrick للتصور

تلميح: أي مكتبة تحتوي على TSNEVisualizer للتصور؟

سؤال 4: model = ____________________ ('all-MiniLML6-v2') # loads the pre-trained model.

  • أ) SentenceTransformer
  • ب) load_model
  • ج) SBERT
  • د) Transformer

الإجابة الصحيحة: SentenceTransformer

الشرح: يتم إنشاء نموذج SBERT باستخدام SentenceTransformer مع اسم النموذج المسبق التدريب

تلميح: ما هو اسم الفئة التي تم استيرادها سابقًا؟

سؤال 4: tsne.____________________ (____________________)

  • أ) fit_transform, docs_emb
  • ب) transform, docs
  • ج) fit, labels
  • د) plot, docs_emb

الإجابة الصحيحة: fit_transform, docs_emb

الشرح: دالة fit_transform تطبق تحليل T-SNE على التضمينات، وتأخذ docs_emb كمدخل

تلميح: ما هي الدالة التي تطبق التحويل والبيانات المدخلة؟

سؤال 5: import gensim.downloader as ____________________

  • أ) api
  • ب) loader
  • ج) downloader
  • د) models

الإجابة الصحيحة: api

الشرح: يتم استيراد وحدة التحميل في gensim باسم api

تلميح: ما هو الاسم الشائع لوحدة تحميل النماذج في gensim؟

سؤال 5: model_wv = ____________________ .____________________ ('word2vec-google-news-300')

  • أ) api, load
  • ب) gensim, download
  • ج) downloader, get
  • د) model, load

الإجابة الصحيحة: api, load

الشرح: يتم تحميل نموذج Word2Vec باستخدام api.load() مع اسم النموذج

تلميح: ما هو اسم الكائن والدالة المستخدمة لتحميل النموذج؟

سؤال 5: for word in re.____________________ (r'\b\w+\b',old_sentence.lower()):

  • أ) findall
  • ب) search
  • ج) match
  • د) split

الإجابة الصحيحة: findall

الشرح: دالة findall في مكتبة re تستخرج جميع الكلمات من الجملة

تلميح: ما اسم دالة regex التي تجد جميع التطابقات؟

سؤال 5: ____________________replacement=model_wv.____________________ (positive=['apple'], ____________________ =1)[0]

  • أ) if word in model_wv:, most_similar, topn
  • ب) if word:, similar, n
  • ج) for word:, get_similar, count
  • د) while word:, find_similar, limit

الإجابة الصحيحة: if word in model_wv:, most_similar, topn

الشرح: يجب التحقق من وجود الكلمة في النموذج أولاً، ثم استخدام most_similar مع بارامتر topn

تلميح: ما هي الجملة الشرطية والدالة وبارامتر العدد؟

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 5 بطاقة لهذه الصفحة

ما هي المكتبة أو الأداة التي تُستخدم في Python لاستخدام نماذج تمثيلات ترميز الجمل ثنائية الاتجاه من المحولات (SBERT)؟

الإجابة: المكتبة المستخدمة هي `sentence_transformers`.

الشرح: الاستيراد `from sentence_transformers import SentenceTransformer` يشير إلى استخدام هذه المكتبة لتحميل نماذج SBERT.

تلميح: ابحث عن استيراد `____ from sentence_transformers` في المقطع البرمجي.

ما هو اسم النموذج المدرب مسبقًا الذي تم تحميله في المقطع البرمجي لحساب التضمينات؟

الإجابة: النموذج المدرب مسبقًا هو 'all-MiniLML6-v2'.

الشرح: الكود `model = SentenceTransformer('all-MiniLML6-v2')` يحدد اسم النموذج الذي تم تحميله.

تلميح: انظر إلى المعلمة التي تم تمريرها إلى دالة تحميل النموذج.

ما هي الدالة التي تُستخدم لحساب تضمينات الوثائق (docs) باستخدام نموذج SentenceTransformer؟

الإجابة: الدالة المستخدمة هي `encode`.

الشرح: الكود `docs_emb = model.encode(Docs)` يستخدم الدالة `encode` لتحويل المستندات النصية إلى تضمينات رقمية.

تلميح: بعد تحميل النموذج، ما هي العملية التي تُطبق على الوثائق لحساب تمثيلاتها؟

ما هي الأداة المستخدمة لتصوير التضمينات في الفضاء ثنائي الأبعاد، وما هي تقنيتها؟

الإجابة: الأداة المستخدمة هي `TSNEVisualizer`، وتستخدم تقنية TSNE (تضمين المجاور العشوائي الموزع على شكل T).

الشرح: الكود `tsne = TSNEVisualizer(...)` يوضح أن `TSNEVisualizer` هي الأداة المستخدمة، وTSNE هي تقنية لتقليل الأبعاد.

تلميح: ابحث عن اسم الفئة التي يتم إنشاؤها لتصوير البيانات.

ما هي المكتبة المستخدمة في Python لتنزيل نماذج Word2Vec المدربة مسبقًا؟

الإجابة: المكتبة المستخدمة هي `gensim.downloader`.

الشرح: الاستيراد `import gensim.downloader as api` يشير إلى استخدام هذه المكتبة لتنزيل نماذج Word2Vec.

تلميح: ابحث عن الاستيراد الذي يحتوي على `downloader`.