การใช้ 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 Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตวิธีการชำระเงินได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้ใช้งานหรือไม่ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้

เปิดใช้งาน Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell d1264ca30785e435.png จาก Cloud Console

cb81e7c8e34bc8d.png

หากเริ่มต้นใช้งาน Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอตรงกลางที่อธิบายว่านี่คืออะไร หากระบบแสดงหน้าจอตรงกลาง ให้คลิกต่อไป

d95252b003979716.png

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

7833d5e1c5d18f54.png

เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน 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

คุณต้องเปิดใช้ API ดังกล่าวก่อนจึงจะเริ่มใช้ Natural Language 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

คุณควรเห็นการสร้างแอปพลิเคชันและการแก้ไขทรัพยากร Dependency แล้ว

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 (เชิงบวก) และสอดคล้องกับความพึงพอใจโดยรวมของข้อมูลที่ระบุ

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}");
        }
    }
}

ใช้เวลาสัก 1-2 นาทีศึกษาโค้ดและดูว่าข้อมูลโค้ดใช้เพื่อทำการวิเคราะห์ความเห็นเกี่ยวกับสตริง "Yukihiro Matsumoto เยี่ยมมาก!" อย่างไร

กลับไปที่ 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"]}");
                }
            }
        }
    }
}

ใช้เวลาสัก 1-2 นาทีศึกษาโค้ดและดูว่าข้อมูลโค้ดใช้เพื่อทำการวิเคราะห์เอนทิตีในสตริง "Yukihiro Matsumoto เยี่ยมมาก!" อย่างไร

กลับไปที่ 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}");
            }
        }
    }
}

ใช้เวลาสักครู่เพื่อศึกษาโค้ดและดูว่ามีการใช้ข้อมูลโค้ดอย่างไรในการวิเคราะห์ไวยากรณ์ในสตริง "ยูกิฮิโระ มัตสึโมโตะเยี่ยมมาก!"

กลับไปที่ 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
  • เลือกโครงการที่คุณต้องการปิดการทำงาน แล้วคลิก "ลบ" ที่ด้านบน: การดำเนินการนี้จะกำหนดเวลาการลบโปรเจ็กต์

ดูข้อมูลเพิ่มเติม

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0