עיבוד שפה טבעית הוא היבט של למידת מכונה המאפשר לעבד מילים כתובות לשפה ידידותית למכונה. טקסטים כאלה הופכים לאחר מכן לשינויים וניתן להריץ עליהם אלגוריתמים חישוביים כרצונך.
ההיגיון מאחורי הטכנולוגיה הכובשת הזו נראה מורכב אבל לא. וגם עכשיו, עם הבנה מוצקה של תכנות בסיסי בפייתון, אתה יכול ליצור מעבד תמלילים חדשני עם ערכת הכלים לשפה הטבעית (NLTK).
הנה איך להתחיל עם ה- NLTK של פייתון.
מהו NLTK וכיצד הוא פועל?
כתוב עם פייתון, NLTK כולל מגוון פונקציות מניפולציות של מחרוזות. זוהי ספריית רב שפות טבעית עם מאגר מודלים עצום ליישומי שפות טבעיות שונות.
עם NLTK, אתה יכול לעבד טקסטים גולמיים ולחלץ מהם תכונות משמעותיות. הוא מציע גם מודלים לניתוח טקסט, דקדוקים מבוססי תכונה ומשאבים לקסיקאליים עשירים לבניית מודל שפה שלם.
כיצד להגדיר NLTK
ראשית, צור תיקיית שורש פרוייקטים בכל מקום במחשב האישי שלך. כדי להתחיל להשתמש בספריית NLTK, פתח את הטרמינל שלך לתיקיית הבסיס שיצרת קודם לכן ו- ליצור סביבה וירטואלית.
לאחר מכן, התקן את ערכת הכלים של השפה הטבעית בסביבה זו באמצעות צִפצוּף:
pip להתקין nltk
עם זאת, NLTK כולל מגוון מערכי נתונים המשמשים בסיס למודלים חדשים של שפה טבעית. כדי לגשת אליהם, עליך לסובב את הורדת הנתונים המובנית NLTK.
אז, לאחר שהתקנת בהצלחה את NLTK, פתח את קובץ ה- Python שלך באמצעות כל עורך קודים.
לאחר מכן ייבא את nltk מודול והפעל את הורדת הנתונים באמצעות הקוד הבא:
pip להתקין nltk
nltk.download ()
הפעלת הקוד לעיל באמצעות הטרמינל מעלה ממשק משתמש גרפי לבחירה והורדה של חבילות נתונים. כאן יהיה עליך לבחור חבילה וללחוץ על הורד כפתור כדי לקבל אותו.
כל חבילת נתונים שאתה מוריד עוברת לספרייה שצוינה ב הורד מדריך שדה. אתה יכול לשנות זאת אם תרצה. אך נסה לשמור על מיקום ברירת המחדל ברמה זו.
קָשׁוּר: עורכי הקוד החינמיים הטובים ביותר לכתיבת האפליקציה הראשונה שלך
הערה: חבילות הנתונים מתווספות למשתני המערכת כברירת מחדל. אז אתה יכול להמשיך להשתמש בהם לפרויקטים הבאים ללא קשר לסביבת פייתון שבה אתה משתמש.
כיצד להשתמש ב- Tokenizers NLTK
בסופו של דבר, NLTK מציעה מודלים מאומנים לאסימון של מילים ומשפטים. בעזרת כלים אלה תוכל ליצור רשימה של מילים ממשפט. או להפוך פסקה למערך משפטים הגיוני.
להלן דוגמה לאופן השימוש ב- NLTK word_tokenizer:
ייבוא nltk
מאת nltk.tokenize ייבוא word_tokenize
word = "זוהי טקסט לדוגמה"
tokenWord = word_tokenizer (מילה)
הדפס (tokenWord)
תְפוּקָה:
['זה', 'זה', 'אן', 'דוגמה', 'טקסט']
NLTK משתמש גם במכשיר משפטים מאומן מראש שנקרא PunktSentenceTokenizer. זה עובד על ידי פיסת פסקה לרשימת משפטים.
בואו נראה איך זה עובד עם פסקה בת שני משפטים:
ייבוא nltk
מאת nltk.tokenize ייבוא word_tokenize, PunktSentenceTokenizer
משפט = "זהו טקסט לדוגמה. זהו הדרכה ל- NLTK "
אסימון = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (משפט)
הדפסה (גניבה_משפט)
תְפוּקָה:
['זוהי טקסט לדוגמה.', 'זוהי הדרכה ל- NLTK']
אתה יכול לסמן עוד כל משפט במערך שנוצר מהקוד לעיל באמצעות word_tokenizer ו פייתון ללולאה.
דוגמאות כיצד להשתמש ב- NLTK
כך שאמנם איננו יכולים להוכיח את כל מקרי השימוש האפשריים ב- NLTK, אך הנה כמה דוגמאות כיצד תוכל להתחיל להשתמש בו כדי לפתור בעיות בחיים האמיתיים.
קבל הגדרות Word וחלקי הדיבור שלהן
NLTK כולל מודלים לקביעת חלקי דיבור, קבלת סמנטיקה מפורטת ושימוש בהקשר אפשרי במילים שונות.
אתה יכול להשתמש ב wordnet מודל ליצירת משתנים לטקסט. לאחר מכן קבע את משמעותו וחלקו של הדיבור.
לדוגמה, בואו לבדוק את המשתנים האפשריים של "קוף:"
ייבוא nltk
מ- nltk.corpus ייבוא wordnet כ- wn
הדפס (wn.synsets ('קוף'))
תְפוּקָה:
[Synset ('קוף.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]
הקוד הנ"ל פולט חלופות אפשריות של מילים או תחבירים וחלקי דיבור עבור "קוף".
כעת בדוק את המשמעות של "קוף" באמצעות הַגדָרָה שיטה:
קוף = wn.synset ('קוף.n.01'). הגדרה ()
תְפוּקָה:
כל אחד מהפרימטים בעלי זנב ארוך (למעט הפרוזיאנים)
אתה יכול להחליף את המחרוזת בסוגריים בחלופות שנוצרות אחרות כדי לראות מה פלט NLTK.
ה pos_tag אולם המודל קובע את חלקי הדיבור של מילה. אתה יכול להשתמש בזה עם word_tokenizer אוֹ PunktSentenceTokenizer () אם אתה מתמודד עם פסקאות ארוכות יותר.
כך זה עובד:
ייבוא nltk
מאת nltk.tokenize ייבוא word_tokenize, PunktSentenceTokenizer
word = "זהו טקסט לדוגמה. זהו הדרכה בנושא NLTK "
אסימון = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (מילה)
עבור i ב- tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
הדפסה (partsOfSpeech)
תְפוּקָה:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
הקוד לעיל מזווג כל מילה מסומנת עם תג הדיבור שלה בצמד. אתה יכול לבדוק את המשמעות של תגים אלה ב פן טריבנק.
לקבלת תוצאה נקייה יותר, ניתן להסיר את התקופות בפלט באמצעות החלף() שיטה:
עבור i ב- tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
הדפסה (partsOfSpeech)
פלט נקי יותר:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]
הדמיה של מגמות תכונה באמצעות עלילת NLTK
הפקת תכונות מטקסטים גולמיים היא לעיתים קרובות מייגעת וגוזלת זמן. אבל אתה יכול להציג את קובעי התכונות החזקים ביותר בטקסט באמצעות עלילת מגמת הפצת התדרים NLTK.
עם זאת, NLTK מסתנכרן עם matplotlib. אתה יכול למנף זאת כדי לצפות במגמה ספציפית בנתונים שלך.
הקוד להלן, למשל, משווה קבוצה של מילים חיוביות ושליליות על חלקת הפצה באמצעות שתי האלפביתות האחרונות שלהן:
ייבוא nltk
מאת nltk import ConditionalFreqDist
רשימות של מילים שליליות וחיוביות:
שלילי = [
'לא נורמלי', 'לבטל', 'מתועב',
'מתועב', 'מתועב', 'תועבה'
]
חיובי = [
'בשפע', 'בשפע', 'בשפע',
'בשפע', 'נגיש', 'נגיש'
]
# חלק את הפריטים בכל מערך לזוגות חבטות המסומנים
# ושלב את שני המערכים:
pos_negData = ([("שלילי", נג) עבור neg בשלילי]+[("חיובי", פוזה) עבור pos בחיובי])
# חלץ את שני האלפביתים האחרונים מהמערך שהתקבל:
f = ((pos, i [-2:],) עבור (pos, i) ב- pos_negData)
# צור עלילת הפצה של האלפבית הללו
cfd = ConditionalFreqDist (f)
cfd.plot ()
עלילת חלוקת האלפבית נראית כך:
במבט מקרוב על הגרף, מילים המסתיימות ב- לִספִירַת הַנוֹצרִים, ds, le, nd, ו nt יש סיכוי גבוה יותר להיות טקסטים חיוביים. אבל אלה שמסתיימים עם אל, ly, עַל, ו te סביר יותר שמילים שליליות.
הערה: למרות שהשתמשנו כאן בנתונים שנוצרו בעצמנו, תוכל לגשת לחלק ממערכות הנתונים המובנות של NLTK באמצעות קורא ה- Corpus שלו על ידי התקשרות אליהם מהאתר קורפוס כיתה של nltk. אולי תרצה להסתכל על תיעוד חבילת קורפוס כדי לראות כיצד אתה יכול להשתמש בו.
עם הופעתן של טכנולוגיות כמו אלקסה, זיהוי דואר זבל, צ'ט בוטים, ניתוח סנטימנטים ועוד, נראה כי עיבוד השפה הטבעית מתפתח לשלב התת-אנושי שלה. למרות ששקלנו רק כמה דוגמאות למה שמציע NLTK במאמר זה, לכלי יש יישומים מתקדמים יותר מהיקף הדרכה זו.
לאחר קריאת מאמר זה, אמור להיות לך מושג טוב כיצד להשתמש ב- NLTK ברמת בסיס. כל שנותר לך לעשות כעת הוא להוציא את הידע הזה לפעולה בעצמך!
מתעניין בתחום למידת מכונה? התחל עם הספריות האלה.
קרא הבא
- תִכנוּת
- פִּיתוֹן
- שפות תכנות
- תִכנוּת
Idowu נלהב מכל דבר חכם וטכנולוגי. בזמנו הפנוי הוא משתעשע בקידוד ועובר ללוח השחמט כשהוא משועמם, אבל הוא גם אוהב להיפרד מדי פעם מהשגרה. התשוקה שלו להראות לאנשים את הדרך לטכנולוגיה המודרנית מניעה אותו לכתוב יותר.
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
לחצו כאן להרשמה