שימוש ב-Natural Language API עם C#

1. סקירה כללית

בשיעור ה-Codelab הזה נתמקד בשימוש ב-Natural Language API עם C#. תלמדו איך לבצע ניתוח סנטימנטים, ישויות ותחביר.

Natural Language API ב-Google Cloud מספק למפתחים טכנולוגיות להבנת שפה טבעית (NLP), כולל ניתוח סנטימנטים, ניתוח ישויות וניתוח תחביר.

מה תלמדו

  • איך משתמשים ב-Cloud Shell
  • איך מפעילים את Natural Language API
  • איך לאמת בקשות API
  • איך מתקינים את ספריית הלקוח של Google Cloud ל-C#
  • איך לבצע ניתוח סנטימנטים
  • איך לבצע ניתוח ישויות
  • איך מבצעים ניתוח תחביר

מה צריך להכין

  • פרויקט ב-Google Cloud Platform
  • דפדפן, למשל Chrome או Firefox
  • היכרות עם C#

סקר

איך תשתמשו במדריך הזה?

לקריאה בלבד לקרוא אותו ולבצע את התרגילים

איזה דירוג מגיע לחוויה שלך עם C#?

מתחילים בינונית בקיאים

איזה דירוג מגיע לדעתך לחוויית השימוש בשירותי Google Cloud Platform?

מתחילים בינונית בקיאים

2. הגדרה ודרישות

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
  • Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט.
  • לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית משאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

הפעלת Cloud Shell

  1. במסוף Cloud, לוחצים על Activate Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים שמתוארת בו. אם הוצג לכם מסך ביניים, לוחצים על המשך.

d95252b003979716.png

ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.

7833d5e1c5d18f54.png

במכונה הווירטואלית הזו נמצאים כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אם לא את כולן, ניתן לבצע חלק גדול מהעבודה ב-Codelab הזה באמצעות דפדפן.

אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שהפרויקט מאומת ושהפרויקט מוגדר לפי מזהה הפרויקט שלכם.

  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהאימות בוצע:
gcloud auth list

פלט הפקודה

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה ב-gcloud יודעת על הפרויקט שלכם:
gcloud config list project

פלט הפקודה

[core]
project = <PROJECT_ID>

אם היא לא נמצאת שם, תוכלו להגדיר אותה באמצעות הפקודה הבאה:

gcloud config set project <PROJECT_ID>

פלט הפקודה

Updated property [core/project].

3. הפעלת Natural Language API

לפני שמתחילים להשתמש ב-Natural Language API, צריך להפעיל את ה-API. ב-Cloud Shell, אתם יכולים להפעיל את ה-API באמצעות הפקודה הבאה:

gcloud services enable language.googleapis.com

4. התקנה של ספריית הלקוח של Google Cloud Natural Language API עבור C#

קודם כול, יוצרים אפליקציה פשוטה של מסוף C# שבה משתמשים כדי להריץ דוגמאות של Natural Language API:

dotnet new console -n NaturalLanguageApiDemo

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

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

בשלב הבא, עוברים לתיקייה NaturalLanguageApiDemo:

cd NaturalLanguageApiDemo/

ומוסיפים את חבילת NuGet Google.Cloud.Language.V1 לפרויקט:

dotnet add package Google.Cloud.Language.V1
info : Adding PackageReference for package 'Google.Cloud.Language.V1' into project '/home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Language.V1' version '1.1.0' added to file '/home/atameldev/NaturalLanguageApiDemo/NaturalLanguageApiDemo.csproj'.

עכשיו אתם מוכנים להשתמש ב-Natural Language API!

5. ניתוח סנטימנטים

בקטע הזה מבצעים ניתוח סנטימנטים על מחרוזת ומוצאים את הציון וה-Magnitude באמצעות ה-Natural Language API.

הציון של הסנטימנט נע בין 1.0- (שלילי) ל-1.0 (חיובי), והוא תואם לתחושה הכוללת מהמידע הנתון.

הMagnitude של הסנטימנט נע בין 0.0 ל-+infinity, ומציין את העוצמה הכוללת של הסנטימנט על סמך המידע הנתון. ככל שתספקו יותר מידע, ההיקף יהיה גבוה יותר.

