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

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

الترخيص

يخضع هذا العمل لترخيص Creative Commons Attribution 2.0 Generic License.