Services de traduction dans les briques

Pour les briques ciblant des langues autres que l'anglais et n'utilisant pas la prise en charge des langues natives de Digital Assistant, vous devez configurer un service de traduction.

Pour ces briques, lorsqu'un utilisateur saisit une demande ou une réponse dans une langue autre que l'anglais, la brique utilise le service de traduction pour convertir cette entrée en anglais. Une fois l'entrée traduite, le moteur de traitement du langage naturel peut la résoudre en intention et mettre en correspondance les entités. La brique peut alors répondre à l'utilisateur en utilisant le service de traduction pour traduire les libellés et les invites, ou en référençant des chaînes propres à la langue concernée dans des groupes de ressources.

Pour les briques dont le corpus d'entraînement est dans une langue autre que l'anglais, le service de traduction est également utilisé lors de la conception. Lorsque vous entraînez une brique dans une langue autre que l'anglais, elle génère des versions anglaises des exemples de variation et des valeurs d'entité personnalisée à utiliser dans le modèle d'entraînement (ces traductions n'apparaissent toutefois pas dans le concepteur de briques).

Remarque

Si vous prévoyez d'ajouter une brique basée sur un service de traduction à un assistant numérique, celui-ci doit également utiliser un service de traduction.

Services de traduction pris en charge

OCI Language

Oracle Cloud Infrastructure (OCI) fournit son propre service de traduction appelé Language. Si vous utilisez ce service en tant que service de traduction dans Oracle Digital Assistant, les messages utilisateur ne sont pas exposés à un service de traduction tiers.

Pour utiliser OCI Language en tant que service de traduction, vous devez vous abonner au service et créer des droits d'accès pour Digital Assistant. Reportez-vous à Stratégies pour OCI Language.

API de traduction Google

Pour utiliser l'API de traduction Google, vous devez générer la clé d'API. Vous pouvez créer cette clé à partir de la console Google Cloud Platform (API et services > Informations d'identification). Pour en savoir plus, reportez-vous à la documentation Google Cloud Platform.

Microsoft Translator

Si vous voulez utiliser Microsoft Translator comme service de traduction dans Oracle Digital Assistant, vous devez vous abonner à Translator ou au multiservice Cognitive Services, et obtenir une clé secrète. Reportez-vous à la page https://docs.microsoft.com/en-gb/azure/cognitive-services/translator/reference/v3-0-reference.

Voici les principaux éléments à connaître :

  • Vous devez utiliser la région Mondial et l'URL correspondante (https://api.cognitive.microsofttranslator.com/).
  • Vous devez obtenir une clé secrète pour l'authentification. Vous pouvez l'obtenir à partir de la section Clés et points de terminaison du portail Azure.

Inscription d'un service de traduction auprès d'Oracle Digital Assistant

  1. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral et sélectionnez Paramètres > Service de traduction.

  2. Cliquez sur + Service.

  3. Dans la boîte de dialogue Services de traduction, entrez l'URL et la clé d'autorisation (pour le service Microsoft Translator) ou le jeton d'autorisation (pour l'API de traduction Google).

    1. URL
    2. Clé d'autorisation (pour le service Microsoft Translator) ou le jeton d'autorisation (pour l'API de traduction Google).

Ajout d'un service de traduction à la brique

  1. Si vous ne l'avez pas déjà fait, inscrivez un service de traduction auprès d'Oracle Digital Assistant.
  2. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.
  3. Dans la barre de navigation de gauche de la brique, cliquez sur l'icône Paramètres (icône Paramètres) et sélectionnez l'onglet Général.
  4. Accédez à la liste déroulante Service de traduction, puis sélectionnez le service de traduction.

Approches basées sur les services de traduction

Lorsque vous passez par un service de traduction pour prendre en charge les briques qui conversent dans des langues autres que l'anglais, vous pouvez adopter l'une des approches de développement suivantes :

  • Créez des briques monolingues dans une langue autre que l'anglais en procédant comme suit :
    • Préparez le corpus d'entraînement dans la langue cible de la brique.

    Lorsque vous développez des assistants numériques dans une langue unique autre que l'anglais, vous devez leur ajouter des briques monolingues (toutes les briques d'un assistant numérique donné doivent avoir la même langue prédominante).

  • Créez des briques multilingues en procédant comme suit :
    • Préparez le corpus d'entraînement en anglais.
    • Configurez le flux de dialogue de la brique afin de gérer la traduction des saisies utilisateur et des réponses de la brique.
    • Créez éventuellement (recommandé) des groupes de ressources en plusieurs langues pour les libellés, les invites et les messages de la brique. Cette opération est recommandée car elle vous permet de contrôler la formulation des réponses de la brique.

