קהל
המדריך הזה נועד לעזור לכם להתחיל במהירות לחקור ולפתח אפליקציות באמצעות Google Cloud Natural Language API. הוא מיועד לאנשים שמכירים תכנות בסיסי, אבל גם אם אין לכם ידע רב בתכנות, תוכלו לעקוב אחריו. אחרי שתעברו על המדריך הזה, תוכלו להשתמש במסמכי העיון כדי ליצור אפליקציות בסיסיות משלכם.
במדריך הזה מוסבר איך להשתמש באפליקציית Natural Language API באמצעות קוד Python. המטרה כאן היא לא להסביר על ספריות הלקוח של Python, אלא להסביר איך לבצע קריאות ל-Natural Language API. אפליקציות ב-Java וב-Node.js דומות במהותן. אפשר לעיין בדוגמאות של Natural Language API כדי לראות דוגמאות בשפות אחרות (כולל הדוגמה הזו בתוך המדריך).
דרישות מוקדמות
יש כמה דרישות מוקדמות למדריך הזה:
- יש לכם חשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים בפלטפורמה ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300 $להרצה, לבדיקה ולפריסה של עומסי העבודה.
- הגדרתם פרויקט Cloud Natural Language API במסוף Google Cloud .
- הגדרתם את הסביבה באמצעות Application Default Credentials.
- יש לכם היכרות בסיסית עם תכנות ב-Python.
- הגדרתם את סביבת הפיתוח של Python. מומלץ להתקין במערכת את הגרסה העדכנית של Python,
pipו-virtualenv. הוראות מופיעות במדריך להגדרת סביבת הפיתוח בשפת Python ל-Google Cloud Platform. - התקנתם את ספריית הלקוח של Google Cloud ל-Python
ניתוח הסנטימנט במסמך
במדריך הזה מוסבר איך ליצור אפליקציה בסיסית של Natural Language API באמצעות analyzeSentimentבקשה שמבצעת ניתוח סנטימנט של טקסט.
ניתוח הסנטימנט מנסה לקבוע את הגישה הכוללת (חיובית או שלילית) ומיוצג על ידי ערכים מספריים score ו-magnitude.
(מידע נוסף על המושגים האלה זמין במאמר בנושא היסודות של שפה טבעית).
קודם נציג את הקוד המלא. (שימו לב שהסרנו את רוב ההערות מהקוד הזה כדי להראות לכם כמה הוא קצר. נספק עוד הערות בהמשך כשנסביר על הקוד).
האפליקציה הפשוטה הזו מבצעת את המשימות הבאות:
- ייבוא הספריות שנדרשות להפעלת האפליקציה
- מקבלת קובץ טקסט ומעבירה אותו לפונקציה
main() - קריאת קובץ הטקסט ושליחת בקשה לשירות
- מנתח את התגובה מהשירות ומציג אותה למשתמש
בהמשך נפרט על השלבים האלה.
ייבוא ספריות
אנחנו מייבאים את argparse, ספרייה רגילה, כדי לאפשר לאפליקציה לקבל שמות של קובצי קלט כארגומנטים.
כדי להשתמש ב-Cloud Natural Language API, נצטרך גם לייבא את המודול language מהספרייה google-cloud-language. מודול types מכיל מחלקות שנדרשות ליצירת בקשות.
הפעלת האפליקציה
כאן אנחנו פשוט מנתחים את הארגומנט שהועבר כדי לקבל את שם הקובץ של הטקסט ומעבירים אותו לפונקציה analyze().
אימות ל-API
לפני שמתקשרים עם שירות Natural Language API, צריך לאמת את השירות באמצעות פרטי כניסה שהושגו קודם. הדרך הכי פשוטה לקבל פרטי כניסה באפליקציה היא באמצעות Application Default Credentials (ADC). כברירת מחדל, ADC ינסה לקבל פרטי כניסה מקובץ הסביבה GOOGLE_APPLICATION_CREDENTIALS, שצריך להיות מוגדר כך שיצביע על קובץ ה-JSON של מפתח חשבון השירות. (הגדרתם את חשבון השירות והסביבה שלכם לשימוש ב-ADC במדריך למתחילים. מידע נוסף זמין במאמר הגדרת חשבון שירות).
ספריית הלקוח של Google Cloud ל-Python משתמשת באופן אוטומטי בפרטי הכניסה שמוגדרים כברירת מחדל לאפליקציה.
שליחת הבקשה
עכשיו ששירות Natural Language API מוכן, אפשר לגשת לשירות באמצעות קריאה ל-method analyze_sentiment של מופע LanguageServiceClient.
ספריית הלקוח מכילה את הפרטים של הבקשות והתגובות ל-API. מידע מלא על המבנה הספציפי של בקשה כזו מופיע בהפניית Natural Language API.
קטע הקוד הזה מבצע את הפעולות הבאות:
- יוצר מופע של
LanguageServiceClientכלקוח. - קורא את שם הקובץ שמכיל את נתוני הטקסט לתוך משתנה.
- יוצר מופע של אובייקט
Documentעם התוכן של הקובץ. - מבצע קריאה ל-
analyze_sentimentשל הלקוח.
ניתוח התשובה
אנחנו מעבדים את התגובה כדי לחלץ את ערכי הסנטימנט score לכל משפט, ואת הערכים הכוללים score ו-magnitude לכל הביקורת, ומציגים אותם למשתמש.
מריצים את הדוגמה
כדי להריץ את הדוגמה שלנו, נבדוק אותה על קבוצה של ביקורות (מזויפות) על הסרט "בלייד ראנר".
מורידים את הדוגמאות מ-Google Cloud Storage:
gcloud storage cp gs://cloud-samples-tests/natural-language/sentiment-samples.tgz .
כדי להתקין את הגרסה העדכנית של Google Cloud CLI, אפשר לעיין במאמרי העזרה של ה-CLI של gcloud.
פותחים את קובץ ה-ZIP של הדוגמאות, ונוצרת תיקייה בשם reviews:
gunzip sentiment-samples.tgz tar -xvf sentiment-samples.tar
הפעלת ניתוח הסנטימנט באחד מהקבצים שצוינו:
python sentiment_analysis.py reviews/bladerunner-pos.txt Sentence 0 has a sentiment score of 0.8 Sentence 1 has a sentiment score of 0.9 Sentence 2 has a sentiment score of 0.8 Sentence 3 has a sentiment score of 0.2 Sentence 4 has a sentiment score of 0.1 Sentence 5 has a sentiment score of 0.4 Sentence 6 has a sentiment score of 0.3 Sentence 7 has a sentiment score of 0.4 Sentence 8 has a sentiment score of 0.2 Sentence 9 has a sentiment score of 0.9 Overall Sentiment: score of 0.5 with magnitude of 5.5
בדוגמה שלמעלה, אפשר לראות שהביקורת הייתה חיובית יחסית (ציון של 0.5) ורגשית יחסית (עוצמה של 5.5).
ניתוח של הדוגמאות האחרות אמור להניב ערכים דומים לאלה שמוצגים בהמשך:
python sentiment_analysis.py reviews/bladerunner-neg.txt ... Overall Sentiment: score of -0.6 with magnitude of 3.3 python sentiment_analysis.py reviews/bladerunner-mixed.txt ... Overall Sentiment: score of 0 with magnitude of 4.7 python sentiment_analysis.py reviews/bladerunner-neutral.txt ... Overall Sentiment: score of -0.1 with magnitude of 1.8
שימו לב שכל הערכים דומים (מה שמצביע על כמות יחסית שווה של סנטימנט בעל משמעות רגשית), למעט המקרה של 'ניטרלי', שמצביע על ביקורת שאין בה הרבה סנטימנט רגשי, חיובי או שלילי. (מידע נוסף על ציוני סנטימנט ועל עוצמת הסנטימנט, ועל האופן שבו מפרשים את הערכים האלה, זמין במאמר הסבר על ערכים של ניתוח סנטימנט).
אם רוצים לבצע ניתוח סנטימנטים עם יותר נתונים, אוניברסיטת סטנפורד מספקת מערך נתונים של ביקורות על סרטים ב-IMDB. כדי לאחזר את הביקורות על הסרטים האלה:
- מורידים את מערך הנתונים Large Movie Review.
- מחלצים את הקובץ לספריית העבודה. הביקורות על הסרטים מחולקות לספריות
posו-negבתוך ספריות הנתוניםtrainו-test, וכל קובץ טקסט מכיל ביקורת אחת על סרט. - מריצים את הכלי
sentiment_analysis.pyעל אחד מקובצי הטקסט של ביקורות הסרטים.
כל הכבוד! ביצעתם את משימות ההיסק הראשונות שלכם באמצעות Google Cloud Natural Language API.