Sử dụng API Dịch bằng Python

1. Tổng quan

1e2217da0416d129.png

Translation API cung cấp một giao diện có lập trình đơn giản để dịch linh hoạt một chuỗi tuỳ ý sang bất kỳ ngôn ngữ nào được hỗ trợ bằng công nghệ Dịch máy dùng mạng nơ-ron nhân tạo tiên tiến. Bạn cũng có thể dùng tính năng này để phát hiện ngôn ngữ trong trường hợp không xác định được ngôn ngữ gốc.

Trong hướng dẫn này, bạn sẽ sử dụng Translation API bằng Python. Các khái niệm được đề cập bao gồm cách liệt kê các ngôn ngữ hiện có, dịch văn bản và phát hiện ngôn ngữ của một văn bản nhất định.

Kiến thức bạn sẽ học được

  • Cách thiết lập môi trường
  • Cách liệt kê các ngôn ngữ hiện có
  • Cách dịch văn bản
  • Cách phát hiện ngôn ngữ

Bạn cần có

  • Một dự án trên Google Cloud
  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
  • Làm quen với cách sử dụng Python

Bản khảo sát

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc Đọc và hoàn thành bài tập

Bạn đánh giá thế nào về trải nghiệm của mình với Python?

Người mới bắt đầu Trung cấp Thành thạo

Bạn đánh giá thế nào về trải nghiệm của mình khi sử dụng các dịch vụ của Google Cloud?

Người mới bắt đầu Trung cấp Thành thạo

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án.
  • Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên đám mây. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trên đám mây.

Kích hoạt Cloud Shell

  1. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell 853e55310c205094.png.

3c1dabeca90e44e5.png

Nếu đây là lần đầu tiên bạn khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

9c92662c6a846a5c.png

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài giây.

9f0e51b578fecce5.png

Máy ảo này được trang bị tất cả các công cụ phát triển cần thiết. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc của mình trong lớp học lập trình này bằng trình duyệt.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án được đặt thành mã dự án của bạn.

  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list

Đầu ra của lệnh

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project

Đầu ra của lệnh

[core]
project = <PROJECT_ID>

Nếu không, bạn có thể đặt nó bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Đầu ra của lệnh

Updated property [core/project].

3. Thiết lập môi trường

Trước khi có thể bắt đầu sử dụng Translation API, hãy chạy lệnh sau trong Cloud Shell để bật API này:

gcloud services enable translate.googleapis.com

Bạn sẽ thấy như sau:

Operation "operations/..." finished successfully.

Giờ đây, bạn có thể sử dụng Translation API!

Đặt biến môi trường sau (được dùng trong ứng dụng của bạn):

export PROJECT_ID=$(gcloud config get-value core/project)

echo "PROJECT_ID: $PROJECT_ID"

Chuyển đến thư mục chính:

cd ~

Tạo một môi trường ảo Python để tách biệt các phần phụ thuộc:

virtualenv venv-translate

Kích hoạt môi trường ảo:

source venv-translate/bin/activate

Cài đặt IPython và thư viện ứng dụng Translation API:

pip install ipython google-cloud-translate

Bạn sẽ thấy như sau:

...
Installing collected packages: ..., ipython, google-cloud-translate
Successfully installed ... google-cloud-translate-3.16.0 ...

Giờ đây, bạn đã sẵn sàng sử dụng thư viện ứng dụng Translation API!

Trong các bước tiếp theo, bạn sẽ sử dụng một trình thông dịch Python tương tác có tên là IPython mà bạn đã cài đặt ở bước trước. Bắt đầu một phiên bằng cách chạy ipython trong Cloud Shell:

ipython

Bạn sẽ thấy như sau:

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]:

Sao chép mã sau vào phiên IPython:

from os import environ

from google.cloud import translate


PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"

Bạn đã sẵn sàng đưa ra yêu cầu đầu tiên và liệt kê các ngôn ngữ được hỗ trợ...

4. Liệt kê các ngôn ngữ được hỗ trợ

