{"id":"l-ml-5-3","courseId":"ml-crash-course","lang":"ar","kind":"lesson","summary":"اشرح ما هو النموذج اللغوي الكبير وما هو الـ embedding، وقارن النصوص بالـ cosine similarity، واحكم متى يكون النموذج اللغوي الكبير أو الـ embeddings أو نموذج scikit-learn الكلاسيكي هو الأداة الصحيحة.","html":"<p>غيّرت النماذج اللغوية الكبيرة ما تستطيع البرمجيات فعله بالنصوص، وصار كل فريق بيانات يُسأل الآن: “ألا يمكننا استخدام LLM لهذا فحسب؟”. أحيانًا تكون الإجابة نعم. وكثيرًا ما تكون “لجزء منه”. ولتجيب جيدًا، تحتاج إلى صورة دقيقة عمّا هي الـ LLMs والـ embeddings، وهذه الصورة مبنية من أفكار استخدمتها طوال الدورة.</p>\n<h2 id=\"sec-1\" tabindex=\"-1\">ما هو الـ LLM</h2>\n<p><strong>النموذج اللغوي الكبير (large language model)</strong> شبكة عصبية، تكاد تكون دائمًا <strong>transformer</strong>، مدرَّبة على كمية هائلة من النصوص بهدف واحد: بالنظر إلى النص حتى الآن، تنبّأ بالـ <strong>token</strong> التالي (كلمة أو جزء من كلمة). هذا هو <strong>التدريب المسبق (pretraining)</strong>. وحين يُنفَّذ على نطاق كافٍ، يجبر التنبؤ بالـ token التالي الشبكةَ على استيعاب القواعد والحقائق والأساليب وقدر مدهش من سلوك يشبه الاستدلال، لأن كل ذلك يساعد على توقّع ما يأتي بعد.</p>\n<p>ثم يحصل النموذج المدرَّب مسبقًا على تدريب إضافي ليتّبع التعليمات ويعطي إجابات مفيدة وآمنة، عادةً بأمثلة كتبها بشر وبتغذية راجعة من تفضيلات بشرية أو من ذكاء اصطناعي. وحين ترسل إليه prompt، يحسب احتمالًا لكل token تالٍ ممكن، ويختار واحدًا (مع شيء من العشوائية يتحكم فيه إعداد <strong>الـ temperature</strong>)، ويضيفه، ثم يكرّر.</p>\n<p>ثلاث نتائج تهمّ عالم البيانات:</p>\n<ul>\n<li><strong>المخرجات نص مولَّد، لا احتمال مقيس.</strong> إذا سألته “ما احتمال انقطاع هذا العميل؟” وقال “70%”، فهذا الرقم لم يُعايَر مقابل النتائج الفعلية كما عوير <code dir=\"ltr\">predict_proba</code> في القسم 3.</li>\n<li><strong>قد يخطئ بثقة.</strong> الطلاقة ليست دقة. وأي شيء تبنيه على LLM يحتاج إلى بيانات اختبار ذات labels وخط أساس، تمامًا كنموذج الانقطاع.</li>\n<li><strong>يكلّف مع كل استدعاء</strong> مالًا وزمن استجابة، وقد يُرسل البيانات خارج أنظمتك. أما الانحدار اللوجستي فيقيّم مليون عميل في أقل من ثانية على حاسوب محمول.</li>\n</ul>\n<h2 id=\"sec-2\" tabindex=\"-1\">الـ Embeddings: النص كإحداثيات</h2>\n<p>الفكرة الأكثر نفعًا بهدوء هي <strong>الـ embedding (التمثيل المتّجهي)</strong>. يقرأ نموذج الـ embedding قطعة نص ويُعيد متّجهًا ثابت الطول، غالبًا من عدة مئات إلى بضعة آلاف من الأرقام، مرتّبًا بحيث تحصل النصوص المتشابهة في المعنى على متّجهات متقاربة. فتصبح تذاكر الدعم في Cartwheel صفوفًا من الأرقام، وكل ما تعرفه عن صفوف الأرقام ينطبق عليها.</p>\n<figure class=\"diagram\"><svg class=\"diagram-svg\" focusable=\"false\" viewBox=\"0 0 640 280\" role=\"img\" aria-labelledby=\"l-ml-5-3-t1\"><defs><marker id=\"arrow-l-ml-5-3-1\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 z\" class=\"d-arrowhead\"/></marker></defs>\n  <title id=\"l-ml-5-3-t1\">رسم ثنائي الأبعاد لفضاء الـ embeddings. شكاوى التوصيل تتجمّع في زاوية، وشكاوى الفواتير في أخرى، وسؤال تغيير العنوان يقف بعيدًا. وتذكرة جديدة عن طرد مفقود تقع بجانب مجموعة التوصيل.</title>\n  <rect class=\"d-box\" x=\"20\" y=\"20\" width=\"600\" height=\"240\" rx=\"12\"/>\n  <circle class=\"d-dot\" cx=\"120\" cy=\"80\" r=\"7\"/><circle class=\"d-dot\" cx=\"150\" cy=\"105\" r=\"7\"/>\n  <text class=\"d-label\" x=\"165\" y=\"78\">الطرد لم يصل أبدًا</text>\n  <text class=\"d-label\" x=\"165\" y=\"112\">الشحنة لم تظهر</text>\n  <circle class=\"d-dot\" cx=\"460\" cy=\"190\" r=\"7\"/><circle class=\"d-dot\" cx=\"490\" cy=\"215\" r=\"7\"/>\n  <text class=\"d-label\" x=\"300\" y=\"182\">خُصم المبلغ مرتين</text>\n  <text class=\"d-label\" x=\"310\" y=\"235\">استرداد الدفعة المكرّرة</text>\n  <circle class=\"d-dot\" cx=\"420\" cy=\"70\" r=\"7\"/>\n  <text class=\"d-label\" x=\"435\" y=\"75\">تغيير عنوان التوصيل</text>\n  <rect class=\"d-box-warn\" x=\"92\" y=\"138\" width=\"14\" height=\"14\"/>\n  <text class=\"d-label-strong\" x=\"114\" y=\"152\">جديدة: \"أين طلبي؟\"</text>\n  <path class=\"d-arrow\" d=\"M105 138 L128 112\" marker-end=\"url(#arrow-l-ml-5-3-1)\"/>\n</svg><figcaption>النصوص المتشابهة في المعنى تقع متقاربة في فضاء الـ embeddings</figcaption></figure>\n<p>يُقاس القرب بـ <strong>الـ cosine similarity (تشابه جيب التمام)</strong>: جيب تمام الزاوية بين متّجهين، 1 للاتجاه نفسه، وقرب 0 لما لا علاقة بينهما. قارن ذلك بـ features عدّ الكلمات التي يستطيع scikit-learn بناءها بنفسه:</p>\n<div class=\"code-block\" dir=\"ltr\" data-lang=\"python\" data-run=\"python\" data-index=\"0\"><div class=\"code-head\"><span class=\"code-title\">Python</span><span class=\"code-actions\"><button type=\"button\" class=\"code-btn code-run\" data-action=\"run\" data-lang=\"python\" data-index=\"0\" aria-label=\"شغّل هذا المثال\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\"/></svg><span>تشغيل</span></button><button type=\"button\" class=\"code-btn\" data-action=\"copy\" aria-label=\"نسخ الكود\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/></svg><span>نسخ</span></button></span></div><pre class=\"shiki\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">import</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> numpy </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">as</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> np</span></span>\n<span class=\"line\"><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">from</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> sklearn.feature_extraction.text </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">import</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> TfidfVectorizer</span></span>\n<span class=\"line\"><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">from</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> sklearn.metrics.pairwise </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">import</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> cosine_similarity</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">tickets </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">=</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> [</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"My parcel never arrived\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"The package did not show up\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,</span></span>\n<span class=\"line\"><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">           \"I was charged twice for one order\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"Refund the duplicate payment please\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,</span></span>\n<span class=\"line\"><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">           \"How do I change my delivery address\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">]</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">tfidf </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">=</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> TfidfVectorizer().fit_transform(tickets)</span></span>\n<span class=\"line\"><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">print</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"TF-IDF similarity of ticket 0 to the others:\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, cosine_similarity(tfidf)[</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">].round(</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">2</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">))</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#6E7781;--shiki-dark:#8B949E\"># Illustrative 4-number \"embeddings\" (real ones come from an embedding model and are far longer)</span></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">emb </span><span style=\"color:#CF222E;--shiki-dark:#FF7B72\">=</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\"> np.array([[</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.90</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.10</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.00</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.20</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">], [</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.85</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.15</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.05</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.10</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">],</span></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">                [</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.05</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.90</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.10</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.00</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">], [</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.10</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.85</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.20</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.05</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">],</span></span>\n<span class=\"line\"><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">                [</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.30</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.00</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.10</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, </span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0.90</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">]])</span></span>\n<span class=\"line\"><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">print</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">(</span><span style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"embedding similarity of ticket 0 to the others:\"</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">, cosine_similarity(emb)[</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">0</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">].round(</span><span style=\"color:#0550AE;--shiki-dark:#79C0FF\">2</span><span style=\"color:#1F2328;--shiki-dark:#E6EDF3\">))</span></span></code></pre><div class=\"run-output\" data-run-output=\"0\" hidden></div></div>\n<p>يعدّ TF-IDF الكلمات المشتركة. “parcel never arrived” و&quot;package did not show up&quot; لا تشتركان في أي كلمة، فيعطيهما 0، ومع ذلك يربط التذكرة 0 بسؤال العنوان لأن كلتيهما تحتوي “my”. أما الـ embeddings فتعطي شكويَي التوصيل قيمة شبه متطابقة. المتّجهات هنا مصنوعة يدويًا لتوضيح الفكرة؛ أما نموذج الـ embedding الحقيقي فينتج هذا السلوك من تدريبه، مع نصوص لم يرَها قط.</p>\n<aside class=\"callout callout-mistake\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg><span><span class=\"callout-kind\">خطأ شائع</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>معاملة إجابة الـ LLM كقياس</span></p>\n<p>أن تطلب من نموذج محادثة تقييم 500 عميل “من 0 إلى 100 بحسب خطر الانقطاع” يعطيك أرقامًا تبدو كمخرجات نموذج لكنها لم تُقارَن قط بالنتائج الفعلية. قبل أن يقود أي label أو درجة من إنتاج LLM قرارًا ما، قارنها بالحقيقة على عيّنة محجوزة وبخط أساس بسيط. سير العمل من القسم 1 ينطبق دون تغيير.</p>\n</aside>\n<h2 id=\"sec-3\" tabindex=\"-1\">أين تقع كل أداة في Cartwheel</h2>\n<div class=\"table-wrap\" role=\"region\" aria-label=\"جدول قابل للتمرير\" tabindex=\"0\"><table><thead>\n<tr>\n<th>المهمة</th>\n<th>الأداة المناسبة</th>\n<th>السبب</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>التنبؤ بالانقطاع من حقائق العملاء</td>\n<td>scikit-learn على الجدول</td>\n<td>بيانات جدولية ذات labels، وتحتاج إلى درجات معايَرة ورخيصة وقابلة للاختبار</td>\n</tr>\n<tr>\n<td>توجيه تذاكر الدعم إلى الفرق</td>\n<td>Embeddings + انحدار لوجستي، أو LLM</td>\n<td>المدخل نص؛ والـ embeddings تجعلها مصنِّفًا كلاسيكيًا</td>\n</tr>\n<tr>\n<td>إيجاد تذاكر مشابهة لتذكرة جديدة</td>\n<td>Embeddings + أقرب الجيران</td>\n<td>البحث بالتشابه هو بالضبط ما وُجدت له الـ embeddings</td>\n</tr>\n<tr>\n<td>تلخيص شكاوى أسبوع لمدير</td>\n<td>LLM</td>\n<td>المخرج نص حرّ؛ ويراجعه شخص</td>\n</tr>\n<tr>\n<td>إضافة “موضوع الشكوى” كـ feature للانقطاع</td>\n<td>Embeddings ← k-means، أو label من LLM</td>\n<td>يحوّل النص إلى عمود يستطيع نموذج الانقطاع اختباره</td>\n</tr>\n</tbody>\n</table></div><p>الصف الأخير هو حيث يلتقي العالمان. يصبح النص feature؛ ويقرّر التحقق المتقاطع ما إذا كان يساعد. ولا يتغيّر شيء في الانضباط لأن الـ feature جاء من نموذج كبير.</p>\n<aside class=\"callout callout-tip\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\"/><path d=\"M9 18h6\"/><path d=\"M10 22h4\"/></svg><span><span class=\"callout-kind\">نصيحة</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>ابدأ من نوع البيانات</span></p>\n<p>جداول الحقائق: scikit-learn. النص الحرّ الذي تحتاج إلى البحث فيه أو تجميعه أو تصنيفه: الـ embeddings أولًا، لأنها رخيصة وتندمج في أدوات تعرفها. النص الذي تحتاج إلى توليده، أو المهام التي لا بيانات ذات labels لها إطلاقًا: LLM، مقيَّم مقابل عيّنة صنّفتها بنفسك.</p>\n</aside>\n<p>أيًّا كان النموذج الذي تطلقه، فسيتخذ قرارات بشأن أشخاص. يسأل الدرس القادم ما إذا كانت هذه القرارات جيدة بالقدر نفسه للجميع، وما الذي يجب مراقبته بعد الإطلاق.</p>\n","toc":[{"id":"sec-1","text":"ما هو الـ LLM","level":2},{"id":"sec-2","text":"الـ Embeddings: النص كإحداثيات","level":2},{"id":"sec-3","text":"أين تقع كل أداة في Cartwheel","level":2}],"takeaways":["النموذج اللغوي الكبير (LLM) شبكة transformer مدرَّبة مسبقًا على التنبؤ بالـ token التالي في كميات هائلة من النصوص، ثم مضبوطة لاتّباع التعليمات.","مخرجات الـ LLM نص مولَّد بالسحب، لا احتمال معايَر، فهي تحتاج إلى انضباط التقييم نفسه الذي يحتاجه أي نموذج: بيانات اختبار ذات labels وخط أساس.","نموذج الـ embedding يحوّل النص إلى متّجه ثابت الطول بحيث تقع النصوص المتشابهة في المعنى قريبة من بعضها؛ ويقيس الـ cosine similarity مدى هذا القرب.","تحوّل الـ embeddings النص غير المهيكل إلى features تستطيع الأدوات الكلاسيكية (k-NN والانحدار اللوجستي وk-means) استخدامها.","في التنبؤات الجدولية مثل الانقطاع، تبقى نماذج scikit-learn أرخص وأسرع وأسهل في التحقق؛ أما الـ LLMs والـ embeddings فتستحق مكانها مع النصوص."],"further":[{"title":"Feature extraction from text","url":"https://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction"},{"title":"cosine_similarity","url":"https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html"}],"quiz":[{"q":"<p>على ماذا يُدرَّب النموذج اللغوي الكبير في جوهره أثناء التدريب المسبق؟</p>","options":[{"text":"البحث عن الإجابات في قاعدة بيانات من الحقائق الموثّقة.","why":"لا تستشير الـ LLMs قاعدة بيانات حقائق افتراضيًا؛ بل تولّد النص من أنماط تعلّمتها في أوزانها."},{"text":"تصنيف المستندات في مجموعة ثابتة من الموضوعات.","why":"يمكن إجراء التصنيف بـ LLM، لكنه ليس هدف التدريب المسبق."},{"text":"الترجمة بين اللغات فقط.","why":"الترجمة قدرة ناشئة واحدة، لا هدف التدريب."},{"text":"التنبؤ بالـ token التالي من النص، مرة بعد مرة، على مدوّنة نصوص ضخمة.","why":"صحيح. أما اتّباع التعليمات وسلوك المحادثة فيأتيان من ضبط إضافي فوق ذلك."}],"answer":3},{"q":"<p>يعطي TF-IDF الجملتين ‘My parcel never arrived’ و’The package did not show up’ قيمة cosine similarity تساوي 0. ويعطيهما نموذج embedding نحو 0.9. لماذا الفرق؟</p>","options":[{"text":"TF-IDF لا يطابق إلا الكلمات المشتركة، وهاتان الجملتان لا تشتركان في أي كلمة؛ أما الـ embeddings فتضع النصوص بحسب المعنى.","why":"صحيح. المترادفات وإعادة الصياغة هي بالضبط حيث تتفوّق الـ embeddings على عدّ الكلمات."},{"text":"TF-IDF معطوب مع النصوص القصيرة.","why":"إنه يعمل كما صُمّم؛ لكنه لا يملك أي فكرة عن أن ‘parcel’ و’package’ تعنيان الشيء نفسه."},{"text":"حفظ نموذج الـ embedding هاتين الجملتين.","why":"نماذج الـ embedding تعمّم من تدريبها على مجموعات نصوص ضخمة؛ ولا تحتاج إلى أن تكون رأت هاتين الجملتين بالضبط."}],"answer":0},{"q":"<p>يريد Cartwheel التنبؤ بالانقطاع من الأعمدة الرقمية الثمانية. يقترح زميل إرسال صف كل عميل إلى LLM وسؤاله ‘هل سينقطع؟’. ما أقوى اعتراض؟</p>","options":[{"text":"الـ LLMs لا تستطيع قراءة الأرقام.","why":"تستطيع قراءة الأرقام في النص؛ والمشكلات هي المعايرة والكلفة والتحقق، لا القراءة."},{"text":"سيكون أقل دقة من أي خط أساس بحكم التعريف.","why":"لا شيء يضمن ذلك؛ عليك أن تقيس. والمقصود أنك ستدفع أكثر مقابل شيء لم يُتحقَّق منه بشكل أفضل."},{"text":"المهمة لديها أصلًا بيانات جدولية ذات labels، ونموذج scikit-learn عليها أرخص وأسرع وقابل للاختبار ويعطي احتمالات حقيقية.","why":"صحيح. استخدم الأداة التي تناسب البيانات؛ فالـ LLM يضيف كلفة وعدم يقين دون مكسب واضح هنا."},{"text":"الـ LLMs مسموح بها لتطبيقات المحادثة فقط.","why":"لا توجد قاعدة كهذه؛ فالـ LLMs تُستخدم في مهام كثيرة. والسؤال سؤال ملاءمة، لا سؤال إذن."}],"answer":2}],"exercise":{"kind":"choice","multiple":true,"options":["review-search","refund-forecast","ticket-topic-feature","llm-churn-score","review-summary","coupon-ab"],"correct":["review-search","ticket-topic-feature","review-summary"],"title":"أيّ المهام تستدعي الـ embeddings أو LLM؟","prompt":"<p>لدى فريق البيانات في Cartwheel ستة طلبات. اختر كل طلب تكون فيه <strong>الـ embeddings أو LLM</strong> أداة أولى أفضل من نموذج scikit-learn كلاسيكي على الجداول الموجودة.</p>\n","hints":["اسأل عن المُدخل: هل هو جدول من الحقائق، أم نص حرّ؟","اسأل عن المُخرج: هل هو رقم معايَر، أم نص أو تشابه؟","ثلاثة طلبات تتضمّن نصًا حرًّا؛ والثلاثة الأخرى جدولية أو تجارب."],"explanation":"<p>البحث في المراجعات بحسب المعنى، وتحويل نص التذاكر إلى feature لموضوع الشكوى، وتلخيص المراجعات، كلها مسائل نصية: تتولّى الـ embeddings أول اثنتين برخص، والـ LLM هو الأداة الطبيعية لملخّص مكتوب سيقرؤه شخص. أما توقّع المبالغ المستردّة وتقييم خطر الانقطاع فتنبؤات جدولية يعطي فيها scikit-learn مخرجات رخيصة وقابلة للاختبار ومعايَرة. وسؤال القسيمة تجربة تحتاج إلى تحليل، لا مهمة تنبؤ أصلًا.</p>\n","checkLabels":{},"optionText":{"review-search":{"text":"تمكين الموظفين من كتابة “وصل مكسورًا” وإيجاد مراجعات المنتجات التي تصف تلفًا بأي صياغة.","why":"مناسبة: الـ embeddings مع البحث عن أقرب الجيران تطابق المعنى، لا الكلمات بعينها."},"refund-forecast":{"text":"توقّع مبلغ الاسترداد في الشهر القادم من جداول الطلبات والمرتجعات.","why":"انحدار جدولي على تاريخ رقمي؛ ونموذج scikit-learn (مع تقسيم زمني) هو المناسب."},"ticket-topic-feature":{"text":"تحويل تذاكر الدعم النصية الحرّة إلى عمود ‘موضوع الشكوى’ لاختباره كـ feature للانقطاع.","why":"مناسبة: حوّل التذاكر إلى embeddings، وجمّعها أو صنّفها، ثم دع التحقق المتقاطع يحكم على العمود الجديد."},"llm-churn-score":{"text":"مطالبة نموذج محادثة بتقييم خطر انقطاع كل عميل من أعمدته الرقمية الثمانية.","why":"الجدول ذو الـ labels يدعم أصلًا نموذجًا أرخص ومعايَرًا وقابلًا للاختبار؛ والـ LLM يضيف كلفة وعدم يقين."},"review-summary":{"text":"كتابة ملخّص أسبوعي من فقرة واحدة لمراجعات المنتجات الجديدة لفريق إدارة البضائع.","why":"مناسبة: توليد نص مقروء من نصوص هو ما تفعله الـ LLMs؛ ويراجع شخص النتيجة."},"coupon-ab":{"text":"تقرير ما إذا كانت قسيمة SPRING15 قد رفعت قيمة الطلب، باستخدام اختبار عشوائي.","why":"هذا تحليل تجربة (مقارنة مجموعات وفحص الدلالة الإحصائية)، لا مسألة نمذجة لـ LLM."}}},"words":678,"readMinutes":4}