Dans les deux cas, Digital Assistant utilise le service de traduction pour traduire l'entrée utilisateur dans la langue de base. Pour les réponses, il utilise les groupes de ressources (s'ils sont fournis dans la brique) ou le service de traduction pour traduire la réponse de la brique dans la langue de l'utilisateur.

Brique monolingue dont la langue n'est pas l'anglais utilisant un service de traduction

Pour développer une brique dans une seule langue autre que l'anglais qui repose sur un service de traduction, procédez comme suit :

  1. Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.

  2. Créez des variations pour votre brique dans la langue cible de celle-ci (au lieu de l'anglais) :
    1. Cliquez sur icône permettant d'ouvrir le menu latéral pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis ouvrez votre brique.
    2. Dans la navigation de gauche de la brique, cliquez sur Il s'agit d'une image de l'icône Intention.
    3. Sélectionnez une intention.
    4. Dans le champ de texte Exemples, saisissez la variation, puis appuyez sur Entrée.
    5. Répétez les deux sous-étapes précédentes pour chaque intention.
  3. Pour toutes les entités personnalisées de votre brique, assurez-vous que les valeurs sont dans la langue principale de la brique.

    Vous pouvez ajouter et modifier des entités personnalisées en cliquant sur Image de l'icône Entités dans la barre de navigation de gauche de la brique.

    Si vous n'indiquez pas les valeurs d'entité personnalisée dans la langue principale de la brique, celle-ci ne pourra pas traiter correctement la saisie utilisateur contenant les valeurs à mettre en correspondance à l'aide d'une entité personnalisée.

  4. Dans la brique, mettez à jour tous les messages de configuration et les invites pour utiliser la langue principale :

    Pour accéder à ces messages et à ces invites, procédez comme suit :

    • Dans la barre de navigation de gauche de la brique, cliquez sur icône Paramètres.

    Les messages et les invites se trouvent dans les onglets Configuration et Assistant numérique.

Voici quelques autres éléments à prendre en compte :
  • Vous ne pouvez pas traduire les noms des entités intégrées.

  • Lorsque vous configurez votre brique de cette façon, la structure de traitement du langage détecte les entrées dans une langue autre que l'anglais et les traduit en anglais (langue du modèle d'entraînement) en arrière-plan. Après avoir évalué l'entrée, elle détermine la réponse appropriée et la traduit dans la langue cible.

    Cette méthode peut influer sur les coûts de traduction car elle nécessite un plus grand nombre d'appels au service de traduction qu'une brique dont le corpus d'entraînement est déjà en anglais.

Briques multilingues avec traduction automatique

Pour les briques qui utilisent un service de traduction, vous pouvez activer la détection automatique de la langue de l'utilisateur et la communication dans cette langue.

Pour procéder à cette configuration, vous devez mettre à jour le flux de dialogue aux fins suivantes :

  • Détecter la langue de l'utilisateur.
  • Traduire les saisies utilisateur afin qu'elles puissent être résolues.
Traduction des briques en mode boîte de dialogue visuelle

Pour les compétences multilingues conçues en mode dialogue visuel, voici les étapes de configuration de la traduction :

  1. Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
  2. Au début du flux que vous prévoyez d'être le point de départ de la brique, insérez un composant Détecter la langue.
  3. Dans le flux principal, ajoutez l'événement intégré Démarrer la brique et mettez-le en correspondance avec le flux contenant le composant Détecter la langue.
  4. Sur la page Paramètres de la brique, sélectionnez l'onglet Configuration et définissez les propriétés Traduire le message d'entrée utilisateur et Traduire le message de réponse du bot.
    • Définissez Traduire le message d'entrée utilisateur sur Vrai pour traduire les entrées utilisateur.
    • Si vous n'utilisez pas de groupes de ressources pour les langues cible, définissez Traduire le message de réponse de bot sur True.
Traduction des aptitudes en mode boîte de dialogue YAML

