การใช้ Translation API กับ Python

1. ภาพรวม

1e2217da0416d129.png

Translation API มีอินเทอร์เฟซแบบเป็นโปรแกรมที่เรียบง่ายสำหรับการแปลสตริงใดก็ได้แบบไดนามิกเป็นภาษาที่รองรับโดยใช้การแปลด้วยระบบนิวรัลของคอมพิวเตอร์ที่ทันสมัย นอกจากนี้ ยังใช้เพื่อตรวจหาภาษาในกรณีที่ไม่ทราบภาษาต้นฉบับได้ด้วย

ในบทแนะนำนี้ คุณจะได้ใช้ Translation API กับ Python แนวคิดที่ครอบคลุม ได้แก่ วิธีแสดงรายการภาษาที่พร้อมใช้งาน แปลข้อความ และตรวจหาภาษาของข้อความที่ระบุ

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าสภาพแวดล้อม
  • วิธีแสดงรายการภาษาที่พร้อมให้บริการ
  • How to translate text
  • วิธีตรวจหาภาษา

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud
  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • คุ้นเคยกับการใช้ Python

แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านอย่างเดียว อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนประสบการณ์การใช้งาน Python เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

คุณจะให้คะแนนประสบการณ์การใช้งานบริการของ Google Cloud เท่าไร

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากแล็ปท็อประยะไกลได้ แต่ใน Codelab นี้คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell 853e55310c205094.png

3c1dabeca90e44e5.png

หากคุณเริ่มใช้ Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอระดับกลางที่อธิบายว่า Cloud Shell คืออะไร หากเห็นหน้าจอระดับกลาง ให้คลิกต่อไป

9c92662c6a846a5c.png

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

9f0e51b578fecce5.png

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่จำเป็นไว้แล้ว โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน 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 เพื่อเปิดใช้ API

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 แปลภาษาและโมเดลการแปลได้ที่โพสต์ประกาศ 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 License) 2.0 แบบทั่วไป