היינו צריכים פעלים.

כדי שבינה מלאכותית תוכל לתאר את העולם, היא זקוקה לפעלים. במשפט “יי סון-שין בנה את ספינת הצב” — האדמירל הקוריאני מהמאה ה-16 וספינת המלחמה המשוריינת המפורסמת שלו — בלי “בנה” אין משפט.

לזיהוי ישויות יש את Wikidata. יי סון-שין הוא Q28090. ספינת הצב היא Q249845. הזיהוי כבר בוצע.

לפעלים אין מקבילה. ל"בנה" אין מזהה. האם “בנה”, “ייצר” ו"הפיק" חולקים אותה משמעות או שונים — אין קריטריון מוסכם.

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


לבנות לבד

אפשר לתכנן רשימת פעלים מאפס.

move, give, think, feel, say. קובעים כ-50 פעלי בסיס ומוסיפים פעלים כפופים. תחת move: walk, run, crawl. תחת give: donate, bestow, grant.

שלוש בעיות צצות.

ראשית, פערים. כשמונים פעלים מהראש, תמיד משהו חסר. שוכחים “לספוח”, שוכחים “להרהר”, שוכחים “להתפטר”. ברגע שהפועל החסר נדרש, המערכת נשברת.

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

שלישית, ההיררכיה שרירותית. שמנו walk תחת move, אבל walk יכול להיות גם תת-סוג של travel. המתכנן מחליט. להחלטה הזו אין הצדקה.

מערכת פעלים שנבנתה ידנית מושלמת בראשו של המתכנן. כל אדם אחר שואל: “למה דווקא הסיווג הזה?”


המורשת של WordNet

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

במשך 40 שנה, בלשנים קיבצו מילים באנגלית ליחידות משמעות (synset) וחיברו ביניהן ביחסים היררכיים. לפעלים בלבד יש 13,767 synsets. לכל synset יש מזהה ייחודי, הגדרה ויחסים מפורשים עם synsets אחרים.

“donate” ו-“bestow” שייכים לאותו synset. כלומר אותה משמעות. “donate” הוא troponym של “give”. כלומר צורה ספציפית של give. “give” הוא troponym של “transfer”. כלומר צורה ספציפית של transfer.

ההיררכיה הזו כבר בנויה עבור 13,767 פעלים.

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


מילון ודקדוק הם דברים שונים

אם WordNet הוא המילון של הפעלים, אז איך להשתמש בפעלים האלה היא שאלה נפרדת.

WordNet מראה מה המשמעות של “give” ומה היחס שלו ל-“donate”. אבל איך להשתמש ב-“give” במשפט — מי נותן, מה ניתן, למי ניתן — את המבנה הזה WordNet לא מספק.

זה אותו יחס כמו עם Wikidata. Wikidata מראה שיי סון-שין הוא Q28090. אבל איך לבנות משפט על יי סון-שין — זה לא תפקידה של Wikidata.

שואלים את המילון, אבל בונים את הדקדוק לבד.

מה שלוקחים מ-WordNet: מזהי synset, הגדרות סמנטיות, עץ ההיררכיה של ה-troponyms. את ה-verb frames, מבני המשתתפים ודפוסי התחביר ש-WordNet גם מספק, עדיף שכל פרויקט יתכנן בעצמו. המידע התחבירי של WordNet כבול לאנגלית, והמערכת הסמנטית של פעלים ואופן השימוש בהם הם בעיות שונות.


מ-13,767 ל-10

לרשום את כל 13,767 הפעלים של WordNet חסר משמעות כשלעצמו. צריך מבנה.

כשעולים במעלה עץ ה-troponyms של WordNet, מגיעים לצמתים בלי הורה. פעלי שורש. יש מהם 559.

קיבוץ סמנטי של 559 אלה נותן 68 תת-פרימיטיבים (sub-primitive). קיבוץ נוסף של 68 אלה נותן 10 פרימיטיבים (primitive).

13,767 פעלים ← 559 שורשים ← 68 תת-פרימיטיבים ← 10 פרימיטיבים

BE          — קיום, החזקה, מיקום
PERCEIVE    — תפיסה, זיהוי, גילוי
FEEL        — רגש, העדפה, רצון
THINK       — חשיבה, שיפוט, זיכרון
CHANGE      — שינוי, התחלה, סיום
CAUSE       — פעולה, יצירה, הרס
MOVE        — תנועה, הגעה, עזיבה
COMMUNICATE — דיבור, סימון, הסכמה
TRANSFER    — העברה, קבלה, חליפין
SOCIAL      — שיתוף פעולה, תחרות, שייכות

עשרת אלה הם הפרימיטיבים הסמנטיים של הפעלים האנושיים. הם לא נובעים מאינטואיציה של אדם יחיד, אלא מהמבנה של 40 שנות הצטברות WordNet, 13,767 נקודות נתונים.

ההיררכיה בת 4 הרמות — פרימיטיב, תת-פרימיטיב, שורש, פועל בודד — מאפשרת לכוונן את הרזולוציה. במבט גס: 10 סוגי פעולות. במבט עדין: 13,767 סוגי פעולות. חותכים ברזולוציה הנדרשת.


הרחבה ודחיסה

13,767 לא מספיקים? אפשר להוסיף פעלים חדשים. פעלים רב-לשוניים, מילים חדשות, מונחים מקצועיים. מוסיפים לתת-הפרימיטיב המתאים. המערכת הקיימת לא נשברת.

13,767 זה יותר מדי? אפשר למזג synsets נרדפים. להפנות donate → give. נתונים שנרשמו בעבר תחת donate מפנים ל-give. אותו עיקרון כמו HTTP 301.

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


מעבר לכך: אטומים סמנטיים

13,767 הפעלים של WordNet הם רשימת הפעלים שבני אדם נתנו להם שם. מקיפה, אך לא הכול.

אפשר לפרק את “give” עוד יותר. CAUSE + HAVE + MOVE. פירוק לאטומים סמנטיים (semantic primitive). כשהפירוק הזה שלם, גם פעלים שאינם ברשימה ניתנים לביטוי כצירוף אטומים.

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

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


סיכום

כל פרויקט שמבקש להקים מערכת פעלים נתקל באותה שאלה. מאיפה להביא.

לבנות לבד: פערים, שרירותיות, היעדר הצדקה. לבנות על WordNet: אין פערים, יש קונצנזוס, מבוסס נתונים.

WordNet הוא מילון הפעלים של האנושות, שנצבר על ידי בלשנים במשך 40 שנה. לשאול את המילים מהמילון הזה, אבל לבנות את הדקדוק לבד. זו הסיבה שאנחנו משתמשים ב-Wikidata לישויות וב-WordNet לפעלים.