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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ก.ย. 13, 2024
account_circleเขียนโดย Laurent Picard & Abby Carey

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 ทั่วไป