1. סקירה כללית
Translation API מספק ממשק פרוגרמטי פשוט לתרגום דינמי של מחרוזת שרירותית לכל שפה נתמכת, באמצעות תרגום מכונה עצבי (NMT) מתקדם. אפשר להשתמש בה גם כדי לזהות שפה במקרים שבהם שפת המקור לא ידועה.
במדריך הזה תלמדו איך להשתמש ב-Translation API עם Python. בין הנושאים שנדון בהם: איך להציג את רשימת השפות הזמינות, לתרגם טקסט ולזהות את השפה של טקסט נתון.
מה תלמדו
- איך מגדירים את הסביבה
- איך מציגים את השפות הזמינות
- כיצד לתרגם טקסט
- איך מזוהות שפות
מה צריך להכין
סקר
איך תוכלו להשתמש במדריך הזה?
איזה דירוג מגיע לדעתך לחוויית השימוש שלך ב-Python?
מהו הדירוג המתאים לחוויית השימוש שלך בשירותי Google Cloud?
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד תוכלו לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
הפעלת Cloud Shell
- במסוף Cloud, לוחצים על Activate Cloud Shell .
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג מסך ביניים עם תיאור של השירות. אם יוצג מסך ביניים, לוחצים על Continue (המשך).
תהליך ההקצאה והחיבור ל-Cloud Shell אמור להימשך רק כמה רגעים.
המכונה הווירטואלית הזו כוללת את כל הכלים הנדרשים לפיתוח. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את הביצועים והאימות של הרשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.
אחרי שתתחברו ל-Cloud Shell, אמורה להופיע הודעה על כך שהאימות בוצע והפרויקט מוגדר לפי מזהה הפרויקט שלכם.
- מריצים את הפקודה הבאה ב-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`
- מריצים את הפקודה הבאה ב-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. מעולה!
למדתם איך להשתמש ב-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
מידע נוסף
- מסמכי התיעוד של Cloud Translation: https://cloud.google.com/translate/docs
- Python ב-Google Cloud: https://cloud.google.com/python
- ספריות לקוח של Cloud ל-Python: https://github.com/googleapis/google-cloud-python
רישיון
העבודה הזו בשימוש במסגרת רישיון Creative Commons Attribution 2.0 Generic.