דלג לתוכן
English

הרפתקאות טקסט והמנתח של שתי מילים

הגדרה

מנתח של שתי מילים (⁦two-word parser⁩) הוא הדרך שבה משחקי הרפתקה טקסטואליים מוקדמים הפכו שורת טקסט שהשחקן הקליד לפעולה בתוך המשחק: פועל אחד ושם עצם אחד, ותו לא. סקוט אדמס השתמש בשיטה הזאת כבר ב-1978. לא הייתה בה למידת מכונה בשום שלב: התוכנה רק השוותה את המילה שהוקלדה לרשימה סגורה וקבועה מראש של מילים מוכרות. זו "אשליה של הבנה". מדובר במערכת מבוססת חוקים, שיודעת רק את מה שתכנתו אותה לדעת, ולא במערכת שמבינה שפה.

💡 דוגמה

השחקן מקליד: ⁦TAKE LAMP⁩ (קח מנורה)

המחשב מבין: פועל=⁦TAKE⁩, שם עצם=⁦LAMP⁩ → מרים את המנורה.

השחקן מקליד: ⁦PLEASE GIVE ME THE LAMP⁩ (תן לי בבקשה את המנורה)

המחשב מבין: שום דבר. המנתח בודק רק את שתי המילים הראשונות, ו-⁦PLEASE⁩ אינו פועל שהוא מכיר. לכן הוא עונה שהוא לא מבין את הפקודה, אף שלאדם שקורא אותה המשמעות ברורה לגמרי.

איך מנתח של שתי מילים עובד בפועל

כל פקודה שהשחקן מקליד עוברת תהליך קבוע. התוכנה מפרידה את השורה למילים, משווה את המילה הראשונה לרשימת הפעלים שהיא מכירה (⁦NORTH, TAKE, DROP, GO⁩ ועוד), ואת המילה השנייה לרשימת שמות העצם (⁦LAMP, KEY, DOOR⁩). אם שתי המילים נמצאות ברשימות, המנתח מפעיל פעולה שתוכנתה מראש בשבילן. אם לא, הוא מדפיס הודעת שגיאה. בגלל מגבלות הזיכרון של המחשבים הביתיים בסוף שנות ה-70, המנתח של אדמס קיצר עוד יותר: לפי ויקיפדיה, הוא בדק בפועל רק את שלוש האותיות הראשונות של כל מילה. כך הקלדה מקרית וקצרה כמו ⁦LIG LAM⁩ פורשה בדיוק כמו ⁦LIGHT LAMP⁩ ("הדלק את המנורה"). זה חסך זיכרון, במחיר של דיוק.

מתחת למכסה המנוע: ממילים למספרים

קוד אמיתי של מנתח כזה, שפורסם במגזין ⁦START⁩ ב-1986 (בשפת התכנות ⁦C⁩), מראה תהליך של שלושה שלבים. פונקציה בשם ⁦split_word()⁩ מפרידה את המילה הראשונה מהשורה שהוקלדה. פונקציה בשם ⁦scan_commands()⁩ משווה אותה לרשימת פעלים קבועה, ומחזירה את מקומה ברשימה כ"אסימון" (⁦token⁩), כלומר מספר ולא טקסט. ⁦NORTH⁩, למשל, יכול להיות אסימון מספר 1. פונקציה מקבילה, ⁦scan_objects()⁩, עושה אותו דבר לשם העצם. אם אחת ההשוואות נכשלת, הפונקציה מחזירה אפס, והמשחק מדפיס שהוא לא הבין. ההבדל בין ⁦GIVE THE BOOK TO THE ALIEN⁩ לבין ⁦GIVE THE ALIEN THE BOOK⁩ מראה בדיוק למה שתי מילים לא מספיקות למשפט מורכב. בשני המשפטים התוצאה זהה, והחייזר מקבל את הספר, אבל סדר המושאים הפוך, ובשני חסרה גם מילת היחס ⁦TO⁩. לפי המגזין עצמו, כדי לפענח משפטים כאלה צריך לפחות הבנה בסיסית של חלקי המשפט באנגלית.

מה המנתח הזה לא יכול, ומה זה מלמד

מנתח של שתי מילים לא יכול להבין משפט כמו ⁦PLEASE GIVE ME THE LAMP⁩. הוא לא מחפש פועל ושם עצם בכל המשפט, אלא בודק רק את שתי המילים הראשונות, ו-⁦PLEASE⁩ אינו פועל מוכר. גם מילות קישור בין פקודות, שהופיעו רק במנתחים מתקדמים יותר, לא היו קיימות בשבילו. זו לא הייתה תקלה נקודתית אלא מגבלה מובנית: המערכת מזהה מילים, לא תחביר ולא כוונה. במילים פשוטות, זו לא בינה מלאכותית כפי שמבינים אותה היום, אלא אשליה של הבנה: חוקים קשיחים שנראים מבחוץ כמו שיחה.

הקפיצה למשפטים שלמים: Zork ו-The Hobbit

