العودة للوحة التحكم
QudahWay / IR / Probabilistic Model

🔮 القهوة، البصيرة، والـ Information Retrieval

The "Genius Waiter" Story - Why Probability Matters
تخيل حالك قاعد بمطعم "أبو العبد" ، وأبو العبد مجرد ما شاف خلقتك، راح جابلك سندويشة شاورما. أنت انصدمت: "كيف عرفت يا أبو العبد؟ أنا لسه ما حكيت!".

أبو العبد بضحك وبقولك: "يا خالي، الاحتمالات! أنت لابس بلوزة الجامعة، اليوم الخميس، ووجهك جيعان.. احتمال (Probability) إنك تطلب شاورما اليوم هو 99%".

هاض بالضبط اللي رح نعلمه للكمبيوتر اليوم. الكمبيوتر رح يصير زي "أبو العبد"، رح يحاول يتوقع شو بدك (الـ Query) بناءً على الكلام اللي شافه بالملفات (الـ Document).

🗺️ Roadmap: What's on the Menu?

Section 1: Language Models
مقدمة في نمذجة اللغة والـ Unigram.
Section 2: Probabilistic Retrieval
كيف نحسب احتمال الـ Relevance.
Section 3: Query Likelihood
حساب p(q|d) ومشكلة الصفر.
Section 4: Smoothing Methods
طرق التنعيم (JM & Dirichlet).

📚 01. شو هو الـ Statistical Language Model؟

A probability distribution over word sequences
يا خالي، الـ Language Model (LM) هو ببساطة عبارة عن "توزيع احتمالي" (Probability Distribution) على سلاسل الكلمات. يعني هو نظام وظيفته يعطي "علامة" أو "احتمالية" لكل جملة ممكنة في اللغة.
📌 أمثلة على احتمالية الجمل (ركزوا بالأرقام):
p("Today is Wednesday") ≈ 0.001
p("Today Wednesday is") ≈ 0.0000000000001
p("The eigenvalue is positive") ≈ 0.00001
لاحظوا الفرق: الجملة اللي ترتيبها صح ومعناها مفهوم (زي "Today is Wednesday") بتاخد احتمالية عالية. أما الجملة اللي ترتيبها "معجق" (زي "Today Wednesday is")، السيستم بعطيها احتمالية شبه صفر لأنه "لغة البشر" ما بتمشي هيك. هاض الكلام كله بوضحه صورة حجر النرد اللي تحت، اللي بتفرجينا كيف الكمبيوتر "بختار" الجملة الصح من بين ملايين الاحتمالات.
Context-dependent!
الموضوع بيعتمد عالـ Context (السياق). يعني احتمالية كلمة معينة بتفرق حسب الكلمات اللي قـبلها.
"Generative" model mechanism
الـ LM بنعتبره Generative Model؛ لأنه فعلياً "بولّد" أو "بنتج" (Generating) نصوص. كأنك بتزت "حجر نرد" (Dice) والكمبيوتر بطلعلك جملة بناءً على الاحتمالات اللي عنده.
Generative Model Dice
Illustration: The Generative "Dice" Process

🤔 02. ليش الـ LM مفيد أصلاً؟

Quantify the uncertainties in natural language
لأن لغتنا كبشر فيها "شك" و "غموض" (Uncertainties)، الـ LM بيجي عشان "يبرمج" هاض الشك ويحوله لأرقام نقدر نتعامل معها.
بجاوبنا على أسئلة زي:
Speech Recognition
إذا سمعنا "John" و "feels"، شو الكلمة الجاي؟ happy ولا habit؟ الـ LM بعرف إن "happy" احتماليته أعلى بمليون مرة بهاض السياق.
Information Retrieval & Text Categorization
إذا شفنا كلمة "baseball" تكررت 3 مرات وكلمة "game" مرة.. شو احتمال يكون المقال عن الـ Sports؟ أكيد عالي جداً!
Information Retrieval (Query Prediction)
لو المستخدم مهتم بأخبار الرياضة، قديش احتمال إنه يكتب كلمة "baseball" بالسؤال تبعه؟ الـ LM بساعدنا نتوقع "اهتمامات" المستخدم.

1️⃣ 03. أبسط موديل: الـ Unigram LM

Generate text by generating each word INDEPENDENTLY
يا خالي، الـ Unigram Model هو "أبسط" طريقة لنتعامل مع اللغة. فكرته قائمة على "الاستقلالية التامة"؛ يعني بفترض إنه كل كلمة بتطلع من السيستم مالهاش أي دخل بالكلمة اللي قبلها ولا اللي بعدها.
p(w₁ w₂ ... wₙ) = p(w₁)p(w₂) ... p(wₙ)
القانون بحكي: احتمالية جملة كاملة هي ببساطة حاصل ضرب احتمالية كل كلمة فيها لحالها. كأننا بنزت حجر نرد لكل كلمة وبنضرب النتائج ببعض.

