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

เริ่ม Cloud Shell

แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ 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 ทั่วไป