Trong phần này, bạn sẽ liệt kê tất cả ngôn ngữ có trong Translation API.

Để liệt kê các ngôn ngữ có sẵn, hãy sao chép mã sau vào phiên IPython của bạn:

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}")
    

Gọi hàm:

print_supported_languages("en")

Bạn sẽ thấy nội dung tương tự như sau:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanian
am        Amharic
ar        Arabic
hy        Armenian
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

Hãy xem những gì bạn nhận được khi sử dụng ngôn ngữ hiển thị là tiếng Pháp:

print_supported_languages("fr")

Bạn sẽ nhận được danh sách tương tự, được sắp xếp theo tên tiếng Pháp, tương tự như sau:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanais
de        Allemand
am        Amharique
en        Anglais
...
vi        Vietnamien
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zoulou

Bạn có thể thử bằng một mã ngôn ngữ khác.

Tóm tắt

Ở bước này, bạn có thể liệt kê tất cả các ngôn ngữ có trong Translation API. Bạn có thể xem danh sách đầy đủ các ngôn ngữ được hỗ trợ trên trang hỗ trợ ngôn ngữ.

5. Dịch văn bản

Bạn có thể sử dụng Translation API để dịch văn bản từ ngôn ngữ này sang ngôn ngữ khác. Văn bản được dịch bằng mô hình Dịch máy dùng mạng nơ-ron nhân tạo (NMT). Nếu mô hình NMT không hỗ trợ cặp ngôn ngữ dịch được yêu cầu, thì mô hình Dịch máy dựa trên cụm từ (PBMT) sẽ được sử dụng. Để biết thêm thông tin về Google Dịch và các mô hình dịch của công cụ này, hãy xem bài đăng thông báo về NMT.

Để dịch văn bản, hãy sao chép mã sau vào phiên 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]
    

Gọi hàm để dịch cùng một văn bản sang nhiều ngôn ngữ:

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}")
    

Bạn sẽ nhận được những thông tin sau:

------------------ 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 : 안녕하세요!

Tóm tắt

Trong bước này, bạn có thể sử dụng Translation API để dịch văn bản sang nhiều ngôn ngữ. Tìm hiểu thêm về cách dịch văn bản.

6. Phát hiện ngôn ngữ

Bạn cũng có thể sử dụng Translation API để phát hiện ngôn ngữ của một chuỗi văn bản.

Sao chép mã sau vào phiên IPython:

def detect_language(text: str) -> translate.DetectedLanguage:
    client = translate.TranslationServiceClient()

    response = client.detect_language(parent=PARENT, content=text)

    return response.languages[0]
    

Gọi hàm để phát hiện ngôn ngữ của các câu khác nhau:

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=" | ",
    )
    

Bạn sẽ nhận được những thông tin sau:

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    | 안녕하세요!

Tóm tắt

Trong bước này, bạn có thể phát hiện ngôn ngữ của một đoạn văn bản bằng Translation API. Đọc thêm về cách phát hiện ngôn ngữ.

7. Xin chúc mừng!

1e2217da0416d129.png

Bạn đã tìm hiểu cách sử dụng Translation API bằng Python!

Dọn dẹp

Để dọn dẹp môi trường phát triển, hãy làm như sau trong Cloud Shell:

  • Nếu bạn vẫn đang trong phiên IPython, hãy quay lại shell: exit
  • Ngừng sử dụng môi trường ảo Python: deactivate
  • Xoá thư mục môi trường ảo: cd ~ ; rm -rf ./venv-translate

Để xoá dự án trên đám mây của bạn, hãy làm như sau trong Cloud Shell:

  • Lấy mã dự án hiện tại: PROJECT_ID=$(gcloud config get-value core/project)
  • Hãy đảm bảo rằng đây là dự án bạn muốn xoá: echo $PROJECT_ID
  • Xoá dự án: gcloud projects delete $PROJECT_ID

Tìm hiểu thêm

Giấy phép

Tác phẩm này được cấp phép theo giấy phép Ghi công theo Creative Commons 2.0 Chung.