استفاده از Translation API با پایتون

۱. مرور کلی

۱e۲۲۱۷da۰۴۱۶d۱۲۹.png

رابط برنامه‌نویسی کاربردی ترجمه (Translation API) یک رابط برنامه‌نویسی ساده برای ترجمه پویای یک رشته دلخواه به هر زبان پشتیبانی‌شده با استفاده از ترجمه ماشینی عصبی پیشرفته ارائه می‌دهد. همچنین می‌تواند برای تشخیص زبان در مواردی که زبان مبدا ناشناخته است، مورد استفاده قرار گیرد.

در این آموزش، شما از API ترجمه با پایتون استفاده خواهید کرد. مفاهیم پوشش داده شده شامل نحوه فهرست کردن زبان‌های موجود، ترجمه متن و تشخیص زبان یک متن داده شده است.

آنچه یاد خواهید گرفت

  • چگونه محیط خود را تنظیم کنید
  • نحوه لیست کردن زبان‌های موجود
  • نحوه ترجمه متن
  • نحوه تشخیص زبان‌ها

آنچه نیاز دارید

  • یک پروژه ابری گوگل
  • یک مرورگر، مانند کروم یا فایرفاکس
  • آشنایی با استفاده از پایتون

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را با پایتون چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

تجربه خود را با خدمات ابری گوگل چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. شما همیشه می‌توانید آن را به‌روزرسانی کنید.
  • شناسه پروژه در تمام پروژه‌های گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه خود را (که معمولاً با عنوان PROJECT_ID شناخته می‌شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

اگرچه می‌توان گوگل کلود را از راه دور و از طریق لپ‌تاپ شما مدیریت کرد، اما در این آزمایشگاه کد از Cloud Shell ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید 853e55310c205094.png .

3c1dabeca90e44e5.png

اگر این اولین باری است که Cloud Shell را اجرا می‌کنید، یک صفحه میانی برای توضیح آن به شما نمایش داده می‌شود. اگر با یک صفحه میانی مواجه شدید، روی ادامه کلیک کنید.

9c92662c6a846a5c.png

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

9f0e51b578fecce5.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان با یک مرورگر انجام داد.

پس از اتصال به 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].

۳. تنظیمات محیطی

قبل از اینکه بتوانید از API ترجمه استفاده کنید، دستور زیر را در Cloud Shell اجرا کنید تا API فعال شود:

gcloud services enable translate.googleapis.com

شما باید چیزی شبیه به این را ببینید:

Operation "operations/..." finished successfully.

حالا می‌توانید از API ترجمه استفاده کنید!

متغیر محیطی زیر را تنظیم کنید (برای استفاده در برنامه شما):

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

اکنون، شما آماده استفاده از کتابخانه کلاینت Translation API هستید!

در مراحل بعدی، از یک مفسر تعاملی پایتون به نام IPython که در مرحله قبل نصب کرده‌اید، استفاده خواهید کرد. با اجرای ipython در Cloud Shell، یک جلسه را شروع کنید:

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}"

شما آماده‌اید تا اولین درخواست خود را ارسال کنید و زبان‌های پشتیبانی‌شده را فهرست کنید...

۴. زبان‌های موجود را فهرست کنید

در این بخش، تمام زبان‌های موجود در API ترجمه را فهرست خواهید کرد.

برای فهرست کردن زبان‌های موجود، کد زیر را در جلسه 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

می‌توانید با کد زبان دیگری امتحان کنید.

خلاصه

در این مرحله، شما توانستید تمام زبان‌های موجود در API ترجمه را فهرست کنید. می‌توانید لیست کامل زبان‌های پشتیبانی‌شده را در صفحه پشتیبانی زبان پیدا کنید.

۵. ترجمه متن

شما می‌توانید از API ترجمه برای ترجمه متن از یک زبان به زبان دیگر استفاده کنید. متن با استفاده از مدل ترجمه ماشینی عصبی (NMT) ترجمه می‌شود. اگر مدل NMT برای جفت ترجمه زبان درخواستی پشتیبانی نشود، از مدل ترجمه ماشینی مبتنی بر عبارت (PBMT) استفاده می‌شود. برای اطلاعات بیشتر در مورد Google Translate و مدل‌های ترجمه آن، به پست اطلاعیه 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 : 안녕하세요!

خلاصه

در این مرحله، شما توانستید از API ترجمه برای ترجمه متن به چندین زبان استفاده کنید. درباره ترجمه متن بیشتر بخوانید.

۶. تشخیص زبان‌ها

همچنین می‌توانید از API ترجمه برای تشخیص زبان یک رشته متنی استفاده کنید.

کد زیر را در جلسه 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 تشخیص دهید. درباره تشخیص زبان‌ها بیشتر بخوانید.

۷. تبریک می‌گویم!

۱e۲۲۱۷da۰۴۱۶d۱۲۹.png

شما یاد گرفتید که چگونه از API ترجمه با استفاده از پایتون استفاده کنید!

تمیز کردن

برای پاکسازی محیط توسعه خود، از Cloud Shell:

  • اگر هنوز در جلسه IPython خود هستید، به پوسته برگردید: exit
  • استفاده از محیط مجازی پایتون را متوقف کنید: deactivate
  • پوشه محیط مجازی خود را حذف کنید: cd ~ ; rm -rf ./venv-translate

برای حذف پروژه Google Cloud خود، از Cloud Shell:

  • شناسه پروژه فعلی خود را بازیابی کنید: PROJECT_ID=$(gcloud config get-value core/project)
  • مطمئن شوید که این پروژه‌ای است که می‌خواهید حذف کنید: echo $PROJECT_ID
  • حذف پروژه: gcloud projects delete $PROJECT_ID

بیشتر بدانید

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.