C# এর সাথে প্রাকৃতিক ভাষা API ব্যবহার করা

১. সংক্ষিপ্ত বিবরণ

এই কোডল্যাবে আপনি C# এর সাথে ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই (Natural Language API) ব্যবহারের উপর মনোযোগ দেবেন। আপনি শিখবেন কীভাবে সেন্টিমেন্ট, এনটিটি এবং সিনট্যাক্স অ্যানালাইসিস করতে হয়।

গুগল ক্লাউড ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ডেভেলপারদের জন্য ন্যাচারাল ল্যাঙ্গুয়েজ আন্ডারস্ট্যান্ডিং প্রযুক্তি সরবরাহ করে, যার মধ্যে সেন্টিমেন্ট অ্যানালাইসিস, এনটিটি অ্যানালাইসিস এবং সিনট্যাক্স অ্যানালাইসিস অন্তর্ভুক্ত।

আপনি যা শিখবেন

  • ক্লাউড শেল কীভাবে ব্যবহার করবেন
  • ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই কীভাবে সক্রিয় করবেন
  • এপিআই অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন
  • C# এর জন্য গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি কীভাবে ইনস্টল করবেন
  • সেন্টিমেন্ট অ্যানালাইসিস কীভাবে করবেন
  • এনটিটি অ্যানালাইসিস কীভাবে সম্পাদন করবেন
  • সিনট্যাক্স বিশ্লেষণ কীভাবে সম্পাদন করবেন

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • C# ব্যবহারে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

C# নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। d1264ca30785e435.png .

cb81e7c8e34bc8d.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

d95252b003979716.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

7833d5e1c5d18f54.png

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই সক্রিয় করুন

ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ব্যবহার শুরু করার আগে আপনাকে অবশ্যই এপিআইটি সক্রিয় করতে হবে। ক্লাউড শেল ব্যবহার করে আপনি নিম্নলিখিত কমান্ডটির মাধ্যমে এপিআইটি সক্রিয় করতে পারেন:

gcloud services enable language.googleapis.com

৪. C# এর জন্য Google Cloud Natural Language API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন।

প্রথমে, একটি সহজ C# কনসোল অ্যাপ্লিকেশন তৈরি করুন যা আপনি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই স্যাম্পলগুলো চালানোর জন্য ব্যবহার করবেন:

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'.

এখন, আপনি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ব্যবহার করার জন্য প্রস্তুত!

৫. অনুভূতি বিশ্লেষণ

এই অংশে আপনি ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই ব্যবহার করে একটি স্ট্রিং-এর উপর সেন্টিমেন্ট অ্যানালাইসিস করবেন এবং এর স্কোরম্যাগনিটিউড বের করবেন।

অনুভূতির স্কোরের মান -১.০ (নেতিবাচক) থেকে ১.০ (ইতিবাচক)-এর মধ্যে থাকে এবং এটি প্রদত্ত তথ্যের ভিত্তিতে তৈরি সামগ্রিক অনুভূতিকে নির্দেশ করে।

অনুভূতির মাত্রা ০.০ থেকে +অসীম পর্যন্ত বিস্তৃত এবং এটি প্রদত্ত তথ্যের ভিত্তিতে অনুভূতির সামগ্রিক তীব্রতা নির্দেশ করে। যত বেশি তথ্য প্রদান করা হয়, এর মাত্রাও তত বেশি হয়।

ক্লাউড শেলের উপরের ডান দিক থেকে কোড এডিটরটি খুলুন:

fd3fc1303e63572.png

NaturalLanguageApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

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!" স্ট্রিংটির ওপর সেন্টিমেন্ট অ্যানালাইসিস করতে কোডের এই অংশটি ব্যবহার করা হয়েছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Score: 0.9
Magnitude: 0.9

সারসংক্ষেপ

এই ধাপে, আপনি একটি টেক্সট স্ট্রিং-এর উপর সেন্টিমেন্ট অ্যানালাইসিস করতে এবং এর স্কোর ও ম্যাগনিটিউড প্রিন্ট করতে সক্ষম হয়েছেন। সেন্টিমেন্ট অ্যানালাইসিস সম্পর্কে আরও পড়ুন।