Pour les briques conçues en mode de dialogue YAML, vous pouvez déterminer ce qui doit être traduit composant par composant à l'aide de la variable de contexte autotranslate ou des deux et de la propriété translate de niveau composant.

  • La variable de contexte autotranslate s'applique globalement à l'ensemble de la brique. Si vous ne spécifiez pas autotranslate, sa valeur est false.
  • La propriété translate peut être définie individuellement pour chaque composant. Lorsque la propriété translate est définie pour un composant, elle remplace la valeur autotranslate de ce composant.

Pour autotranslate et translate, vous pouvez définir la valeur en tant que valeur booléenne unique, ou indiquer des valeurs booléennes distinctes pour l'entrée et la sortie.

Exemples : variable de contexte autotranslate

Voici un exemple d'utilisation de la variable autotranslate afin d'activer la traduction automatique pour l'entrée et la sortie :

  setAutoTranslate:
    component: "System.SetVariable"
    properties:
      variable: "autoTranslate"
      value: true

Voici comment utiliser la variable autotranslate pour traduire l'entrée par défaut, mais pas la sortie :

  setAutoTranslate:
    component: "System.SetVariable"
    properties:
      variable: "autoTranslate"
      value:
        input: true
        output: false
Remarque

Vous n'avez pas besoin d'indiquer les valeurs autotranslation définies sur False. Par exemple, dans le fragment de code précédent, vous n'avez pas besoin d'inclure la ligne suivante :

        output: false
Exemples : propriété translate

Voici un exemple de définition de la propriété translate pour envoyer l'entrée et la sortie du composant au service de traduction indiqué pour la brique :

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate: true

Voici un exemple d'envoi de l'entrée du composant uniquement au service de traduction :

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate:       
        input: true
        output: false
Traduction par acceptation

Pour les briques conçues en mode dialogue YAML, voici les étapes pour spécifier individuellement les composants à traduire :

  1. Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
  2. Assurez-vous que la variable de contexte autoTranslate n'est pas définie (ou est définie sur false).
  3. Au-dessus de l'état du composant System.Intent, ajoutez le composant System.DetectLanguage :
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Remarque

    La propriété useExistingProfileLanguageTag est utilisée lorsqu'une brique fait partie d'un assistant numérique disposant d'un service de traduction. La brique peut ainsi utiliser immédiatement la langue détectée par l'assistant numérique. Sinon, la brique peut indiquer un message ou une invite en anglais avant que la langue ne soit (re)détectée. Si la brique ne figure pas dans un assistant numérique compatible avec la traduction, la propriété est ignorée.
  4. Dans le composant System.Intent, définissez la propriété translate sur true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Pour les autres composants d'entrée, définissez également la propriété translate sur true, ou définissez l'attribut input de la propriété translate sur true. Par exemple :
      askName:
        component: "System.Text"
        properties:   
          prompt: "${rb.askNamePrompt}"
          variable: "name"
          translate:       
            input: true
            output: false
Exemple : brique multilingue avec traduction automatique (par acceptation)
metadata:
  platformVersion: "1.0"
main: true
name: "AutoTranslatePizzaJoe"
parameters:
  age: 18
context:
  variables:
    size: "PizzaSize"
    type: "PizzaType"
    crust: "PizzaCrust"
    iResult: "nlpresult" 
states:
  detect:
    component: "System.DetectLanguage"
    properties:
      useExistingProfileLanguageTag: true
    transitions:
      next: "intent"
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult" 
      translate: true
  ShowMenu:
    component: "System.CommonResponse"
    properties:
      processUserMessage: true
      translate:       
        input: true
        output: false
      metadata:
        responseItems:
          - type: "text"
            text: "Hello ${profile.firstName}, this is our menu today:"
            ...
  ...  
Traduction par refus

