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

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

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

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

מה תלמדו

  • איך משתמשים ב-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

  • שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר לאורך הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
  1. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

מפעילים את Cloud Shell

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

הפעלת Cloud Shell

  1. ב-Cloud Console, לוחצים על 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, משתמשים בפקודה הבאה:

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. ניתוח סנטימנטים

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

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

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

פותחים את עורך הקוד בפינה השמאלית העליונה של 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.
  • בוחרים את הפרויקט שרוצים לסגור ולוחצים על 'מחיקה' בחלק העליון. הפעולה הזו מתזמנת את הפרויקט למחיקה.

מידע נוסף

רישיון

עבודה זו מורשית תחת רישיון Creative Commons שמותנה בייחוס 2.0 כללי.