תכנות בשפה טבעית

ברכות לד"ר רעות צרפתי מהמחלקה למתמטיקה ולמדעי המחשב, על זכייתה במענק המחקר ERC Starting Grant של האיחוד האירופי בנושא: Natural Language Programming: Turning Texts Into Executable Code

מענק ה ERC הוא מענק אינדיבדואלי הניתן לחוקרים מבטיחים בתחילת דרכם וניתן על-סמך מצויינות מחקרית של המועמד ושל ההצעה בלבד, והוא מהמענקים היוקרתיים ביותר של האיחוד האירופי.
מעל 2000 חוקרים התמודדו על המענקים, מתוכם עשרות בודדות זכו (כ-20 ממדעי המחשב מכל העולם) ולראשונה זכתה חוקרת מהאוניברסיטה הפתוחה במענק זה.
נושא ההצעה הוא: תכנות בשפה טבעית.
 
 
 
 
תקציר הצעת המחקר:
האם ניתן לתכנת מחשב בשפה אנושית?
שאלה זו העסיקה מתמטיקאים, פילוסופים, וחוקרים במדעי המחשב במשך תקופה ארוכה -- למעשה מאז ימיו הראשונים של המחשב האלקטרוני.
המחקר בהנדסת תוכנה ובתכנות לאורך השנים התמקד בשפות פורמליות. כיום קיימות שפות פורמליות עיליות, הדומות לשפה האנגלית, אך נשענות על אוסף מצומצם של חוקים תחביריים קשיחים הניתנים לפירוש אוטומטי על ידי המחשב. שפות אנושיות, המכונות גם שפות טבעיות -- כגון אנגלית, עברית, ערבית, רוסית, אמהרית, סינית וכיו"ב -- מתאפיינות לעומת זאת בערפול וברב משמעות. פערי משמעות אלו נפתרים בקלות על ידי דובר אנושי, אך מהווים חסם רציני במסגרת המאמצים להקנות למחשב יכולת הבנה של שפה אנושית.
השאלה המרכזית העומדת בבסיס המחקר הנוכחי הינה האם, וכיצד, ניתן להשתמש בשפה אנושית לתיכנות ויצירת תוכנה. כלומר ,האם יוכל המחשב להבין באופן אוטומטי הוראות, אלגוריתמים, הגדרת ממשקים ותיאורי תוכניות הנתונים לו בשפה טבעית כלשהיא -- ולא בשפה פורמלית -- על מנת לממש אותם כבשפת תכנות, ולהריץ אותם בעצמו?

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