פותחים את עורך הקוד מהצד השמאלי העליון של Cloud Shell:

fd3fc1303e63572.png

עוברים לקובץ Program.cs שבתוך התיקייה NaturalLanguageApiDemo ומחליפים את הקוד כך:

using System;
using Google.Cloud.Language.V1;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnalyzeSentiment(Document.FromPlainText(text));
            var sentiment = response.DocumentSentiment;
            Console.WriteLine($"Score: {sentiment.Score}");
            Console.WriteLine($"Magnitude: {sentiment.Magnitude}");
        }
    }
}

הקדישו דקה או שתיים כדי ללמוד את הקוד ולראות איך קטע הקוד משמש לניתוח סנטימנטים במחרוזת "Yukihiro Matsumoto is great!".

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

Score: 0.9
Magnitude: 0.9

סיכום

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

6. ניתוח ישויות

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

כדי לבצע ניתוח ישויות, צריך לעבור לקובץ Program.cs בתוך התיקייה NaturalLanguageApiDemo ולהחליף את הקוד הבא:

using System;
using Google.Cloud.Language.V1;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnalyzeEntitySentiment(Document.FromPlainText(text));

            foreach (var entity in response.Entities)
            {
                Console.WriteLine($"Entity: \"{entity.Name}\" ({entity.Type})");
                if (entity.Metadata.ContainsKey("wikipedia_url"))
                {
                    Console.WriteLine($"URL: {entity.Metadata["wikipedia_url"]}");
                }
            }
        }
    }
}

הקדישו דקה או שתיים כדי ללמוד את הקוד ולראות איך קטע הקוד משמש לניתוח ישויות במחרוזת "Yukihiro Matsumoto is great!.

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

Entity: "Yukihiro Matsumoto" (Person)
URL: https://en.wikipedia.org/wiki/Yukihiro_Matsumoto

סיכום

בשלב הזה יכולת לבצע ניתוח ישויות במחרוזת טקסט והדפסת את הישויות שלה. למידע נוסף על ניתוח ישויות.

7. ניתוח תחביר

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

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

כדי לבצע ניתוח תחביר, צריך לעבור לקובץ Program.cs בתיקייה NaturalLanguageApiDemo ולהחליף את הקוד הבא:

using System;
using Google.Cloud.Language.V1;
using static Google.Cloud.Language.V1.AnnotateTextRequest.Types;

namespace NaturalLanguageApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = "Yukihiro Matsumoto is great!";
            var client = LanguageServiceClient.Create();
            var response = client.AnnotateText(Document.FromPlainText(text), 
                new Features { ExtractSyntax = true });

            var sentences = response.Sentences;
            var tokens = response.Tokens;

            Console.WriteLine($"Sentences: {sentences.Count}");
            Console.WriteLine($"Tokens: {tokens.Count}");

            foreach (var token in tokens)
            {
                Console.WriteLine($"{token.PartOfSpeech.Tag} {token.Text.Content}");
            }
        }
    }
}

הקדישו דקה או שתיים כדי ללמוד את הקוד ולראות איך קטע הקוד משמש לניתוח תחביר במחרוזת "Yukihiro Matsumoto is great!".

בחזרה ב-Cloud Shell, מריצים את האפליקציה:

dotnet run

הפלט הבא אמור להתקבל:

Sentences: 1
Tokens: 5
Noun Yukihiro
Noun Matsumoto
Verb is
Adj great
Punct !

פירוש חזותי מוצג בהמשך.

297dbabf1a723bad.png

סיכום

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

8. מעולה!

למדתם איך להשתמש ב-Natural Language API באמצעות C# כדי לבצע סוגים שונים של ניתוחים של מידע!

הסרת המשאבים

כדי להימנע מצבירת חיובים בחשבון Google Cloud Platform על המשאבים שבהם השתמשתם במדריך למתחילים הזה:

  • עוברים אל Cloud Platform Console.
  • בוחרים את הפרויקט שרוצים להשבית ולוחצים על Delete (מחיקה). למעלה: מתזמנת את מחיקת הפרויקט.

מידע נוסף

רישיון

היצירה הזו בשימוש ברישיון Creative Commons Attribution 2.0 גנרי.