📊 04. الـ Parameters وتوزيع الكلمات

Parameters: {p(wᵢ)} where Σ p(wᵢ) = 1 (N is voc. size)
الموديل هاض عنده "ميزان" (Parameters) لكل كلمة في القاموس تبعه. مجموع احتمالات كل الكلمات لازم يساوي 1 (يعني 100%).
Text = sample drawn according to this word distribution
النص اللي بنشوفه هو عبارة عن "عينة" (Sample) تم سحبها بناءً على هاض التوزيع التكراري للكلمات.

🎲 05. كيف الموديل "بولّد" الجملة؟ (مثال النرد)

شوفوا هالصورة الفخمة، بتوضح كيف السيستم بحسب احتمالية جملة "today is Wed":
Unigram LM Dice Example
Fig 7: Generative Process for Unigram LM
p("today is Wed")
= p("today") * p("is") * p("Wed")
= 0.0002 * 0.001 * 0.000015
السر هون: زي ما بتشوفوا بالصورة، النرد هو اللي بقرر الكلمة الجاي، وإحنا بس بنضرب الاحتمالات ببعض عشان نطلع بـ "الرقم النهائي" للجملة كاملة.

🎯 06. كيف بتطلع الورقة البحثية من الـ LM؟

عملية توليد النص (Text Generation) بتعتمد على "موضوع" كل ملف. لو عندنا موضوعين مختلفين، توزيع الكلمات في النرد رح يختلف تماماً:
Topic 1: Text Mining
text: 0.2
mining: 0.1
association: 0.01
food: 0.00001
Sampling
Text Mining Paper
Topic 2: Health
food: 0.25
nutrition: 0.1
healthy: 0.05
text: 0.0001
Sampling
Food Nutrition Paper
الفكرة: إذا كان الملف عن الـ (Text Mining)، احتمال تطلع كلمة "text" عالي جداً (0.2). بينما لو الملف عن الصحة (Health)، احتمال كلمة "food" هو اللي بكسر الدنيا. هاض اللي بنسميه Sampling.

🏢 07. الفرق بين الـ Background والـ Collection والـ Document

ركز هون، هاد أهم جدول بكل الشابتر! التمييز بين الثلاث أنواع هو اللي بحدد كيف رح نحسب الـ Relevance:
B
General Background
English Text
the: 0.03
a: 0.02
is: 0.015
we: 0.01
...
food: 0.003
computer: 0.00001
text: 0.000006
Background LM: p(w|B)
C
Computer Science
Papers
the: 0.032
a: 0.019
is: 0.014
we: 0.011
...
computer: 0.004
software: 0.0001
text: 0.000006
Collection LM: p(w|C)
d
Text mining paper
the: 0.031
...
text: 0.04
mining: 0.035
association: 0.03
clustering: 0.005
computer: 0.0009
food: 0.000001
Document LM: p(w|D)
- Background: بمثل "اللغة العامة" (أو، في، من..)، الكلمات المشهورة بكل مكان.
- Collection: بمثل "المجال" (CS مثلاً). احتمالية كلمة "computer" رح تزيد شوي.
- Document: بمثل "الملف نفسه". هون كلمة "text" و "mining" رح يطيروا للسما لأنه الملف بحكي عنهم.

🔗 11. كيف بنلاقي الكلمات المرتبطة؟ (Semantic Relations)

يا خالي، الـ Language Models مش بس للترتيب، هي كمان بتعرف شو الكلمات "اللي بحبوا بعض". تخيل بدك تعرف شو الكلمات المرتبطة بكلمة "computer". لو رحت على الملفات اللي فيها هاي الكلمة، رح تلاقي كلمة "the" موجودة كتير.. بس هل "the" مرتبطة بـ "computer"؟ أكيد لأ!
Docs with
"computer"
Topic LM: p(w|comp)
the: 0.032
computer: 0.004
software: 0.0001
Background
English
Background: p(w|B)
the: 0.03
computer: 0.00001
Ratio
Normalized Topic LM: p(w|comp)/p(w|B)
computer: 400
software: 150
program: 104
the: 1.1
الحل الذكي: الـ Normalization (التطبيع)! بدل ما نسأل "شو أكتر كلمات موجودة؟" (وهاض غلط لأنه الـ noisy words رح يفوزوا)، بنسأل: "شو الكلمات اللي ظهورها هون غريب ومميز مقارنة باللغة الطبيعية؟"