ב-1977 התחילו ארבעה אנשים ב-⁦MIT⁩ (שלושה סטודנטים ואיש סגל) לכתוב את ⁦Zork⁩. המנתח שלו תוכנן להבין פקודות מורכבות בהרבה משתי מילים, למשל ⁦PUT THE LAMP AND SWORD IN THE CASE⁩, עם מילת יחס ועם "⁦and⁩" שמחבר שני שמות עצם. ב-1979 הקימו כמה מהם את חברת ⁦Infocom⁩ כדי להפיץ את המשחק מסחרית. ב-1982 פרסמה חברת ⁦Melbourne House⁩ את ⁦The Hobbit⁩, שפותח באוסטרליה בידי ⁦Beam Software⁩. למשחק היה מנתח בשם ⁦Inglish⁩, שהבין משפטים מלאים, כינויי גוף, תוארי פועל, מילות יחס ופיסוק. לפי הערך על המשחק בוויקיפדיה, הוא הבין למשל את הפקודה ⁦ask Gandalf about the curious map then take sword and kill troll with it⁩. שני המשחקים נשארו מבוססי חוקים בדיוק כמו ⁦Adventureland⁩, אלא שהחוקים שלהם היו עשירים בהרבה. לפי הערך על ⁦Zork⁩ בוויקיפדיה, מבקר במגזין ⁦Softalk⁩ כתב ב-1981 שכל המשחקים האחרים מאז ⁦Colossal Cave Adventure⁩ הגבילו את השחקנים לשתי מילים בלבד. מגזין ⁦80 Micro⁩ אף תהה אם אפשר בכלל לסיים את ⁦Zork⁩, בגלל כל מה שהמנתח שלו מאפשר. התחרות הייתה ישירה: לפי הערך על ⁦Adventure International⁩, החברה של סקוט אדמס עצמו, היא איבדה נתח שוק במהירות כשהרפתקאות גרפיות כמו ⁦The Hobbit⁩ העלו את רף הציפיות, וההרפתקאות הגרפיות שלה נחשבו נחותות לעומתן.

מהחוקים של פעם לזיהוי הכוונות של היום

המנתח של שתי מילים הוא אב קדמון ישיר, מבוסס חוקים ולא מבוסס למידה, של שני תחומים שכל צ'אטבוט מודרני נשען עליהם: עיבוד שפה טבעית וזיהוי כוונות. זיהוי כוונות הוא הדרך שבה מערכת מחליטה מה המשתמש רוצה לעשות, ולא רק אילו מילים הוא כתב. ⁦ELIZA⁩, תוכנת הצ'אט המוקדמת מ-1966, עבדה על עיקרון דומה: זיהוי מילות מפתח, לא הבנה. ⁦SHRDLU⁩ מ-1970 הרחיבה את הרעיון לעולם מוגבל של קוביות, עם אוצר מילים גדול יותר, אבל עדיין סגור. וב-2019 הגיע ⁦AI Dungeon⁩, שהחליף את רשימת המילים הסגורה במודל שפה גדול, שמייצר תגובה חופשית לכל טקסט. התגובה לא תמיד נכונה, אבל היא כבר לא מוגבלת לרשימת מילים.

למה הקטגוריה הזו מתחילה כאן

משחקי ההרפתקה המוקדמים הם נקודת מוצא טבעית לקטגוריה הזו. בהם אנשים רגילים, ולא רק חוקרים במעבדה, נתקלו לראשונה בשאלה שעדיין עומדת במרכז הבינה המלאכותית: איך יודעים אם מחשב "הבין" אותך, ולא רק הגיב נכון? המנתח של שתי מילים נתן תשובה חד-משמעית: הוא לא הבין, אלא התאים מילים לרשימה סגורה. אבל האשליה שהוא יצר, התחושה שמתנהלת שיחה אמיתית, מלווה גם היום את מי שמשתמש בצ'אטבוטים שמבוססים על מודלי שפה, רק בעוצמה גדולה בהרבה.

📬 הגיליון השבועי של Wiki-AI

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

שלושה דורות של מנתחים במשחקי הרפתקה
מנתח של שתי מיליםמנתח של משפט מלאמודל שפה גדול
דוגמת פקודהTAKE LAMPPUT THE LAMP AND SWORD IN THE CASEטקסט חופשי לגמרי, בכל ניסוח
דוגמת משחקAdventureland, 1978Zork ו-The Hobbit, 1977–1982AI Dungeon, 2019
מבוסס עלרשימת מילים סגורה, שהושוותה לפי חוקים קשיחיםדקדוק של חוקים מורכב בהרבה, שנכתב בידמודל שפה שאומן על כמויות עצומות של טקסט
המגבלה המרכזיתרק פועל אחד ושם עצם אחד; אצל אדמס נבדקו רק 3 האותיות הראשונות של כל מילהמשפטים מורכבים, אבל עדיין בתוך אוצר מילים ותחביר שנקבעו מראשעלול להמציא תשובה (הזיה) או לסטות מעולם המשחק

שאלות נפוצות ❓

מה זה בכלל "מנתח" (parser) במשחק הרפתקה?

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

למה PLEASE GIVE ME THE LAMP לא עובד במשחק כזה, ו-TAKE LAMP כן עובד?

כי המנתח בודק רק את שתי המילים הראשונות, ומחפש בהן פועל ואחריו שם עצם. GIVE יכול להיות פועל מוכר, אבל PLEASE בא לפניו ואינו פועל, ולכן המנתח נתקע כבר במילה הראשונה.

זו הייתה בינה מלאכותית במובן של היום?

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

במה Zork ו-The Hobbit היו שונים מהמנתח של שתי מילים?

שניהם הבינו משפטים מורכבים בהרבה, עם מילות יחס, כינויי גוף ופקודות שמחוברות ב-"and". אבל הם נשארו מבוססי חוקים, לא מבוססי למידה.

מה הקשר בין המנתחים האלה לצ'אטבוטים של היום?

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

שתפו:וואטסאפטלגרם

מצאתם טעות בערך, או שיש לכם מקור שכדאי להוסיף? כתבו לנו