Pour les briques conçues en mode de dialogue YAML, voici les étapes à suivre pour utiliser la traduction automatique par défaut (et spécifier individuellement les composants à ne pas traduire) :

  1. Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
  2. Ajoutez autoTranslate: "map" en tant que variable au noeud context.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. Dans le noeud states, au-dessus du composant System.Intent, ajoutez un composant System.SetVariable. Définissez ensuite la propriété variable de façon à utiliser la variable de contexte autoTranslate, et définissez l'attribut input (et éventuellement output) de la propriété value sur true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Remarque

    Si vous utilisez des groupes de ressources, vous devez définir la valeur output sur false.
  4. Ajoutez le composant System.DetectLanguage pour l'état suivant :
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Remarque

    La propriété useExistingProfileLanguageTag est utilisée lorsqu'une brique fait partie d'un assistant numérique disposant d'un service de traduction. La brique peut ainsi utiliser immédiatement la langue détectée par l'assistant numérique. Sinon, la brique peut indiquer un message ou une invite en anglais avant que la langue ne soit (re)détectée. Si la brique ne figure pas dans un assistant numérique compatible avec la traduction, la propriété est ignorée.
  5. Pour les composants à ne pas traduire automatiquement, assurez-vous de définir la propriété translate sur false, par exemple :
      done:
        component: "System.Output"
        properties:
          text: "${rb('OnTheWay','${size.value}','${type.value}')}"
          translate:       
            input: true
            output: false
        transitions:
          return: "done"
Exemple : brique multilingue avec traduction automatique pour l'entrée (par refus)

Dans cet exemple, la traduction automatique est configurée pour l'entrée, mais elle est désactivée pour la sortie (afin que le texte de sortie puisse être spécifié dans les groupes de ressources).

metadata:
  platformVersion: "1.0"
main: true
name: "AutoTranslatePizzaJoe"
parameters:
  age: 18
context:
  variables:
    size: "PizzaSize"
    type: "PizzaType"
    crust: "PizzaCrust"
    iResult: "nlpresult"
    autoTranslate: "map" 
states:
  setAutoTranslate:
    component: "System.SetVariable"
    properties:
      variable: "autoTranslate"
      value:
        input: true
        output: false
    transitions:
      next: "detect:
  detect:
    component: "System.DetectLanguage"
    properties:
      useExistingProfileLanguageTag: true
    transitions: 
      ...
 

Manipulation de l'entrée avant la traduction

Pour manipuler le texte d'entrée avant de l'envoyer au service de traduction, vous pouvez utiliser le composant Traduire l'entrée (mode de boîte de dialogue Visual) ou System.TranslateInput (mode de boîte de dialogue YAML). Par exemple, vous pouvez traiter la saisie utilisateur afin de supprimer certaines données personnelles avant de l'envoyer au service de traduction.

Dans le fragment de code YAML suivant, la variable sourceString contient le texte à traduire. (Ce texte a peut-être été collecté par un autre composant, par exemple.) Une fois que System.TranslateInput a terminé son traitement, la traduction en anglais est stockée dans la variable translatedString.
context:
  variables:
    autoTranslate: "boolean" 
    translatedString: "string"
    sourceString: "string"    
   ...
states:
   ...
  translateInputString:
    component: "System.TranslateInput"
    properties:
      source: "sourceString"
      variable: "translatedString"
    transitions:
      ...

Langue prédominante

Pour les briques que vous configurez avec la version 20.09 ou antérieure de la plate-forme et avec un service de traduction, Oracle Digital Assistant leur affecte automatiquement une langue prédominante, en fonction de la langue de leurs exemples de variation.

Pour connaître la langue prédominante affectée à une brique, cliquez sur l'icône Paramètres (icône Paramètres) dans la barre de navigation de gauche de la brique, sélectionnez l'onglet Général et vérifiez la valeur de la propriété Langue prédominante.

Pour ces briques, assurez-vous que l'ensemble des exemples de variation et des entités de votre intention, ainsi que tous les textes de réponse du dialogue, sont dans la langue prédominante.

Si vous concevez votre brique de façon à prendre en charge plusieurs langues, la langue prédominante doit être l'anglais.

Pour les assistants numériques basés sur la version 20.09 ou une version antérieure de la plate-forme, la langue prédominante est déterminée par la langue prédominante de la première brique que vous ajoutez à l'assistant numérique. Toutes les autres briques que vous ajoutez à l'assistant numérique doivent avoir la même langue prédominante.

Si la première brique que vous ajoutez n'a pas de langue prédominante (car aucun service de traduction n'a été spécifié dans la brique), la langue prédominante de l'assistant numérique est l'anglais. Dans ce cas, vous pouvez ajouter des briques ayant l'anglais pour langue prédominante ou n'ayant pas de langue prédominante définie.

Remarque

Pour les briques et les assistants numériques basés sur la version 20.12 ou une version supérieure de la plate-forme, aucune langue prédominante n'est définie. A la place, vous indiquez la langue principale lorsque vous créez la brique ou l'assistant numérique.