استخدام واجهة برمجة التطبيقات Translation API مع لغة Python

1. نظرة عامة

1e2217da0416d129.png

توفر Translation API واجهة آلية بسيطة لترجمة سلسلة عشوائية إلى أي لغة متاحة ديناميكيًا باستخدام "الترجمة الآلية العصبية" المتطوّرة. ويمكن استخدامها أيضًا لرصد اللغة في الحالات التي تكون فيها اللغة المصدر غير معروفة.

في هذا البرنامج التعليمي، ستستخدم واجهة برمجة التطبيقات Translation API مع لغة بايثون. تشمل المفاهيم التي تتناولها الدورة كيفية إعداد قائمة باللغات المتاحة وترجمة النص واكتشاف لغة نص معين.

المعلومات التي ستطّلع عليها

  • كيفية إعداد البيئة
  • كيفية إدراج اللغات المتاحة
  • كيفية ترجمة النصوص
  • كيفية التعرّف على اللغات

المتطلبات

  • مشروع على Google Cloud
  • متصفح، مثل Chrome أو Firefox
  • الإلمام باستخدام بايثون

استطلاع

كيف ستستخدم هذا البرنامج التعليمي؟

القراءة فقط اقرأها وأكمِل التمارين

كيف تقيّم تجربتك مع Python؟

حديث متوسط بارع

كيف تقيّم تجربتك مع خدمات Google Cloud؟

حديث متوسط بارع

2. الإعداد والمتطلبات

إعداد بيئة ذاتية

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (الذي يتم تحديده عادةً على أنّه PROJECT_ID). وإذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى طوال مدة المشروع.
  • لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع، الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. لن يؤدي إكمال هذا الدرس التطبيقي حول الترميز إلى فرض أي تكاليف، إن وُجدت. لإيقاف تشغيل الموارد لتجنب تحمُّل الفواتير إلى ما هو أبعد من هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

يمكنك إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، إلا أنّك ستستخدم في هذا الدرس التطبيقي Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في السحابة الإلكترونية.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة تصف ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

9c92662c6a846a5c.png

من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.

9f0e51b578fecce5.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- إعداد البيئة

قبل أن تتمكن من البدء في استخدام واجهة برمجة التطبيقات Translation API، عليك تشغيل الأمر التالي في Cloud Shell لتفعيل واجهة برمجة التطبيقات:

gcloud services enable translate.googleapis.com

ينبغي أن تظهر لك على النحو التالي:

Operation "operations/..." finished successfully.

يمكنك الآن استخدام واجهة برمجة التطبيقات Translation 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.11.0 ...

أنت الآن جاهز لاستخدام مكتبة برامج واجهة برمجة التطبيقات Translation API.

في الخطوات التالية، ستستخدم مترجمًا تفاعليًا بلغة Python يُسمى IPython، وقد تم تثبيته في الخطوة السابقة. يمكنك بدء جلسة من خلال تشغيل ipython في Cloud Shell:

ipython

ينبغي أن تظهر لك على النحو التالي:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.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}"

يمكنك الآن تقديم طلبك الأول وإدراج اللغات المتاحة...

4. إدراج اللغات المتاحة

في هذا القسم، ستُدرج جميع اللغات المتاحة في واجهة برمجة التطبيقات Translation 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: 136 ----------------------
af        Afrikaans
ak        Akan
sq        Albanian
am        Amharic
ar        Arabic
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

يمكنك الاطّلاع على الميزات التي تحصل عليها عند استخدام لغة العرض باللغة الفرنسية:

print_supported_languages("fr")

يُفترض أن تحصل على نفس القائمة، مرتبة بالأسماء الفرنسية، على غرار ما يلي:

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

يمكنك التجربة باستخدام رمز لغة آخر.

ملخّص

في هذه الخطوة، تمكنت من إدراج جميع اللغات المتاحة في Translation API. يمكنك العثور على القائمة الكاملة للّغات المعتمَدة على صفحة توفُّر اللغات.

5- ترجمة النص

يمكنك استخدام واجهة برمجة التطبيقات Translation API لترجمة النص من لغة إلى أخرى. تتم ترجمة النص باستخدام نموذج الترجمة الآلية العصبية (NMT). إذا لم يكن نموذج NMT متوافقًا مع زوج ترجمة اللغة المطلوب، فسيتم استخدام نموذج الترجمة الآلية المستندة إلى العبارة (PBMT). لمزيد من المعلومات حول "ترجمة Google" ونماذج الترجمة الخاصة بها، يُرجى الاطّلاع على مشاركة إعلان 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 : 안녕하세요 세계!

ملخّص

في هذه الخطوة، تمكنت من استخدام واجهة برمجة التطبيقات Translation API لترجمة النص إلى لغات متعددة. اقرأ المزيد عن ترجمة النص.

6- التعرّف التلقائي على اللغات

يمكنك أيضًا استخدام واجهة برمجة التطبيقات Translation 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:  80% | 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    | 안녕하세요 세계!

ملخّص

في هذه الخطوة، تمكنت من اكتشاف لغة جزء من النص باستخدام واجهة برمجة تطبيقات الترجمة. مزيد من المعلومات حول التعرّف على اللغات

7. تهانينا

1e2217da0416d129.png

لقد تعلمت كيفية استخدام واجهة برمجة تطبيقات الترجمة باستخدام بايثون!

إخلاء مساحة

لتنظيف بيئة التطوير، من Cloud Shell:

  • إذا كنت لا تزال في جلسة IPython، يُرجى الرجوع إلى واجهة الأوامر: exit
  • التوقف عن استخدام بيئة Python الافتراضية: 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

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

الترخيص

هذا العمل مرخّص بموجب رخصة المشاع الإبداعي 2.0 مع نسب العمل إلى مؤلف عام.