עיבוד שפה – הסבר מופשט על עיבוד שפה טבעית(NLP)

נושא, מושא והקשר ל NLP

"זיו פצע את אריאל, והוא דימם למוות!"

ניסיון להבין את המושא "הוא" במשפט זה, מהטקסט לעיל, זוהי בעיה ענקית בעיבוד שפה טבעית(NLP).

לכך יש שם מפונפן בעצמו-> התייחסות משותפת(COREFERENCE).

כלומר, כאשר יש שני ביטויים בטקסט אשר מתייחסים לאותו דבר\אדם.

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

מבחינה מערכתית, מצד האלגוריתם, מסווגים צמד מילים כ- COREFERENCIAL או ככזה שהוא NOT COREFERENCIAL. לדוגמא- זיו- לעומת אריאל, זיו הינו NOT COREFERENCE ואילו אריאל הוא COREFERENCE. הסיווג המוצע בתחום זה הינו "עץ ההחלטות"(ת.ח) ברמה הסטטיסטית, אשר משתמשת בתכונות הבאות עבור צמד המילים המוצעות.

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

שמות עצם- האם שניהם שמות עצם? אחד מהם? אף אחד מהם?

מחרוזת התאמה- החפיפה בין שתי מילים(דוגמא: "הנשיא טראמפ" ו"הנשיא" כנראה יתייחסו לאותו אדם, מושא).

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

סיווג מוסכם סמנטי- האם שניהם באותו סיווג סמנטי אם בכלל? (אדם, ארגון ועוד).

מוסכמות מגדרית- אם שניהם מאותו מגדר(אם בכלל בתוך סכמה של מגדר).

סיווג מוסכם מקבילי- האם שניהם מקבילים? (לדוגמא: ראש ממשלת ישראל, בינימין נתניהו- משפט מקבילי ולכן הוא COREFERENCIAL).

התוצאה שהתקבלה דרך סיווג התוצאות הייתה F1 (ציון שניתן למדוד את מידת הדיוק דרך סיווג עץ ההחלטות, בעל דיוק של 60% אשר פעם היה נחשב כאחוזי סיווג מעולים).

בשנים האחרונות, בעיה זו מתמודדת באמצעות למידה עמוקה(DEEP LEARNING).

הרעיון של עיבוד שפה טבעית או בשפה מקצועית NLP- NATURAL LANGUAGE PROGRAMING, נמשכת עוד לתקופתה הפרה-היסטורית של האינטליגנציה המלאכותית.

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

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

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

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

הדרך הלשונית של עיבוד שפה טבעית דומה מאוד, למעט העובדה שתוכן- חינמי דקדוקי(קונטקסט פרי גרמרס) מוגבל מדי כדי לדגום בקלות משפטים בשפה טבעית, לכן בדר"כ נעשה שימוש בדקדוקי הקשר(Context-Sensitive Grammars).- ויש לא מעט ייצוגי CSG כיון שיש יכולות לבטא דומה מילים או משפטים מסוימים. אפילו עם ייצוגי CSG , שעדיין רק אומרים לך אין לנתח את המבנה התחבירי של משפטים, אתה תצטרך מודל אחר בכדי לתאר את הסמנטיקה. אם אתה מעוניין לעשות יותר מאשר לומר האם משפט הוא נכון מבחינה תחבירית או לא, תצטרך להשתמש בתיאוריית ייצוג השיח כמודל הנכון.

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

לכן, תחום עיבוד השפה הטבעית נתקע במשוכה. נדרש כמויות עצומות של תכנות בכדי לבנות את כל הכללים של יישומי NLP ובכך תוחם אותו לתחומים מוגבלים מאוד. אז, בשנות ה90, אנשי סטטיסטיקה בתחום הלמידת מכונה הגיעו, וניגשו לבעיות בעיבוד השפה הטבעית בפרספקטיבה שונה. הם למעשה נפטרו מכל התיאוריות הבלשניות, והחלו במודל פשוט של שפה אשר נקרא "תיק המילים" (BAG OF WORDS).

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

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

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

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

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

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

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

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

לבסוף, יש מחנה חדש שנכנס לתחום זה וזהו מחנה הלמידה העמוקה(DEEP LEARNING). עם למידה עמוקה, אתה לא צריך לדאוג ל"הנדסת תכונה" (FEATURE ENGINEERING). אתה פשוט מזין את הקובץ המאסיבי שלך, לרשת עצבית, מריץ את הBACKPROP על זה, והרשת עצבית לומדת את התבניות והחוקים מהדאטה הגולמי, או לפחות ככה זה נמכר בחוץ.

המאמר נלקח במקור מhttps://www.quora.com/What-do-natural-language-processing-algorithms-look-like

מאמרים נוספים
צור קשר
מקצועני הגיוס שלנו ישמחו לסייע לך
ליצירת קשר ושליחת קורות חיים

דואר אלקטרוני jobs@esr.co.il
טלפון : 03-9679545 \  פקס : 03-9654271
רחוב הרצל 30 ראשון לציון, ת.ד 15148.

image