Использование API перевода с Python

1. Обзор

1e2217da0416d129.png

API перевода предоставляет простой программный интерфейс для динамического перевода произвольной строки на любой поддерживаемый язык с использованием современного нейронного машинного перевода. Его также можно использовать для определения языка в тех случаях, когда исходный язык неизвестен.

В этом руководстве вы будете использовать API перевода с Python. Рассматриваемые концепции включают в себя составление списка доступных языков, перевод текста и определение языка данного текста.

Что вы узнаете

  • Как настроить свою среду
  • Как вывести список доступных языков
  • Как перевести текст
  • Как определить языки

Что вам понадобится

  • Проект Google Cloud
  • Браузер, например Chrome или Firefox.
  • Знакомство с использованием Python

Опрос

Как вы будете использовать этот урок?

Прочтите только до конца Прочитайте его и выполните упражнения.

Как бы вы оценили свой опыт работы с Python?

Новичок Средний Опытный

Как бы вы оценили свой опыт работы с сервисами Google Cloud?

Новичок Средний Опытный

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Cloud Shell , среду командной строки, работающую в облаке.

Активировать Cloud Shell

  1. В Cloud Console нажмите «Активировать Cloud Shell». 853e55310c205094.png .

3c1dabeca90e44e5.png

Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите «Продолжить» .

9c92662c6a846a5c.png

Подготовка и подключение к Cloud Shell займет всего несколько минут.

9f0e51b578fecce5.png

Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в 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. Настройка среды

Прежде чем вы сможете начать использовать 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, чтобы изолировать зависимости:

virtualenv venv-translate

Активируйте виртуальную среду:

source venv-translate/bin/activate

Установите IPython и клиентскую библиотеку API перевода:

pip install ipython google-cloud-translate

Вы должны увидеть что-то вроде этого:

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

Теперь вы готовы использовать клиентскую библиотеку 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. Список доступных языков

В этом разделе вы перечислите все доступные языки в 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

Вы можете попробовать использовать другой код языка .

Краткое содержание

На этом этапе вы смогли перечислить все доступные языки в API перевода. Полный список поддерживаемых языков можно найти на странице языковой поддержки .

5. Перевести текст

Вы можете использовать API перевода для перевода текста с одного языка на другой. Текст переводится с использованием модели нейронного машинного перевода (NMT). Если модель NMT не поддерживается для запрошенной пары языкового перевода, используется модель машинного перевода на основе фраз (PBMT). Дополнительную информацию о Google Translate и его моделях перевода см . в объявлении 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 : 안녕하세요!

Краткое содержание

На этом этапе вы смогли использовать 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:  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    | 안녕하세요!

Краткое содержание

На этом этапе вы смогли определить язык фрагмента текста с помощью API перевода. Узнайте больше об обнаружении языков .

7. Поздравляем!

1e2217da0416d129.png

Вы узнали, как использовать 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 2.0 Generic License.