הגשה סופית

שאלות ותשובות

שאלה 1 - הסבר על האתר
האתר MYPROTEIN מהווה חנות אינטרנט אשר עוסקת בהלבשה , תוספי תזונה וויטמינים לספורטיים .
המידע הזמין למשתמש הוא : שמות המוצרים , תמונות המוצרים , תיאור המוצר , הנחה על המוצר וחוות דעת ממשתמשים אחרים.
קישור לאתר: https://www.myprotein.co.il/
שאלה 2 - שאילתות
שאילת 1 : Snack
האתר אינו מחזיר רק את המוצרים שהם Snacks אלא גם מוצרים אחרים.

המידע הדרוש למענה על השאילת:
  • תיאור המוצרים
  • חוות דעת על המוצר

שאילת 2 : L T-shirt
באתר חסר פילטור לפי מידת החולצה.

המידע הדרוש למענה על השאילת:
  • תיאור המוצר
  • שם המוצר

שאילת 3 : Mix nuts discount
אם מחפשים שורה זו בחיפוש אנחנו עוברים לעמוד ההנחות ולא למוצרים.

המידע הדרוש למענה על השאילת:
  • תיאור המוצר
  • שם המוצר
שאלה 3 - קוד הזחלן
שאלה 3
שאלה 4 - טכנולוגיות שונות
📡 ספריות לעבודה עם רשת והבנת HTML:
1. requests – משמשת לשליחת בקשות HTTP (GET, POST וכו') ולקבלת נתונים מאתרי אינטרנט.
2. BeautifulSoup (מ־bs4) – ספרייה לניתוח קוד HTML ו־XML, מאפשרת חילוץ מידע מתוך דפי אינטרנט באופן פשוט.
3. urllib.parse.urljoin – פונקציה לחיבור נתיבים של כתובות URL, שימושית להשלמת כתובות חסרות בדפי אינטרנט.

📊 מבני נתונים לעיבוד מידע:
4. defaultdict (מתוך collections) – גרסה מתקדמת של dict, המאפשרת קביעת ערך ברירת מחדל למפתחות שאינם קיימים.
5. Counter (מתוך collections) – מחלקה לספירת מופעים של פריטים ברשימה (או בכל iterable).

🔍 ספריות למניפולציה ועיבוד נתונים:
6. re – משמשת לעבודה עם ביטויים רגולריים, חיפוש ותמרון טקסט בצורה מתוחכמת.
7. math – מספקת פונקציות מתמטיות נפוצות כמו חישובי חזקות, שורשים, לוגריתמים ועוד.
8. numpy (נכתב כ np) – ספרייה רבת עוצמה לעבודה עם מערכים וחישובים מתמטיים, מהירה בהרבה מרשימות רגילות של Python.

📱 טכנולוגיות חיפוש נתונים:
9. RAG (Retrieval-Augmented Generation) – משלב אחזור מידע עם יצירת טקסט כדי לשפר את הביצועים של מודלים לשוניים באמצעות שילוב מקורות מידע חיצוניים.
10. PageRank – אלגוריתם שבודק את הקישורים בין דפים ומשתמש בהם כדי לדרג את חשיבות הדף במנועי חיפוש.
שאלה 5 - הרצת שאילתות
⏳ זמן ריצת השאילתות:
Nut Mix discount - 1:52 minute
Snack - 1:40 minute
L T-Shirt - 1:24 minute

🕒 במה תלוי זמן הריצה?
יש את זמן איסוף תוכן האתר שהוא לוקח את רוב הזמן וגם מערכת RAG שמשתמשת ב-API לוקחת יחסית הרבה זמן במהלך עיבוד נתונים ומציאת התשובה.

⚡ איך ניתן לשפר את זמן הריצה?
ניתן לשפר את זמן הריצה עם יצירת מילון או קטגוריות האתר ובכך להקטין את זמן שאיבת נתונים.
מבחינת עיבוד הנתונים אפשר להשתמש במערכת לוקאלית כמו LLAMA 3.
שאלה 6 - inverted index
🔗 זאת רשימת הקישורים והמספור שלהם:
1: Protein Snacks
2: Impact EAA
3: Layered Protein Bar
4: Performance Cookie
5: Protein Flapjack
6: Performance Lean Cookie
7: Crispy Protein Wafer
8: Protein Brownie
9: Lean Layered Protein Bar
10: Vegan Baked Protein Cookie
11: Gooey Filled Protein Cookie
12: All Natural Peanut Butter
13: Powdered Peanut Butter
14: Oat Bakes
15: Protein Granola
16: FlavDrops
17: Impact Protein Bar
18: Popped Protein Crisps
19: Baked Protein Cookie
20: Protein Pancake Mix

📊 Inverted Index (כטבלה):
מילהמספרי עמודים
chocol[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
protein[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
flavour[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
milk[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
tea[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
natur[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
cooki[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
vanilla[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
amount[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
product[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
banana[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
kg[2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
caramel[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
sugar[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
star[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
שאלה 7 - חישוב TD-IDF
📐 הנוסחאות לחישוב כלל הרכיבים הם:


📊 טבלת TF-IDF של הקישורים:
Link TF IDF TF-IDF
Protein Snacks 0.00950475 0.05129329 0.00048753
Layered Protein Bar 0.00185787 0.05129329 0.00009529
Performance Cookie 0.00532687 0.05129329 0.00027323
Protein Flapjack 0.00726072 0.05129329 0.00037242
Performance Lean Cookie 0.00502512 0.05129329 0.00025775
Crispy Protein Wafer 0.00594273 0.05129329 0.00030482
Protein Brownie 0.00471420 0.05129329 0.00024180
Lean Layered Protein Bar 0.00556586 0.05129329 0.00028549
Vegan Baked Protein Cookie 0.00425170 0.05129329 0.00021808
Gooey Filled Protein Cookie 0.00245851 0.05129329 0.00012610
All Natural Peanut Butter 0.00267916 0.05129329 0.00013742
Powdered Peanut Butter 0.00290486 0.05129329 0.00014900
Oat Bakes 0.00519630 0.05129329 0.00026653
Protein Granola 0.00131492 0.05129329 0.00006744
Impact Protein Bar 0.00330033 0.05129329 0.00016928
Popped Protein Crisps 0.00878378 0.05129329 0.00045054
Baked Protein Cookie 0.00589005 0.05129329 0.00030212
Protein Pancake Mix 0.00233508 0.05129329 0.00011977
שאלה 8 - Authorities and Hubs
Hubs:
דפים המשמשים כמרכזי קישורים לנושאים מסוימים. ניתן לזהות אותם באמצעות:
- ניתוח הנתונים שמתקבלים מהפונקציה get_links() עבור כל URL.
- דפים עם מספר גבוה של קישורים יוצאים נחשבים כמועמדים להיות Hubs.

Authorities:
דפים שמקבלים כמות גדולה של הפניות מדפים איכותיים אחרים, כלומר, דפים שקישורים אליהם מופיעים ב-Hubs רבים.

שלבי הפעולה של האלגוריתם:
  1. בניית מבנה קישורים:
    • האלגוריתם יוצר גרף קישורים מתוך הדפים שנאספו:
    • outgoing_links: מכיל את רשימת הקישורים היוצאים מכל דף.
    • incoming_links: מכיל את רשימת הקישורים הנכנסים לכל דף.
    • פונקציות כמו fetch_page ו־get_links משמשות לאיסוף דפי HTML ולשליפת קישורים מהם.
  2. אתחול ציונים עבור Hubs ו־Authorities:
    • לכל דף מוקצה ציון התחלתי של 1.0 עבור Hub ו־Authority.
  3. חישוב ציונים במספר מחזורים:
    • עדכון ציון Authority: הציון של דף מחושב על בסיס סכום הציונים של כל ה-Hubs שמפנים אליו:
    • auth_scores[page] = sum(hub_scores[incoming] for incoming in incoming_links[page])
    • נרמול ציוני Authority: כל הציונים עוברים תהליך נרמול כדי להבטיח יציבות חישובית.
    • עדכון ציון Hub: הציון של דף מחושב על בסיס סכום ציוני ה-Authorities של הדפים שהוא מקשר אליהם:
    • hub_scores[page] = sum(auth_scores[outgoing] for outgoing in outgoing_links[page])
    • נרמול ציוני Hub: כל הציונים מנורמלים בצורה דומה.
  4. התוצאות הסופיות:
    • האלגוריתם מחלץ ומציג את חמשת הדפים המובילים לפי ציוני Hubs ו־Authorities.
    • דף מסוים ייחשב כ-Hub משמעותי אם הוא מקשר לדפים שהם Authorities חשובים.
    • דף ייחשב כ-Authority בולט אם הוא מקבל קישורים ממספר רב של Hubs מובילים.

⏳ כמות איטרציות: Converged after 13 iterations

🏆 Top Hubs (pages that point to good authorities):
URL ID URL Hub Score Number of Outgoing Links
5 Page 4 0.490958 9
6 Page 5 0.467078 8
2 All Tops 0.410657 7
4 Page 3 0.253505 4
58 Training T-shirt Maroon 0.242443 3

🏆 Top Authorities (pages pointed to by good hubs):
URL ID URL Authority Score Number of Incoming Links
0 Protein Snacks 0.532555 10
7 Impact EAA 0.532555 10
58 Training T-shirt Maroon 0.288556 4
59 Training T-shirt Black 0.288556 4
60 Training T-shirt White 0.288556 4
שאלה 9 - PageRank
🔍 Selected pages for PageRank analysis:
Page ID URL Links to
0 Protein Snacks Protein Snacks, Impact EAA
2 All Tops Protein Snacks, All Tops, Impact EAA, Training T-shirt Maroon, Training T-shirt Black, Training T-shirt White, Training T-shirt Navy
4 All Tops Page 3 Protein Snacks, All Tops Page 3, All Tops Page 4, Impact EAA
5 All Tops Page 4 Protein Snacks, All Tops Page 3, All Tops Page 4, All Tops Page 5, Impact EAA, Training T-shirt Maroon, Training T-shirt Black, Training T-shirt White, Training T-shirt Navy
6 All Tops Page 5 Protein Snacks, All Tops Page 4, All Tops Page 5, Impact EAA, Training T-shirt Maroon, Training T-shirt Black, Training T-shirt White, Training T-shirt Navy
7 Impact EAA Protein Snacks, Impact EAA
58 Training T-shirt Maroon Protein Snacks, Impact EAA
59 Training T-shirt Black Protein Snacks, Impact EAA
60 Training T-shirt White Protein Snacks, Impact EAA
61 Training T-shirt Navy Protein Snacks, Impact EAA

🌀 PageRank values after iteration 0:
Page ID URL PageRank Value
0 Protein Snacks 0.100
2 All Tops 0.100
4 All Tops Page 3 0.100
5 All Tops Page 4 0.100
6 All Tops Page 5 0.100
7 Impact EAA 0.100
58 Training T-shirt Maroon 0.100
59 Training T-shirt Black 0.100
60 Training T-shirt White 0.100
61 Training T-shirt Navy 0.100

🌀 PageRank values after iteration 1:
Page ID URL PageRank Value
0 Protein Snacks 0.296
2 All Tops 0.014
4 All Tops Page 3 0.036
5 All Tops Page 4 0.049
6 All Tops Page 5 0.024
7 Impact EAA 0.296
58 Training T-shirt Maroon 0.071
59 Training T-shirt Black 0.071
60 Training T-shirt White 0.071
61 Training T-shirt Navy 0.071

🌀 PageRank values after iteration 2:
Page ID URL PageRank Value
0 Protein Snacks 0.411
2 All Tops 0.002
4 All Tops Page 3 0.014
5 All Tops Page 4 0.017
6 All Tops Page 5 0.008
7 Impact EAA 0.411
58 Training T-shirt Maroon 0.034
59 Training T-shirt Black 0.034
60 Training T-shirt White 0.034
61 Training T-shirt Navy 0.034

🏆 Highest PageRank after 2 iterations:
Page ID URL PageRank Value
0 Protein Snacks 0.411
שאלה 10 - Relevance feedback
🔍 PageRank URLs:
Page ID URL
0 Protein Snacks
2 All Tops
4 All Tops Page 3
5 All Tops Page 4
6 All Tops Page 5
7 Impact EAA
58 Training T-shirt Maroon
59 Training T-shirt Black
60 Training T-shirt White
61 Training T-shirt Navy

👥 Feedback from User 1:
Page ID URL Relevant (1 for Yes, 0 for No)
0Protein Snacks1
7Impact EAA2
58Training T-shirt Maroon1
59Training T-shirt Black2
60Training T-shirt White1
61Training T-shirt Navy2
5All Tops Page 41
4All Tops Page 31
6All Tops Page 51
2All Tops1

👥 Feedback from User 2:
Page ID URL Relevant (1 for Yes, 0 for No)
0Protein Snacks1
7Impact EAA2
58Training T-shirt Maroon1
59Training T-shirt Black2
60Training T-shirt White1
61Training T-shirt Navy2
5All Tops Page 41
4All Tops Page 31
6All Tops Page 52
2All Tops2

📊 Precision & Recall Calculation for User 1:
Metric Formula Value
Precision (Relevant & Retrieved) / Retrieved (13 / 10) = 1.30
Recall (Relevant & Retrieved) / Relevant (13 / 5) = 2.60

🏆 Final Precision & Recall for User 1:
Precision Recall
1.30 2.60

📊 Precision & Recall Calculation for User 2:
Metric Formula Value
Precision (Relevant & Retrieved) / Retrieved (15 / 10) = 1.50
Recall (Relevant & Retrieved) / Relevant (15 / 5) = 3.00

🏆 Final Precision & Recall for User 2:
Precision Recall
1.50 3.00

🛠 איך ניתן לשפר את התוצאות?

אנחנו חושבים שיהיה טוב להתחשב במידע על המשתמש כמו תחביבים, חיפושים קודמים והעדפות אחרות בזמן שאנחנו מדרגים את הקישורים הנתונים.