ليش بنقسم على الـ Background؟
  • كلمة "the": احتمالها عالي بكل مكان. لما نقسم رقم عالي (Topic) على رقم عالي (Background)، النسبة بتطلع 1 (يعني وجودها "عادي" ومش مميز).
  • كلمة "computer": احتمالها في موضوعنا عالي، بس في اللغة العامة "نادر". لما نقسم رقم عالي على رقم صغير جداً، النسبة "بتنفجر" وبتوصل لـ 400!

هيك السيستم بيفهم إنه "computer" هي الهوية الحقيقية لهذا الموضوع، وبقدر يستخدمها عشان يقترح لك كلمات بحث تانية (Query Expansion) أو يفهم المواضيع المرتبطة ببعض.
💡 زبدة الكلام (The Takeaway):
الـ Language Model مش بس "عدّاد كلمات"، هو "محلل شخصيات". التقسيم على الـ Background هو اللي بفلتر "الضجيج" وبخلينا نشوف "الإشارة" (The Signal) اللي بتميز كل موضوع عن غيره.

🎯 12. الفكرة الأساسية: كيف نرتب بالاحتمالات؟

يا جماعة، الهدف من الـ Probabilistic Models بسيط جداً: بدنا نرتب الملفات حسب احتمال إنها تكون "مفيدة" (Relevant). الدالة اللي بنستخدمها للترتيب هي:
f(q, d) = p(R=1 | d, q)
يعني إحنا بنحاول نحسب احتمال إنه الـ Document اللي اسمه (d) يكون Relevant (الـ R=1) بالنسبة للـ Query اللي اسمها (q).

📊 13. كيف بنحسب الاحتمال من "البيانات"؟

تخيّل لو كان عندنا تاريخ طويل من بحث الطلاب (Query Logs)، وكل ما طالب يبحث عن شي، كنا بنسجل هل كبس على الملف ولا لأ.
📜 Historical Search Log
Query Doc Rel (R)
q1 d1 1
q1 d2 1
q1 d3 0
q1 d1 0
q1 d2 1
p(R=1|q,d) = count(q, d, R=1) / count(q, d)
p(R=1|q1, d1) = 1 / 2 = 0.5
p(R=1|q1, d2) = 2 / 2 = 1.0
p(R=1|q1, d3) = 0 / 2 = 0.0
يا ساتر! هل شفتوا كيف الـ d2 "فاز" وصار احتماله 100%؟ لأنه كل ما حدا بحث عن q1، الكل راح عموثق d2. أما d1 فكان "نص نص".

🧠 15. الافتراض العبقري: "الموثق المتخيّل"

عشان نحل مشكلة البيانات الناقصة، العلماء حكوا: "انسوا العد المباشر، خلينا نفكر بطريقة تانية". تخيل إنه الطالب قبل ما يكتب الـ Query، بكون في بباله "موثق مثالي" (Imaginary Relevant Document)، وهو قاعد بكتب كلمات البحث بناءً على هاض الموثق اللي بباله.
p(R=1 | d, q) ≈ p(q | d, R=1)
شو يعني هاض الكلام؟ يعني إحنا رح نسأل حالنا: "لو افترضنا إن الملف (d) هو الملف المثالي اللي بدور عليه المستخدم (R=1)، شو احتمال إنه المستخدم يكتب هاي الكلمات بالذات (q)؟".

🔎 16. مثال عملي: مين الملف "الأقرب" للخيال؟

البحث هو: "news about presidential campaign"
d1
... news about ...
p(q|d1) is Low
d2
... news about organic food campaign ...
p(q|d2) is Medium
d4
news of presidential campaign ... presidential candidate ...
🏆
High p(q|d4)
d5
... news of organic food campaign ... campaign...campaign
Repeated but irrelevant
ليش d4 هو الفائز؟ لأنه بيحتوي على أهم الكلمات بنفس السياق اللي المستخدم "ممكن" يكون فكر فيه. لهيك احتمالية إن مستخدم "بدو d4" يكتب الـ Query تبعنا هي أعلى احتمالية.

📝 17. الخلاصة: الرحلة من الـ Relevance للـ LM

