การใช้ 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 คุณต้องสร้างบัญชี

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

เริ่มต้น Cloud Shell

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

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

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

55efc1aaa7a4d3ad.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

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

สร้างสภาพแวดล้อมเสมือนของ Python เพื่อแยกทรัพยากร Dependency ต่อไปนี้

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. ตรวจหาภาษา

คุณยังสามารถใช้ 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    | 안녕하세요 세계!

สรุป

ในขั้นตอนนี้ คุณสามารถตรวจจับภาษาของข้อความโดยใช้ Translation API อ่านเพิ่มเติมเกี่ยวกับการตรวจหาภาษา

7. ยินดีด้วย

1e2217da0416d129.png

คุณรู้วิธีใช้ Translation API โดยใช้ Python แล้ว

ล้างข้อมูล

หากต้องการล้างสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ให้ดำเนินการดังนี้จาก Cloud Shell

  • หากคุณยังอยู่ในเซสชัน IPython ให้กลับไปที่ Shell: 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