Korzystanie z interfejsu Translation API w Pythonie

1. Przegląd

1e2217da0416d129.png

Translation API to prosty, zautomatyzowany interfejs, który umożliwia dynamiczne tłumaczenie dowolnego ciągu znaków na dowolny obsługiwany język przy użyciu najnowocześniejszego neuronowego tłumaczenia maszynowego. Może też służyć do wykrywania języka w przypadkach, gdy język źródłowy jest nieznany.

W tym samouczku będziesz używać interfejsu Translation API w Pythonie. Omawiane zagadnienia obejmują m.in. wyświetlanie listy dostępnych języków, tłumaczenie tekstu i wykrywanie języka, w którym napisano dany tekst.

Czego się nauczysz

  • Jak skonfigurować środowisko
  • Jak wyświetlić listę dostępnych języków
  • Jak tłumaczyć tekst
  • Jak wykrywać języki

Czego potrzebujesz

  • projekt Google Cloud,
  • przeglądarka, np. Chrome lub Firefox;
  • znajomość Pythona,

Ankieta

Jak zamierzasz korzystać z tego samouczka?

Tylko przeczytaj Przeczytaj i wykonaj ćwiczenia

Jak oceniasz swoje doświadczenie z Pythonem?

Początkujący Średnio zaawansowany Zaawansowany

Jak oceniasz korzystanie z usług Google Cloud?

Początkujący Średnio zaawansowany Zaawansowany

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module użyjemy Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

Aktywowanie Cloud Shell

  1. W konsoli Cloud kliknij Aktywuj Cloud Shell 853e55310c205094.png.

3c1dabeca90e44e5.png

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tego środowiska. Jeśli pojawił się ekran pośredni, kliknij Dalej.

9c92662c6a846a5c.png

Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

9f0e51b578fecce5.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym module, a być może wszystkie, możesz wykonać w przeglądarce.

Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.

  1. Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list

Wynik polecenia

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project

Wynik polecenia

[core]
project = <PROJECT_ID>

Jeśli nie, możesz go ustawić za pomocą tego polecenia:

gcloud config set project <PROJECT_ID>

Wynik polecenia

Updated property [core/project].

3. Konfigurowanie środowiska

Zanim zaczniesz korzystać z interfejsu Translation API, uruchom w Cloud Shell to polecenie, aby go włączyć:

gcloud services enable translate.googleapis.com

Powinien pojawić się ekran podobny do tego:

Operation "operations/..." finished successfully.

Możesz już korzystać z interfejsu Translation API.

Ustaw następującą zmienną środowiskową (która będzie używana w aplikacji):

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

echo "PROJECT_ID: $PROJECT_ID"

Przejdź do katalogu głównego:

cd ~

Utwórz środowisko wirtualne Pythona, aby odizolować zależności:

virtualenv venv-translate

Aktywuj środowisko wirtualne:

source venv-translate/bin/activate

Zainstaluj IPython i bibliotekę klienta Translation API:

pip install ipython google-cloud-translate

Powinien pojawić się ekran podobny do tego:

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

Teraz możesz używać biblioteki klienta Translation API.

W kolejnych krokach użyjesz interaktywnego interpretera Pythona o nazwie IPython, który został zainstalowany w poprzednim kroku. Rozpocznij sesję, uruchamiając ipython w Cloud Shell:

ipython

Powinien pojawić się ekran podobny do tego:

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

Skopiuj ten kod do sesji IPython:

from os import environ

from google.cloud import translate


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

Możesz już wysłać pierwsze żądanie i wyświetlić listę obsługiwanych języków.

4. Lista dostępnych języków

W tej sekcji znajdziesz listę wszystkich języków dostępnych w interfejsie Translation API.

Aby wyświetlić listę dostępnych języków, skopiuj ten kod do sesji 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}")
    

Wywołaj funkcję:

print_supported_languages("en")

Powinien pojawić się ekran podobny do tego:

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

Sprawdź, co zyskasz, gdy język wyświetlania będzie ustawiony na francuski:

print_supported_languages("fr")

Powinna się wyświetlić ta sama lista posortowana według nazw francuskich, podobnie jak poniżej:

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

Możesz spróbować z innym kodem języka.

Podsumowanie

W tym kroku udało Ci się wyświetlić listę wszystkich języków dostępnych w interfejsie Translation API. Pełną listę obsługiwanych języków znajdziesz na stronie obsługiwanych języków.

5. Tłumaczenie tekstu

Za pomocą interfejsu Translation API możesz tłumaczyć tekst z jednego języka na inny. Tekst jest tłumaczony za pomocą modelu neuronowego tłumaczenia maszynowego (NMT). Jeśli model NMT nie jest obsługiwany w przypadku wybranej pary językowej, używany jest model tłumaczenia maszynowego opartego na frazach (PBMT). Więcej informacji o Tłumaczu Google i jego modelach tłumaczeń znajdziesz w poście z ogłoszeniem dotyczącym NMT.

Aby przetłumaczyć tekst, skopiuj ten kod do sesji 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]
    

Wywołaj funkcję, aby przetłumaczyć ten sam tekst na różne języki:

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

Powinny pojawić się te wyniki:

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

Podsumowanie

W tym kroku udało Ci się użyć interfejsu Translation API do przetłumaczenia tekstu na wiele języków. Dowiedz się więcej o tłumaczeniu tekstu.

6. Wykrywanie języków

Za pomocą interfejsu Translation API możesz też wykrywać język ciągu tekstowego.

Skopiuj ten kod do sesji IPython:

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

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

    return response.languages[0]
    

Wywołaj funkcję, aby wykryć język różnych zdań:

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

Powinny pojawić się te wyniki:

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

Podsumowanie

W tym kroku udało Ci się wykryć język fragmentu tekstu za pomocą interfejsu Translation API. Dowiedz się więcej o wykrywaniu języków.

7. Gratulacje!

1e2217da0416d129.png

Wiesz już, jak korzystać z interfejsu Translation API za pomocą Pythona.

Czyszczenie danych

Aby wyczyścić środowisko programistyczne, w Cloud Shell:

  • Jeśli nadal korzystasz z sesji IPython, wróć do powłoki: exit
  • Przestań używać środowiska wirtualnego Pythona: deactivate
  • Usuń folder środowiska wirtualnego: cd ~ ; rm -rf ./venv-translate

Aby usunąć projekt Google Cloud, w Cloud Shell:

  • Pobierz bieżący identyfikator projektu: PROJECT_ID=$(gcloud config get-value core/project)
  • Sprawdź, czy to jest projekt, który chcesz usunąć: echo $PROJECT_ID
  • Usuń projekt: gcloud projects delete $PROJECT_ID

Więcej informacji

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.