يا خالي، خلينا نلم القصة كلها في ثلاث نقاط، هدول هم "زبدة" السكشن الثاني واللي لازم يكونوا محفورين في مخك:
1. الهدف الأساسي (The Goal)
ترتيب الملفات حسب احتمال ارتباطها بالبحث: p(R=1 | q, d)
2. التحول للـ Query Likelihood
عشان نحسب الـ Relevance بطريقة عملية، بنفترض إن المستخدم "بقلد" الملف المثالي: f(q,d) = p(q | d)
3. الأداة السحرية (The Tool)
كيف بنحسب احتمال نص معين (q) بناءً على ملف (d)؟ هون بيجي دور الـ Language Model.

🌉 الجسر للقسم القادم

الآن صرت فاهم ليش إحنا ميتين على شي اسمه Language Models. بدون الـ LM، ما بنقدر نحسب الـ Query Likelihood.

في القسم الجاي، رح نتعلم كيف الـ LM بيقدر يحول ملف كبير لـ "أرقام واحتماليات" عشان نقدر نحسب:
p( "presidential campaign" | d ) = ?

🏗️ 18. ما هو الـ Statistical Language Model؟

A language model is a probabilistic model that predicts the likelihood of generating a sequence of words (like a query or a document).
يا خالي، الـ Language Model هو ببساطة "ماكينة احتمالات" بتعرف شو احتمالية ظهور جملة أو تسلسل كلمات معين. بعطيك رقم بقلك قديه هاد النص منطقي ومحتمل الحدوث في هاي اللغة.
In IR, we build a language model for each document and rank documents based on the probability that their model generates the user's query.
في مجال الـ IR: الفكرة غير! إحنا بنمسك كل ملف (Document) وبنبني له موديل احتمالي خاص فيه. وبعدين بنرتب الملفات حسب: "أي موديل احتمالية إنه يولّد كلمات الـ Query تبع المستخدم أعلى؟".
📌 المبدأ المختصر (In Simple Words):
- Each document = a small model that tells you how likely it is to generate words.
- A good matching document = a document whose language model likely produces the query words.

🧮 19. ما هو الـ Query Likelihood Model؟

Estimate the probability that the document's language model would generate the query. Then, we rank documents by that probability.
يا خالي، ركز معي لأنه هاي هي "الخطة" تبعت السيستم كله: بدنا نغير طريقة تفكيرنا من "هل الكلمات موجودة؟" لـ "قديه احتمالية توليد هاي الكلمات؟".

تخيل المبدأ كالتالي: لو اعتبرنا إن كل ملف (Document) هو شخص قاعد بيكتب جمل عشوائية طول اليوم، وإنت جيت سألت: "مين أكثر واحد فيهم احتمال إنه يكتب جملة البحث تبعتي؟".

الشخص اللي تخصصه "رياضيات" رح يكتب كلمات رياضيات كتير، فـ احتمال إنه يكتب Query عن الخوارزميات عالي جداً.. بينما الشخص اللي تخصصه "طبخ" احتماله شبه صفر.
Score(D, Q) = P(Q | D)
P(Q|D): Probability that query Q is generated by document D.
📌 ليش بنرتب حسب هاي الاحتمالية؟ لأننا بنفترض إن المستخدم لما كتب الـ Query، كان في بباله "موضوع" معين. الملف اللي بملك أعلى P(Q|D) هو الملف اللي "بِحكي" في هاد الموضوع أكثر شي، فـ هو الأحق بالمركز الأول!

🎯 20. ما هو الـ Unigram Language Model؟

A unigram model is the simplest type of language model.
يا بطل، الـ Unigram Model هو أسهل وأبسط نوع "موديل لغوي" ممكن تتعامل معه. ليش؟ لأنه بختصر الدنيا كلها بكلمتين: "عدّ واقسم".
📌 الافتراضات الأساسية (Assumptions):
  • 🔹 Generation independently: بيفترض إن كل كلمة بتطلع "لحالها" وما الها دخل بالكلمة اللي قبلها أو بعدها.
  • 🔹 No word order matters: ترتيب الكلمات مش مهم (Bag of Words). "أكل الولد التفاحة" هي نفسها "التفاحة الولد أكل" بالنسبة لهاد الموديل.
  • 🔹 Simplifying assumption: هو افتراض "قوي جداً" وببسط الدنيا، بس بخلي الحسابات سهلة وسريعة.

🧮 21. الرياضيات وراء الـ Unigram

Under a unigram model, the probability of a query is: Just multiply the individual probabilities of each query word w.
P(Q) = ∏w ∈ Q P(w)
(Multiply the probability of each word in the query)
In IR, specifically: Multiply the probability of each query term according to document D's language model.
P(Q|D) = ∏w ∈ Q P(w|D)
The ranking function based on query likelihood.
شو يعني الـ (∏)؟ جماعة، هاي علامة الضرب المتسلسل (Product). يعني لو عندك Query فيها 3 كلمات، بطلع احتمال الكلمة الأولى من الملف، والكلمة الثانية، والثالثة.. وبتضربهم كلهم ببعض.