৬. সত্তা বিশ্লেষণ

সত্তা বিশ্লেষণ প্রদত্ত তথ্যে থাকা সত্তাগুলো যাচাই করার জন্য ‘জনপ্রিয় ব্যক্তিত্ব’, ‘গুরুত্বপূর্ণ স্থান’ ইত্যাদির মতো বিশেষ্য পদ অনুসন্ধান করে এবং সেই সত্তাগুলো সম্পর্কে তথ্য ফেরত দেয়।

এনটিটি অ্যানালাইসিস করার জন্য, NaturalLanguageApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলটিতে যান এবং কোডটি নিচের কোড দিয়ে প্রতিস্থাপন করুন:

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!" স্ট্রিংটির উপর এনটিটি অ্যানালাইসিস করতে কোডের এই অংশটি ব্যবহার করা হয়েছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Entity: "Yukihiro Matsumoto" (Person)
URL: https://en.wikipedia.org/wiki/Yukihiro_Matsumoto

সারসংক্ষেপ

এই ধাপে, আপনি একটি টেক্সট স্ট্রিং-এর উপর এনটিটি অ্যানালাইসিস করতে এবং এর এনটিটিগুলো প্রিন্ট করতে সক্ষম হয়েছেন। এনটিটি অ্যানালাইসিস সম্পর্কে আরও পড়ুন।

৭. বাক্য গঠন বিশ্লেষণ

বাক্যগঠনগত বিশ্লেষণ প্রদত্ত পাঠ্যকে একাধিক বাক্য ও টোকেনে (সাধারণত, শব্দের সীমানা) বিভক্ত করে ভাষাগত তথ্য আহরণ করে এবং সেই টোকেনগুলোর ওপর আরও বিশ্লেষণ প্রদান করে।

এই উদাহরণটি বাক্য ও টোকেনের সংখ্যা প্রিন্ট করবে এবং প্রতিটি টোকেনের পদ (পার্ট অফ স্পিচ) প্রদান করবে।

সিনট্যাক্স বিশ্লেষণ করার জন্য, NaturalLanguageApiDemo ফোল্ডারের ভিতরে থাকা Program.cs ফাইলটিতে যান এবং কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

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!" স্ট্রিংটির সিনট্যাক্স বিশ্লেষণ করতে কোডের এই অংশটি ব্যবহার করা হয়েছে।

ক্লাউড শেলে ফিরে এসে অ্যাপটি চালান:

dotnet run

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Sentences: 1
Tokens: 5
Noun Yukihiro
Noun Matsumoto
Verb is
Adj great
Punct !

নিচে একটি চাক্ষুষ ব্যাখ্যা দেখানো হলো।

297dbabf1a723bad.png

সারসংক্ষেপ

এই ধাপে, আপনি একটি সাধারণ টেক্সট স্ট্রিং-এর উপর সিনট্যাক্স অ্যানালাইসিস করতে এবং বাক্যের সংখ্যা, টোকেনের সংখ্যা ও প্রতিটি টোকেনের ভাষাগত তথ্য প্রিন্ট করতে সক্ষম হয়েছেন। সিনট্যাক্স অ্যানালাইসিস সম্পর্কে আরও পড়ুন।

৮. অভিনন্দন!

আপনি শিখেছেন কীভাবে C# ব্যবহার করে ন্যাচারাল ল্যাঙ্গুয়েজ এপিআই (Natural Language API) প্রয়োগের মাধ্যমে তথ্যের উপর বিভিন্ন ধরণের বিশ্লেষণ করা যায়!

পরিষ্কার করা

এই কুইকস্টার্টে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

  • ক্লাউড প্ল্যাটফর্ম কনসোলে যান।
  • যে প্রজেক্টটি বন্ধ করতে চান, সেটি নির্বাচন করুন, তারপর উপরে থাকা 'ডিলিট' বোতামে ক্লিক করুন: এটি প্রজেক্টটিকে মুছে ফেলার জন্য নির্ধারিত করবে।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।