Utiliser l'API Translation avec Python

Utiliser l'API Translation avec Python

À propos de cet atelier de programmation

subjectDernière mise à jour : sept. 13, 2024
account_circleRédigé par Laurent Picard & Abby Carey

1. Présentation

1e2217da0416d129.png

L'API Translation fournit une interface de programmation simple permettant de traduire dynamiquement une chaîne arbitraire dans n'importe quelle langue compatible à l'aide de la traduction automatique neuronale de pointe. Elle peut également être utilisée pour détecter une langue lorsque la langue source est inconnue.

Dans ce tutoriel, vous allez utiliser l'API Translation avec Python. Vous découvrirez comment lister les langues disponibles, traduire du texte et détecter la langue d'un texte donné.

Points abordés

  • Configurer votre environnement
  • Lister les langues disponibles
  • Comment traduire du texte
  • Détecter les langues

Prérequis

  • Un projet Google Cloud
  • Un navigateur tel que Chrome ou Firefox
  • Maîtrise de l'utilisation de Python

Enquête

Comment allez-vous utiliser ce tutoriel ?

Quel est votre niveau d'expérience avec Python ?

Quel est votre niveau d'expérience avec les services Google Cloud ?

2. Préparation

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. Si vous n'avez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
  • L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet.
  • Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans le cloud, lors de cet atelier de programmation.

Activer Cloud Shell

  1. Dans Cloud Console, cliquez sur Activer Cloud Shell 853e55310c205094.png.

3c1dabeca90e44e5.png

Si vous démarrez Cloud Shell pour la première fois, un écran intermédiaire s'affiche pour décrire de quoi il s'agit. Si tel est le cas, cliquez sur Continuer.

9c92662c6a846a5c.png

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

9f0e51b578fecce5.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier de programmation dans un navigateur.

Une fois connecté à Cloud Shell, vous êtes en principe authentifié, et le projet est défini avec votre ID de projet.

  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list

Résultat de la commande

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet:
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si vous obtenez un résultat différent, exécutez cette commande :

gcloud config set project <PROJECT_ID>

Résultat de la commande

Updated property [core/project].

3. Cofiguration de l&#39;environnement

Avant de pouvoir utiliser l'API Translation, exécutez la commande suivante dans Cloud Shell pour l'activer:

gcloud services enable translate.googleapis.com

L'écran qui s'affiche devrait ressembler à ce qui suit :

Operation "operations/..." finished successfully.

Vous pouvez maintenant utiliser l'API Translation.

Définissez la variable d'environnement suivante (à utiliser dans votre application):

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

echo "PROJECT_ID: $PROJECT_ID"

Accédez à votre répertoire d'accueil:

cd ~

Créez un environnement virtuel Python pour isoler les dépendances:

virtualenv venv-translate

Activez l'environnement virtuel :

source venv-translate/bin/activate

Installez IPython et la bibliothèque cliente de l'API Translation:

pip install ipython google-cloud-translate

L'écran qui s'affiche devrait ressembler à ce qui suit :

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

Vous êtes maintenant prêt à utiliser la bibliothèque cliente de l'API Translation.

Dans les étapes suivantes, vous allez utiliser un interpréteur Python interactif appelé IPython, que vous avez installé à l'étape précédente. Démarrez une session en exécutant ipython dans Cloud Shell:

ipython

L'écran qui s'affiche devrait ressembler à ce qui suit :

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

Copiez le code suivant dans votre session IPython:

from os import environ

from google.cloud import translate


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

Vous êtes prêt à envoyer votre première requête et à lister les langues acceptées.

4. Répertorier les langues disponibles

Dans cette section, vous allez lister toutes les langues disponibles dans l'API Translation.

Pour afficher la liste des langues disponibles, copiez le code suivant dans votre session 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}")
   

Appelez la fonction :

print_supported_languages("en")

Vous devriez obtenir un résultat semblable à celui-ci:

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

Découvrez ce que vous obtenez avec la langue d'affichage en français:

print_supported_languages("fr")

La même liste, triée par nom français, devrait s'afficher, semblable à celle-ci:

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

Vous pouvez essayer avec un autre code de langue.

Résumé

À cette étape, vous avez pu lister toutes les langues disponibles dans l'API Translation. Vous trouverez la liste complète des langues acceptées sur la page Langues acceptées.

5. Traduire du texte

Vous pouvez utiliser l'API Translation pour traduire du texte d'une langue à une autre. Le texte est traduit à l'aide du modèle de traduction automatique neuronale (NMT). Si le modèle NMT n'est pas compatible avec la combinaison linguistique demandée, le modèle de traduction automatique sous-phrastique (PBMT, Phrase-Based Machine Translation) est utilisé. Pour en savoir plus sur Google Translate et ses modèles de traduction, consultez cet article d'annonce sur la NMT.

Pour traduire du texte, copiez le code suivant dans votre session 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]
   

Appelez la fonction pour traduire le même texte dans différentes langues:

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

Vous devez obtenir le résultat suivant:

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

Résumé

À cette étape, vous avez pu utiliser l'API Translation pour traduire du texte dans plusieurs langues. En savoir plus sur la traduction de texte

6. Détecter les langues

Vous pouvez également utiliser l'API Translation pour détecter la langue d'une chaîne de texte.

Copiez le code suivant dans votre session IPython:

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

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

   
return response.languages[0]
   

Appelez la fonction pour détecter la langue de différentes phrases:

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

Vous devez obtenir le résultat suivant:

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

Résumé

Dans cette étape, vous avez pu détecter la langue d'un extrait de texte à l'aide de l'API Translation. En savoir plus sur la détection des langues

7. Félicitations !

1e2217da0416d129.png

Vous avez appris à utiliser l'API Translation avec Python.

Nettoyage

Pour nettoyer votre environnement de développement, dans Cloud Shell:

  • Si vous êtes toujours dans votre session IPython, revenez au shell: exit
  • Arrêtez d'utiliser l'environnement virtuel Python: deactivate
  • Supprimez le dossier de votre environnement virtuel: cd ~ ; rm -rf ./venv-translate.

Pour supprimer votre projet Google Cloud, dans Cloud Shell:

  • Récupérez l'ID de votre projet actuel: PROJECT_ID=$(gcloud config get-value core/project)
  • Vérifiez qu'il s'agit bien du projet que vous souhaitez supprimer: echo $PROJECT_ID
  • Supprimez le projet: gcloud projects delete $PROJECT_ID

En savoir plus

Licence

Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.