"الـ Score النهائي للملف هو حاصل ضرب احتمالات كلماته!" 💥

🎯 22. كيف بتتم عملية توليد الـ Query؟ (Sampling)

Query Generation by Sampling Words from Doc
Query Generation Illustration
Visualizing: p(q | d) as a word sampling process
If the user is thinking of this doc, how likely would she pose this query?
يا خالي، هاي الصورة هي "الجوهر" تبع عملية سحب العينات (Sampling). العملية ببساطة هي كأنك بتنقي كلمات من سحابة كلمات الملف (Word Cloud) عشان تعمل الـ Query تبعك.

المنطق هون بيقول: لو المستخدم قاعد بيفكر في هاض الملف بالذات (الملف اللي بيحكي عن حملة رئاسية)، شو احتمال إنه ينقي كلمات مثل "presidential" و "campaign"؟

كل ما كانت هاي الكلمات "مشهورة" وموجودة بكثرة في هاض الملف، كل ما زاد احتمال إنه المستخدم "يسحبها" ويحطها في الـ Query تبعه. لهيك بنحكي إنه الـ Sampling هو حجر الأساس في حساب الاحتمالات.

🔢 23. كيف بنفك قِفل المعادلة؟ (The Breakdown)

Assumption: Each query word is generated independently
يا خالي، بعد ما عرفنا إننا رح "نضرب" الاحتمالات ببعض، خلينا نشوف كيف بنحسب احتمال الكلمة الواحدة داخل الملف:
p(q= "presidential campaign" | d)
= p("presidential" | d) * p("campaign" | d)
=
c("presidential", d)
|d|
*
c("campaign", d)
|d|
شو يعني c(w, d)؟ هو عدّة مرات ظهور الكلمة في الملف.
شو يعني |d|؟ هو طول الملف الكلي (عدد الكلمات الكلي فيه). ببساطة: بنقسم عدد مرات ظهور الكلمة على طول الملف.

⚖️ 24. هل هذا الكلام منطقي؟ (Comparison)

Does Query Likelihood Make Sense? Let's compare d2, d3, and d4.
p(q|d4): (2/|d4|) * (1/|d4|) → كسبان (High Score)
p(q|d3): (1/|d3|) * (1/|d3|) → متوسط (Medium Score)
p(q|d2): (0/|d2|) * (1/|d2|) = 0 → خسارة (Zero Score)
النتيجة: d4 > d3 > d2
وهاض بالضبط اللي كنا حاسينه من البداية! - d4 هو الأفضل لأنه حكى عن الموضوع مرتين. - d2 طلع احتماله صفر لأنه ما جاب سيرة الكلمة الأولى نهائياً.
"الرياضيات أثبتت إحساسنا بالـ Relevance!" 🎯✨

🛑 25. الكارثة: لو ضفنا كلمة مش موجودة!

Try a Different Query? q = "presidential campaign update"
يا خالي، ركز هون لأنه السيستم "انفجر" حرفياً! كل شغلنا اللي عملناه قبل شوي انضرب بصفر بمجرد ما المستخدم ضاف كلمة بسيطة مش موجودة بالملفات: كلمة "update".
p(q|d4): (2/|d4|) * (1/|d4|) * (0/|d4|) = 0 !
p(q|d3): (1/|d3|) * (1/|d3|) * (0/|d3|) = 0 !
p(q|d2): (0/|d2|) * (1/|d2|) * (0/|d2|) = 0

🤔 26. ليش هيك صار معنا؟ وكيف الحل؟

What assumption has caused this problem? How do we fix it?
شو اللي خرب الطبخة؟ السبب هو علامة الضرب المتسلسل (∏). إحنا بنفترض إن الكلمات مستقلة وبنضرب احتمالاتها ببعض.. وفي الرياضيات، أي شيء بتضربه بـ صفر، النتيجة النهائية بتطلع صفر كبيييير.

ليش هاض ظلم؟ لأن الملف d4 لسا ملف ممتاز وبيحكي عن الموضوع بكثافة، حرام "أعدمه" وأعطيه صفر بس عشان كلمة وحدة ناقصة!
🚀 السؤال القوي:
هل معقول نترك الملفات "تموت" عشان كلمة؟
أكيد لأ.. والحل بكلمة وحدة: Smoothing.

🛠️ 27. الحل السحري: موديل الملف "المطوّر"

