Korzystanie z interfejsu Translation API w Pythonie

1. Omówienie

1e2217da0416d129.png

Interfejs Translation API to prosty, programowy interfejs do dynamicznego tłumaczenia dowolnego ciągu znaków na dowolny obsługiwany język za pomocą najnowocześniejszego neuronowego tłumaczenia maszynowego. Można go też używać do wykrywania języka w przypadkach, gdy język źródłowy jest nieznany.

W tym samouczku użyjesz interfejsu Translation API w Pythonie. W tym kursie omawiamy m.in. wyświetlanie listy dostępnych języków, tłumaczenie tekstu i wykrywanie języka, w jakim napisano dany tekst.

Czego się nauczysz

  • Konfigurowanie środowiska
  • 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ść języka Python,

Ankieta

Jak będziesz korzystać z tego samouczka?

Tylko przeczytać Przeczytać i wykonać ćwiczenia

Jak oceniasz swoje umiejętności w zakresie Pythona?

Początkujący Średnio zaawansowany Zaawansowany

Jak oceniasz korzystanie z usług Google Cloud?

Początkujący Średnio zaawansowany Zaawansowany

2. Konfiguracja i wymagania

Konfiguracja środowiska w samodzielnym tempie

  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órego nie używają interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest niepowtarzalny w ramach wszystkich projektów Google Cloud i nie można go zmienić (po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem musisz podać identyfikator projektu (zwykle oznaczony jako PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Nie można go zmienić po wykonaniu tego kroku. Pozostanie on do końca projektu.
  • Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Przejście przez ten samouczek nie będzie kosztowne, a być może nawet bezpłatne. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć 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

Google Cloud można obsługiwać zdalnie z laptopa, ale w tym samouczku będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

Aktywowanie Cloud Shell

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

3c1dabeca90e44e5.png

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni, na którym opisano, czym jest to środowisko. Jeśli taki ekran się wyświetlił, kliknij Dalej.

9c92662c6a846a5c.png

Uproszczenie i połączenie z Cloud Shell powinno zająć tylko kilka chwil.

9f0e51b578fecce5.png

Ta maszyna wirtualna zawiera wszystkie niezbędne narzędzia programistyczne. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. Większość, jeśli nie wszystkie, zadań w tym ćwiczeniu można wykonać w przeglądarce.

Po połączeniu z Cloud Shell powinieneś zobaczyć, że jesteś uwierzytelniony i że projekt jest ustawiony na identyfikator Twojego projektu.

  1. Aby potwierdzić uwierzytelnianie, 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 sprawdzić, czy 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 ustawić je za pomocą tego polecenia:

gcloud config set project <PROJECT_ID> 

Wynik polecenia

Updated property [core/project]. 

3. Konfiguracja środowiska

Aby móc 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 teraz korzystać z interfejsu Translation API.

Ustaw tę 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 domowego:

cd ~ 

Utwórz środowisko wirtualne Pythona, aby oddzielić 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 podaj wszystkie języki dostępne 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łanie funkcji:

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 otrzymujesz w języku francuskim:

print_supported_languages("fr") 

Powinna się wyświetlić ta sama lista posortowana według nazw francuskich, np. w takiej postaci:

---------------------- 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ć użyć innego kodu języka.

Podsumowanie

W tym kroku udało Ci się wyświetlić wszystkie języki dostępne w Translation API. Pełną listę obsługiwanych języków znajdziesz na stronie Obsługiwane języki.

5. Tłumaczenie tekstu

Interfejs Translation API umożliwia tłumaczenie tekstu 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 pary języków, których dotyczy tłumaczenie, używany jest model tłumaczenia maszynowego opartego na frazach (PBMT). Więcej informacji o Tłumaczu Google i jego modelach tłumaczenia znajdziesz w poście z ogłoszeniem 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 informacje:

------------------ 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 kilka języków. Dowiedz się więcej o tłumaczeniu tekstu.

6. Wykrywanie języków

Interfejsu Translation API możesz też używać do wykrywania języka tekstu.

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

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

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

7. Gratulacje!

1e2217da0416d129.png

Wiesz już, jak korzystać z interfejsu Translation API w Pythonie.

Czyszczenie danych

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

  • Jeśli nadal jesteś w sesji IPython, wróć do powłoki: exit
  • Zatrzymaj korzystanie ze środowiska wirtualnego Pythona: deactivate
  • Usuń folder środowiska wirtualnego: cd ~ ; rm -rf ./venv-translate

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

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

Więcej informacji

Licencja

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