Korzystanie z interfejsu Translation API w Pythonie

1. Omówienie

1e2217da0416d129.png

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

W tym samouczku będziesz używać interfejsu Translation API w Pythonie. Obejmują one sposoby wyświetlania listy dostępnych języków, tłumaczenia tekstu i wykrywania języka danego tekstu.

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ądarki, na przykład Chrome lub Firefox;
  • znajomość języka Python,

Ankieta

Jak wykorzystasz ten samouczek?

Tylko do przeczytania Przeczytaj go i wykonaj ćwiczenia

Jak oceniasz swoje doświadczenia z językiem Python?

Początkujący Poziom średnio zaawansowany Biegły

Jak oceniasz usługi Google Cloud?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu.
  • Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Cloud Shell – środowisko wiersza poleceń działające w Cloud.

Aktywowanie Cloud Shell

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

55efc1aaa7a4d3ad.png

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tej usługi. Jeśli wyświetlił się ekran pośredni, kliknij Dalej.

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość zadań w ramach tego ćwiczenia z programowania można wykonać w przeglądarce.

Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest uwierzytelniony, a projekt jest ustawiony na identyfikator Twojego projektu.

  1. Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list

Dane wyjściowe polecenia

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt:
gcloud config list project

Dane wyjściowe polecenia

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

Dane wyjściowe polecenia

Updated property [core/project].

3. Konfiguracja ś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ą (do użycia 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 wyizolować 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.11.0 ...

Możesz teraz korzystać z biblioteki klienta Translation API.

W następnych krokach użyjesz interaktywnego interpretera Pythona o nazwie IPython, który został zainstalowany w poprzednim kroku. Rozpocznij sesję od uruchomienia ipython w Cloud Shell:

ipython

Powinien pojawić się ekran podobny do tego:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.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 wysłać pierwsze żądanie i listę obsługiwanych języków...

4. Wyświetl listę dostępnych języków

W tej sekcji znajdziesz listę wszystkich języków dostępnych w 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 wyświetlić się podobny komunikat:

---------------------- Languages: 136 ----------------------
af        Afrikaans
ak        Akan
sq        Albanian
am        Amharic
ar        Arabic
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

Zobacz, jakie możliwości daje język wyświetlania w języku francuskim:

print_supported_languages("fr")

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

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

Możesz użyć innego kodu języka.

Podsumowanie

W tym kroku udało Ci się wyświetlić listę wszystkich języków dostępnych w Translation API. Pełną listę obsługiwanych języków znajdziesz na stronie pomocy dotyczącej 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 żądanej pary tłumaczeń językowych, używany jest model tłumaczenia maszynowego opartego na wyrażeniach (PBMT). Więcej informacji o Tłumaczu Google i jego modelach tłumaczeń znajdziesz w poście o 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ę, która tłumaczy ten sam tekst w różnych językach:

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

Powinien pojawić się następujący komunikat:

------------------ 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ę wykorzystać interfejs Translation API do tłumaczenia tekstu na wiele języków. Dowiedz się więcej o tłumaczeniu tekstu.

6. Wykryj języki

Do wykrywania języka ciągu tekstowego możesz też używać interfejsu Translation API.

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

Powinien pojawić się następujący komunikat:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  80% | 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 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 w Pythonie.

Czyszczenie danych

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

  • Jeśli nadal jesteś w 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 z 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.