Improved Model: Sampling Words from a Doc Model
Improved Model with Smoothing
Visualizing: Assigning non-zero probabilities to all terms
How likely would we observe this query from this doc model?
يا خالي، ركز معي في البوكس الأزرق اللي في الصورة.. هاض هو "السر" اللي رح ينقذنا من كارثة الصفر.

شو اللي تغير؟ بدل ما نعتبر إن الملف هو "بس الكلمات اللي مكتوبة فيه"، صار الملف الآن عبارة عن Language Model كامل، بيعطي احتمالية لكل كلمات اللغة، حتى اللي مش موجودة فيه!

📌 مثال "update": في الموديل القديم، كانت نسبة ظهورها صفر. أما في الموديل المطور، أعطيناها نسبة صغيرة جداً (مثلاً 0.00001).

النتيجة العظيمة: لما نيجي نضرب الاحتمالات ببعض، بطلنا نضرب بصفر. النتيجة رح تطلع رقم صغير جداً، بس مش صفر. وهيك بنقدر نرتب الملفات حتى لو كان فيها كلمات ناقصة.

📊 28. مثال عملي: الحساب المتسلسل للـ Score

Computation of Query Likelihood: Comparing d1 and d2
Compute Query Likelihood Example
Query q = "data mining algorithms"
يا خالي، تعا نتفرج على هاي الرسمة اللي بتلخص كل القصة:

1️⃣ التحويل لـ Models: لاحظ كيف الملفات (d1, d2) تحولت لـ بوكسات احتمالات (Language Models). كل بوكس فيه "قائمة أسعار" احتمالية لكل الكلمات.

2️⃣ الملف الأول (d1): هاض ملف عن الـ "Text Mining". الموديل تبعه بيعطي أرقام عالية لكلمات مثل `mining` و `text`.. وحتى كلمات مثل `food` أعطاها رقم صغير جداً (Smoothing).

3️⃣ الملف الثاني (d2): هاض ملف عن الـ "Food Nutrition". الموديل تبعه "كريم" في كلمات التغذية، وبخيل جداً في كلمات الـ `data mining`.
🚀 مين الفائز (The Winner)?
لما نضرب الاحتمالات لـ Query "data mining alg":
- d1 رح يضرب أرقام كبيرة (زي 0.2 و 0.1) فـ النتيجة رح تكون عالية.
- d2 رح يضرب أرقام صغيرة جداً (زي 0.00001) فـ النتيجة رح تندفن وتكون واطية.
النتيجة: d1 بظهر للمستخدم أول واحد! 🏆

📈 29. ليش بنحول الضرب لـ "جَمِع"؟ (The Log Trick)

Ranking Function: f(q,d) = log p(q|d) = ∑ log p(wi|d)
يا خالي، بالرياضيات والبرمجة، لما نضرب أرقام صغيرة كتير (احتمالات) ببعض، النتيجة بتصير "مجهرية" والكمبيوتر بضيع (Underflow).
الحل الذكي: نستخدم الـ Logarithm.
log p(q | d) = ∑w ∈ q c(w, q) log p(w | d)
شو استفدنا؟ بدل ما نضل نضرب أرقام صعبة، صرنا نجمع قيم الـ Log. الجمع أسرع للكمبيوتر وأضمن للحسابات.

⚖️ 30. زبدة الموضوع (The Big Picture)

Retrieval problem → Estimation of p(w|d)
Different estimation methods → different ranking functions
يا بطل، هيك إحنا لخصنا كل علم الـ IR في هاي النقطة:

- مشكلة البحث (Retrieval Problem): هي أصلاً مشكلة "تقدير" للاحتمالية (Estimation). - إذا قدرت تحسب p(w|d) صح، رح تطلع نتائج بحث صح. - الضربة القوية: كل الفرق بين موديلات الـ IR بيجي من "كيف بنحسب هاي الـ p".
💡 قاعدة قدساوية:انسى كل التعقيد.. المهم هو كيف نقدر احتمال ظهور الكلمة بناءً على الملف. وهاض اللي رح يقودنا للسكشن الجاي: الـ Smoothing.

📈 31. كيف بنحسب الـ p(w|d) فعلياً؟

How to Estimate p(w|d): MLE vs. Smoothing
MLE vs Smoothing Graph
Visualization: The "Staircase" (MLE) vs. The "Smooth Curve" (Smoothing)
يا خالي، ركز في هاي الرسمة لأنها بتلخص صراع مدرستين في علم الإحصاء والـ IR:
1. Max. Likelihood (MLE)
PML(w|d) = c(w,d) / |d|
هي الطريقة "الناشفة". إذا الكلمة مش موجودة، بعطيها صفر فوراً. (لاحظ الخط الأسود المدرج كيف بينزل فجأة).
2. Smoothed LM
P(w|d) > 0 even if c(w,d)=0
هي الطريقة "الكريمة". بتوزع شوية احتمالات على كل الكلمات، عشان مستحيل تطلع صفر. (لاحظ الخط الأحمر المنقط كيف بيمتد).

