שימוש ב-Translation API עם Python

1. סקירה כללית

1e2217da0416d129.png

Translation API מספק ממשק פרוגרמטי פשוט לתרגום דינמי של מחרוזת שרירותית לכל שפה נתמכת, באמצעות תרגום מכונה עצבי (NMT) מתקדם. אפשר להשתמש בה גם כדי לזהות שפה במקרים שבהם שפת המקור לא ידועה.

במדריך הזה תלמדו איך להשתמש ב-Translation API עם Python. בין הנושאים שנדון בהם: איך להציג את רשימת השפות הזמינות, לתרגם טקסט ולזהות את השפה של טקסט נתון.

מה תלמדו

  • איך מגדירים את הסביבה
  • איך מציגים את השפות הזמינות
  • כיצד לתרגם טקסט
  • איך מזוהות שפות

מה צריך להכין

  • פרויקט ב-Google Cloud
  • דפדפן, כמו Chrome או Firefox
  • היכרות עם Python

סקר

איך תוכלו להשתמש במדריך הזה?

לקרוא את המאמר לקרוא את המאמר ולבצע את התרגילים

איזה דירוג מגיע לדעתך לחוויית השימוש שלך ב-Python?

מתחילים בינוניים מומחים

מהו הדירוג המתאים לחוויית השימוש שלך בשירותי Google Cloud?

מתחילים בינוניים מומחים

2. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד תוכלו לעדכן אותו.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
  1. בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.

הפעלת Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.

הפעלת Cloud Shell

  1. במסוף Cloud, לוחצים על Activate Cloud Shell 853e55310c205094.png.

3c1dabeca90e44e5.png

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג מסך ביניים עם תיאור של השירות. אם יוצג מסך ביניים, לוחצים על Continue (המשך).

9c92662c6a846a5c.png

תהליך ההקצאה והחיבור ל-Cloud Shell אמור להימשך רק כמה רגעים.

9f0e51b578fecce5.png

המכונה הווירטואלית הזו כוללת את כל הכלים הנדרשים לפיתוח. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את הביצועים והאימות של הרשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.

אחרי שתתחברו ל-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, צריך להפעיל את ה-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 ~

יוצרים סביבה וירטואלית של Python כדי לבודד את יחסי התלות:

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.

בשלבים הבאים תשתמשו במתורגם Python אינטראקטיבי שנקרא 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}"

עכשיו אתם מוכנים לשלוח את הבקשה הראשונה ולציין את השפות הנתמכות…

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: 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. הרשימה המלאה של השפות הנתמכות מופיעה בדף תמיכה בשפות.

5. תרגום טקסט

אפשר להשתמש ב-Translation 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 : 안녕하세요!

סיכום

בשלב הזה השתמשתם ב-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:  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. מידע נוסף על זיהוי שפות

7. מעולה!

1e2217da0416d129.png

למדתם איך להשתמש ב-Translation API באמצעות Python.

ניקוי

כדי לנקות את סביבת הפיתוח, ב-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

מידע נוסף

רישיון

העבודה הזו בשימוש במסגרת רישיון Creative Commons Attribution 2.0 Generic.