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

1. نظرة عامة

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

توفّر Natral 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/

وإضافة حزمة 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 أذونات رائعة!".

مرة أخرى في 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 big!".

مرة أخرى في 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 good!".

مرة أخرى في 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 مع نسب العمل إلى مؤلف عام.