💡 32. الزبدة من الرسمة

ليش بنوجع راسنا بالمنحنى الأحمر (Smoothing)؟

لأنه المنحنى الأسود (MLE) بيفترض إنه إذا الكلمة ما ظهرت بالملف، يعني احتمال ظهورها "مستحيل".. وهذا غلط! الكلمة ممكن تكون موجودة بس النص اللي بين إيدينا صغير.

"الـ Smoothing هو عملية إعادة توزيع الاحتمالات بعدالة!" ⚖️✨

33. السؤال الجوهري: كم "فكة" نعطي للكلمة المختفية؟

Key Question: What probability should be assigned to an unseen word?
يا خالي، إحنا اتفقنا إنه الكلمة اللي مش موجودة مستحيل تأخذ صفر.. بس كمان مش معقول نعطيها رقم عشوائي وخلاص! لازم يكون في "منطق" لهذا الاحتمال.
Let the probability of an unseen word be proportional to its probability given by a reference LM (e.g., Collection LM).
القاعدة القدساوية: "إذا ما لقيت الخبر بالبيت، اسأل عنه بالحارة".
يعني الكلمة اللي مش موجودة بالملف، بنروح نشوف قديه احتمالية ظهورها في كل الملفات (Collection). الكلمة المشهورة أصلاً بالحارة، رح تأخذ احتمالية "تصدّق" أحسن من الكلمة النادرة.

🧮 34. المعادلة التشعيبية (The Formula)

