পাইথনের সাথে অনুবাদ API ব্যবহার করা

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

1e2217da0416d129.png

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

এই টিউটোরিয়ালে, আপনি পাইথনের সাথে ট্রান্সলেশন এপিআই (Translation API) ব্যবহার করবেন। এখানে উপলব্ধ ভাষাগুলোর তালিকা তৈরি করা, টেক্সট অনুবাদ করা এবং প্রদত্ত কোনো টেক্সটের ভাষা শনাক্ত করার মতো বিষয়গুলো আলোচনা করা হবে।

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

  • আপনার পরিবেশ কীভাবে সেট আপ করবেন
  • উপলব্ধ ভাষাগুলির তালিকা কীভাবে করবেন
  • কীভাবে পাঠ্য অনুবাদ করবেন
  • ভাষাগুলি কীভাবে সনাক্ত করবেন

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

জরিপ

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

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

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

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

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

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

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

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

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

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

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

3c1dabeca90e44e5.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.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 translate.googleapis.com

আপনার এইরকম কিছু দেখা উচিত:

Operation "operations/..." finished successfully.

এখন আপনি ট্রান্সলেশন এপিআই ব্যবহার করতে পারবেন!

নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন (যা আপনার অ্যাপ্লিকেশনে ব্যবহৃত হবে):

export PROJECT_ID=$(gcloud config get-value core/project)

echo "PROJECT_ID: $PROJECT_ID"

আপনার হোম ডিরেক্টরিতে যান:

cd ~

নির্ভরতাগুলিকে বিচ্ছিন্ন করতে একটি পাইথন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন:

virtualenv venv-translate

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source venv-translate/bin/activate

IPython এবং Translation API ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

pip install ipython google-cloud-translate

আপনার এইরকম কিছু দেখা উচিত:

...
Installing collected packages: ..., ipython, google-cloud-translate
Successfully installed ... google-cloud-translate-3.16.0 ...

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

পরবর্তী ধাপগুলোতে, আপনি IPython নামক একটি ইন্টারেক্টিভ পাইথন ইন্টারপ্রেটার ব্যবহার করবেন, যা আপনি আগের ধাপে ইনস্টল করেছিলেন। ক্লাউড শেলে ipython রান করে একটি সেশন শুরু করুন:

ipython

আপনার এইরকম কিছু দেখা উচিত:

Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.27.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from os import environ

from google.cloud import translate


PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"

আপনি আপনার প্রথম অনুরোধটি করতে এবং সমর্থিত ভাষাগুলোর তালিকা তৈরি করতে প্রস্তুত...

৪. উপলব্ধ ভাষাগুলির তালিকা দিন

এই বিভাগে, আপনি ট্রান্সলেশন এপিআই-তে উপলব্ধ সমস্ত ভাষার তালিকা দেখতে পাবেন।

উপলব্ধ ভাষাগুলির তালিকা পেতে, নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

def print_supported_languages(display_language_code: str):
    client = translate.TranslationServiceClient()

    response = client.get_supported_languages(
        parent=PARENT,
        display_language_code=display_language_code,
    )

    languages = response.languages
    print(f" Languages: {len(languages)} ".center(60, "-"))
    for language in languages:
        language_code = language.language_code
        display_name = language.display_name
        print(f"{language_code:10}{display_name}")
    

ফাংশনটি কল করুন:

print_supported_languages("en")

আপনার এইরকম কিছু পাওয়া উচিত:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanian
am        Amharic
ar        Arabic
hy        Armenian
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

ফরাসি ডিসপ্লে ভাষায় আপনি কী কী পাবেন তা দেখে নিন:

print_supported_languages("fr")

আপনি ফরাসি নাম অনুসারে সাজানো একই তালিকাটি পাবেন, যা নিম্নলিখিতটির অনুরূপ হবে:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanais
de        Allemand
am        Amharique
en        Anglais
...
vi        Vietnamien
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zoulou

আপনি অন্য কোনো ভাষা কোড দিয়ে চেষ্টা করতে পারেন।

সারসংক্ষেপ

এই ধাপে, আপনি ট্রান্সলেশন এপিআই-তে উপলব্ধ সমস্ত ভাষার তালিকা করতে পেরেছেন। সমর্থিত ভাষাগুলোর সম্পূর্ণ তালিকা আপনি ভাষা সহায়তা পৃষ্ঠায় খুঁজে পাবেন।

৫. পাঠ্য অনুবাদ করুন

আপনি এক ভাষা থেকে অন্য ভাষায় টেক্সট অনুবাদ করতে ট্রান্সলেশন এপিআই (Translation API) ব্যবহার করতে পারেন। নিউরাল মেশিন ট্রান্সলেশন (NMT) মডেল ব্যবহার করে টেক্সট অনুবাদ করা হয়। অনুরোধ করা ভাষা জোড়ার জন্য যদি এনএমটি (NMT) মডেলটি সমর্থিত না হয়, তবে ফ্রেজ-বেসড মেশিন ট্রান্সলেশন (PBMT) মডেলটি ব্যবহার করা হয়। গুগল ট্রান্সলেট এবং এর অনুবাদ মডেলগুলো সম্পর্কে আরও জানতে, এনএমটি (NMT) ঘোষণা পোস্টটি দেখুন।

