עיבוד שפה טבעית

yuval k

New member
עיבוד שפה טבעית

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

DadleFish

New member
כמו שאמרת בעצמך,

לא הצלחתי להבין מה אתה רוצה
בעיקרון יש שתי גישות מרכזיות ל-NLP היום - סטטיסטית ו"תבונית". הראשונה, שנדמה לי שיש לה יותר מעריצים, מתבססת על סטטיסטיקה ותוכל למצוא מידע אודותיה על ידי חיפוש Statistical Natural Language Processing. בעזרת איסוף מידע כמותי על מילים, על משמעויות, על צמדי מילים וכו' מצליחים לפתור בעיות כמו disambiguation של משמעויות של מילה, תיוג מילים בתור חלקי משפט (Parts Of Speech) ועוד. השיטה השניה הולכת מהכיוון של המוח האנושי, ומנסה לנסח כללים ברורים שלפיהם אפשר להבין טקסט. את זו לא למדתי ולכן אני לא ממש יכול להרחיב אודותיה. Foundations of Statistical Natural Language Processing הוא ספר מומלץ וכדאי שתחפש אותו אם אתה רוצה להעמיק.
 

yuval k

New member
תודה!

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

DadleFish

New member
המשך

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

yuval k

New member
יש לך חתימה חכמה ../images/Emo13.gif

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

DadleFish

New member
infeasible

מכיר מודלים מרקוביים? ב-NLP יש מה שנקרא N-Gram, שזה רצף של N מילים. למשל, Hard disk זה N-Gram באורך 2 (וזה גם נקרא collocation - מילים שסכומן שונה ממשמעותן בנפרד). אם יש לך 40000 מילים, ואתה מחפש N-Grams באורך 2, יהיו לך 1600000000 אפשרויות. אם אתה רוצה TriGrams, יהיו לך 64000000000000 אפשרויות. הקטע המעצבן יותר הוא שבאמת צריך את כולן כדי לעשות smoothing להתפלגות - אי אפשר להסתמך רק על הצמדים שבאמת קיימים. בכל מקרה, קח לך את הספר שציינתי, ובנוסף אתה יכול להציץ בדף הבית של הקורס שאני עושה, יש שם חומר בעניין.
 
למעלה