استخدام Natural Language API مع C#

1. نظرة عامة

في هذا الدرس التطبيقي حول الترميز، ستركز على استخدام Natural Language API مع لغة C#. ستتعرّف على كيفية إجراء تحليل للمشاعر والكيانات والتركيب النحوي.

توفّر Natural Language API من Google Cloud للمطوّرين تكنولوجيات فهم اللغة الطبيعية، بما في ذلك تحليل المشاعر وتحليل الكيانات وتحليل بناء الجملة.

ما ستتعلمه

  • كيفية استخدام Cloud Shell
  • كيفية تفعيل Natural Language 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 تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، تستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير، إن وُجدت أي تكلفة على الإطلاق. لإيقاف الموارد وتجنُّب تحمّل تكاليف تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

على الرغم من إمكانية تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس العملي Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة توضّح ماهية هذه الخدمة. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

d95252b003979716.png

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

7833d5e1c5d18f54.png

يتم تحميل هذا الجهاز الافتراضي بجميع أدوات التطوير اللازمة. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إنجاز معظم عملك في هذا الدرس التطبيقي حول الترميز، إن لم يكن كله، باستخدام متصفح.

بعد الاتصال بـ 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، عليك تفعيلها. باستخدام 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/

وأضِف حزمة Google.Cloud.Language.V1 NuGet إلى المشروع:

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 و+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.
  • اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة: يؤدي ذلك إلى تحديد موعد لحذف المشروع.

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.