p(w | d) =
{
PSeen(w | d) if w is seen in d
αd p(w | C) otherwise
هي المعادلة مقسومة نصين:
  • لو الكلمة موجودة (Seen): بنستخدم نسخة "مخصومة" شوي من الاحتمال الأصلي (Discounted ML). ليش الخصم؟ عشان نوفر "فكة" للكلمات التانية.
  • لو الكلمة مش موجودة (Otherwise): بنروح لموديل الـ Collection (C)، وبنضرب احتمالية الكلمة هناك في معامل صغير (α).
الخلاصة: إحنا بنسرق شوية احتمالية من الكلمات الموجودة، وبنعطيها للكلمات المختفية بناءً على سمعتها في الـ Collection. 🚀✨

🧠 35. كيف فرطنا الـ "بعبع" الرياضي؟ (The Derivation)

Rewriting the Ranking Function with Smoothing
Mathematical Derivation of Smoothing
Visualizing: Splitting matched and unmatched words
هاي السلايد هي اللي بتخوف الطلاب، بس الفكرة فيها أبسط من ما بتبين. المعادلة اللي تحت هي مجرد إعادة ترتيب عشان الكمبيوتر يقدر يحسب الـ Score بسرعة.

🧱 36. تحليل أجزاء المعادلة النهائية

بعد كل "التعقيد" اللي بالرسمة، طلع معنا 3 أجزاء بيهمونا:
1. جزء الـ Matched Words: علاقة الكلمات اللي فعلياً موجودة بالملف. هاض الجزء هو الأهم لأنه بيتغير من ملف لملف.
2. جزء الـ Query Length (|q| log α): هاض ثابت لكل الملفات لنفس الـ Query.. يعني ما "بيحابي" ملف على حساب ملف ثاني.
3. جزء الـ Collection Score: برضه ثابت لكل الملفات (للمقارنة بين المستندات لنفس الـ Query).
⚠️ زبدة الموضوع: الجزء الأول اللي فيه (PSeen / α p(w|C)) هو اللي بحدد مين الملف اللي رح يطلع الأول. الباقي "تحصيل حاصل" بالحسابات.

🤝 37. المفاجأة الكبرى: السموثنق هو نفسه الـ TF-IDF!

Smoothing with p(w|C) ⇒ TF-IDF weighting + length norm.
Benefit of Rewriting Formula
Visualizing: Connecting Probabilistic Model with Vector Space Model
هاي السلايد هي "لحظة التنوير" في المادة. ليش غلبنا حالنا بكل هاي الرياضيات؟ عشان نكتشف إنه الـ Probabilistic Model لما نعمله سموثنق، بيتحول لشي بنعرفه وبنحبه: TF-IDF.

🔍 38. كيف صارت المعجزة؟ (Formula Breakdown)

1. الـ TF Weighting: متمثل في PSeen(w|d). كل ما زاد تكرار الكلمة بالملف، زاد السكور.
2. الـ IDF Weighting: متمثل في 1 / p(w|C). الكلمات المشهورة بالحارة (Collection) بنقلل حظها، والكلمات النادرة بنرفع حظها.
3. الـ Length Normalization: متمثل في log αd. هاض المعامل بضمن إنه الملفات الطويلة ما "تفتري" على الملفات القصيرة بمجرد طولها.
ليش في أجزاء بالرسمة مكتوب عليها "Ignore for ranking"؟ لأنها قيم ثابتة لكل الملفات في نفس عملية البحث، فما بتأثر مين الأول ومين الثاني.. لهيك بنشيلها عشان "نسهل الحسابات" ونخلي البرمجية سريعة (Efficient Computation).

📝 39. ملخص فكرة السموثنق (The Smoothing Recap)

قبل ما ندخل في "الطرق البرمجية" للسموثنق، خلينا نلخص اللي فهمناه لحد الآن:
1. ليش السموثنق ضروري؟ لولا السموثنق، كان أي كلمة ناقصة بالملف رح تعطيه سكور صفر وتعدمه تماماً من نتائج البحث.. وهاد مش منطق!
2. شو المرجع تبعنا؟ فكرة السموثنق العامة بتعتمد على الـ Collection LM (p(w|C)). يعني الكلمة المختفية بنعطيها سكور بناءً على سمعتها وشهرتها في "الحارة" (كل الداتا سيت).
3. شو النتيجة النهائية؟ السموثنق حول لنا الموديل الاحتمالي لمعادلة بتعمل 3 شغلات مع بعض:
  • بتحسب تكرار الكلمة (TF).
  • بتحسب ندرة الكلمة في الكوليكشن (IDF).
  • بتعمل "نورمالايزيشن" لطول الملف (Length Normalization).
Scoring is primarily based on the sum of weights on matched query terms.

🤔 40. السؤال القادم: شو هي "الطرق" الفعلية؟

However, how exactly should we smooth?
يا خالي، عرفنا "إنه" لازم نعمل سموثنق.. بس "كيف" بالزبط؟ الرياضيات ما بتفهم كلام، بتفهم أرقام وقوانين. السلايدات الجاية رح تفرجينا أشهر طريقتين بيستخدموهم في البحث:

1️⃣ Jelinek-Mercer Smoothing (Linear Interpolation).
2️⃣ Dirichlet Smoothing (Bayesian Smoothing).

1️⃣ Jelinek-Mercer (JM) Smoothing

Fixed coefficient linear interpolation
pλ(w|d) = (1 - λ) pML(w|d) + λ p(w|C)
هاي الطريقة جداً "دبلوماسية". بتحكي: "بدي آخد شوية من الملف وشوية من الحارة بنسب ثابتة".
- λ (Lambda): هو المعامل الثابت اللي بحدد قديه نعتمد على الحارة.
- المبدأ: خلط خطي (Linear Interpolation) بين الموديلين.

2️⃣ Dirichlet Prior Smoothing

Adding pseudo counts; adaptive interpolation
pμ(w|d) =
c(w,d) + μ p(w|c)
|d| + μ
هاي الطريقة "ذكية" ومرنة (Adaptive). بدل ما تجمع بنسب ثابتة، هي بتضيف "كلمات وهمية" (Pseudo counts) للملف.
- μ (Mu): هو المعامل اللي بحدد قوة السموثنق.
- الميزة: النسِبة هون بتتغير حسب طول الملف (|d|).. يعني السموثنق "بفهم" حجم الملف اللي بيتعامل معه.

🎓 الخلاصة النهائية للموديل (The Big Recap)

Effective ranking functions obtained using pure probabilistic modeling.
الافتراض الأول: ترتيب الملفات بناءً على "احتمالية إنتاج الملف للـ Query" هو نفسه الترتيب حسب العلاقة (Relevance).
الافتراض الثاني: الكلمات في الـ Query بتطلع بشكل مستقل عن بعض (Unigram Model).
الافتراض الثالث: لازم نستخدم الـ Collection LM عشان نعمل سموثنق ونمنع الـ Zero Score.
الافتراض الرابع: بنستخدم إما JM (ثابت) أو Dirichlet (مرن) عشان نطلع السكور النهائي.
خلصنا شابتر الـ Probabilistic Model بالكامل. صرت الآن فاهم ليش جوجل والسيستمز العالمية بترتب النتائج بهي الطريقة المعقدة والذكية.