টেক্সট অনুবাদ করতে, নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

def translate_text(text: str, target_language_code: str) -> translate.Translation:
    client = translate.TranslationServiceClient()

    response = client.translate_text(
        parent=PARENT,
        contents=[text],
        target_language_code=target_language_code,
    )

    return response.translations[0]
    

একই লেখা বিভিন্ন ভাষায় অনুবাদ করতে ফাংশনটি কল করুন:

text = "Hello World!"
target_languages = ["tr", "de", "es", "it", "el", "zh", "ja", "ko"]

print(f" {text} ".center(50, "-"))
for target_language in target_languages:
    translation = translate_text(text, target_language)
    source_language = translation.detected_language_code
    translated_text = translation.translated_text
    print(f"{source_language}{target_language} : {translated_text}")
    

আপনার নিম্নলিখিত জিনিসগুলো পাওয়া উচিত:

------------------ Hello World! ------------------
en → tr : Selam Dünya!
en → de : Hallo Welt!
en → es : ¡Hola Mundo!
en → it : Ciao mondo!
en → el : Γεια σου Κόσμο!
en → zh : 你好世界!
en → ja : 「こんにちは世界」
en → ko : 안녕하세요!

সারসংক্ষেপ

এই ধাপে, আপনি ট্রান্সলেশন এপিআই ব্যবহার করে একাধিক ভাষায় টেক্সট অনুবাদ করতে পেরেছেন। টেক্সট অনুবাদ সম্পর্কে আরও পড়ুন।

৬. ভাষা শনাক্ত করুন

এছাড়াও আপনি কোনো টেক্সট স্ট্রিং-এর ভাষা শনাক্ত করতে ট্রান্সলেশন এপিআই ব্যবহার করতে পারেন।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

def detect_language(text: str) -> translate.DetectedLanguage:
    client = translate.TranslationServiceClient()

    response = client.detect_language(parent=PARENT, content=text)

    return response.languages[0]
    

বিভিন্ন বাক্যের ভাষা শনাক্ত করতে ফাংশনটি কল করুন:

sentences = [
    "Selam Dünya!",
    "Hallo Welt!",
    "¡Hola Mundo!",
    "Ciao mondo!",
    "Γεια σου Κόσμο!",
    "你好世界!",
    "「こんにちは世界」",
    "안녕하세요!",
]
for sentence in sentences:
    language = detect_language(sentence)
    confidence = language.confidence
    language_code = language.language_code
    print(
        f"Confidence: {confidence:4.0%}",
        f"Language: {language_code:5}",
        sentence,
        sep=" | ",
    )
    

আপনার নিম্নলিখিত জিনিসগুলো পাওয়া উচিত:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  81% | Language: de    | Hallo Welt!
Confidence: 100% | Language: es    | ¡Hola Mundo!
Confidence: 100% | Language: it    | Ciao mondo!
Confidence: 100% | Language: el    | Γεια σου Κόσμο!
Confidence: 100% | Language: zh-CN | 你好世界!
Confidence: 100% | Language: ja    | 「こんにちは世界」
Confidence: 100% | Language: ko    | 안녕하세요!

সারসংক্ষেপ

এই ধাপে, আপনি ট্রান্সলেশন এপিআই (Translation API) ব্যবহার করে কোনো একটি টেক্সটের ভাষা শনাক্ত করতে পেরেছেন। ভাষা শনাক্তকরণ সম্পর্কে আরও পড়ুন।

৭. অভিনন্দন!

1e2217da0416d129.png

আপনি পাইথন ব্যবহার করে ট্রান্সলেশন এপিআই (Translation API) ব্যবহার করতে শিখেছেন!

পরিষ্কার করা

আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট পরিষ্কার করতে, ক্লাউড শেল থেকে:

  • আপনি যদি এখনও আপনার IPython সেশনে থাকেন, তাহলে শেল-এ ফিরে যান: exit
  • পাইথন ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার বন্ধ করুন: deactivate
  • আপনার ভার্চুয়াল এনভায়রনমেন্ট ফোল্ডারটি মুছে ফেলুন: cd ~ ; rm -rf ./venv-translate

ক্লাউড শেল থেকে আপনার গুগল ক্লাউড প্রজেক্ট ডিলিট করতে:

  • আপনার বর্তমান প্রজেক্ট আইডি পুনরুদ্ধার করুন: PROJECT_ID=$(gcloud config get-value core/project)
  • নিশ্চিত করুন যে এটিই সেই প্রজেক্ট যা আপনি মুছতে চান: echo $PROJECT_ID
  • প্রজেক্টটি মুছে ফেলুন: gcloud projects delete $PROJECT_ID

আরও জানুন

লাইসেন্স

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