Services de traduction dans les compétences

Pour les compétences qui ciblent des langues autres que l'anglais et ne pas utiliser la prise en charge linguistique native de Digital Assistant, vous devez configurer un service de traduction.

Dans ce cas, lorsqu'un utilisateur entre une demande ou une réponse dans une autre langue, la compétence utilise le service de traduction pour convertir l'entrée en anglais. Une fois le texte traduit, le moteur de traitement du langage naturel peut le résoudre en intention et mettre les entités en correspondance. La compétence peut ensuite répondre à l'utilisateur en recourant au service de traduction pour traduire les étiquettes et les invites, ou en référençant les chaînes spécifiques à la langue dans des ensembles de ressources.

Pour les compétences dotées d'un corpus d'entraînement dans une langue autre que l'anglais, le service de traduction est également utilisé lors de la conception. Lorsque vous entraînez une compétence dans une autre langue, elle crée des versions anglaises des exemples d'énoncés et des valeurs d'entité personnalisées à utiliser dans le modèle d'entraînement (bien que ces traductions n'apparaissent pas dans le concepteur de compétence).

Note

Si vous avez l'intention d'ajouter une compétence basée sur un service de traduction à un assistant numérique, ce dernier doit également utiliser un service de traduction.

Services de traduction pris en charge

Service de langue pour OCI

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

Pour utiliser le service de langue pour OCI en tant que service de traduction, vous devez vous abonner au service et créer des autorisations permettant à Digital Assistant d'y accéder. Voir Politiques pour le service de langue pour OCI.

API de traduction Google

Pour utiliser l'API de traduction Google, vous devez générer la clé d'API. Vous créez cette clé depuis la console GCP (APIs & services > Credentials (API et services > Données d'identification)). Pour en savoir plus, voir la documentation de la plate-forme Google Cloud.

Microsoft Translator

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

Voici les points importants à connaître :

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

Enregistrer un service de traduction dans Oracle Digital Assistant

  1. Cliquez sur icône d'ouverture du menu latéral pour ouvrir le menu latéral et sélectionnez Settings > Translation Service (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 jeton d'autorisation (pour l'API de traduction Google).

Ajouter un service de traduction à votre compétence

  1. Si ce n'est déjà fait, enregistrez un service de traduction dans Oracle Digital Assistant.
  2. Cliquez sur icône d'ouverture du menu latéral pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
  3. Dans la barre de navigation gauche de la compétence, cliquez sur l'icône Settings (Paramètres) (icône des paramètres) et sélectionnez l'onglet General (Général).
  4. Naviguez jusqu'à la liste déroulante Translation Service (Service de traduction) et effectuez votre sélection.

Approches fondées sur les services de traduction

Lorsque vous utilisez un service de traduction pour prendre en charge des compétences qui conversent dans des langues autres que l'anglais, vous pouvez utiliser l'une de ces approches de développement :

  • Créez des compétences unilingues hors anglais et :
    • Préparez le corpus d'entraînement dans la langue cible de la compétence.

    Lorsque vous développez des assistants numériques dans une langue autre que l'anglais, vous les alimentez à l'aide de compétences unilingues (qui ont toutes la même langue prédominante pour un assistant numérique donné).

  • Créez des compétences multilingues et :
    • Préparez le corpus d'entraînement en anglais.
    • Configurez le flux de dialogue de la compétence pour gérer la traduction de l'entrée utilisateur et des réponses de la compétence.
    • Facultativement (mais préférablement), créez des ensembles de ressources dans une ou plusieurs langues pour les étiquettes, invites et messages de la compétence. Vous pouvez ainsi contrôler la formulation des réponses de la compétence.

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

Compétences dans une langue unique autre que l'anglais utilisant un service de traduction

Pour développer une compétence unilingue dans une langue autre que l'anglais qui repose sur un service de traduction :

  1. Le cas échéant, ajoutez un service de traduction à votre compétence.

  2. Créez les énoncés de votre compétence dans la langue cible (au lieu de l'anglais) :
    1. Cliquez sur icône d'ouverture du menu latéral pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
    2. Dans la barre de navigation gauche de la compétence, cliquez sur Ceci est une image de l'icône Intents (Intentions).
    3. Sélectionnez une intention.
    4. Dans le champ de texte Examples (Exemples), tapez l'énoncé et appuyez sur Entrée.
    5. Répétez les deux sous-étapes précédentes pour chaque intention.
  3. Vérifiez que toutes les valeurs des entités personnalisées de votre compétence sont dans la langue principale de celle-ci.

    Vous pouvez ajouter et modifier des entités personnalisées en cliquant sur Illustration de l'icône Entities (Entités) dans la barre de navigation gauche de la compétence.

    Si vous ne fournissez pas de valeurs d'entité personnalisée dans la langue principale de la compétence, celle-ci ne pourra pas traiter correctement les entrées utilisateur contenant des valeurs qui doivent être mises en correspondance avec ces entités.

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

    Pour accéder à ces messages et invites :

    • Dans la barre de navigation gauche de la compétence, cliquez sur icône des paramètres.

    Les messages et les invites se trouvent dans les onglets Configuration et Digital Assistant.

Gardez à l'esprit les points suivants :
  • Vous ne pouvez pas traduire le nom des entités intégrées.

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

    Cela peut avoir une incidence sur les coûts de traduction car il demande plus d'appels au service de traduction qu'une compétence dont le corpus d'entraînement est déjà en anglais.

Compétences multilingues avec traduction automatique

Pour les compétences qui utilisent un service de traduction, vous pouvez lui permettre de détecter automatiquement la langue de l'utilisateur et de communiquer dans celle-ci.

Pour cela, vous devez mettre à jour le flux de dialogue pour qu'il effectue les actions suivantes :

  • Détecter la langue de l'utilisateur.
  • Traduire l'entrée utilisateur pour la résoudre.
Traduction des aptitudes en mode de dialogue visuel

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

  1. Le cas échéant, ajoutez un service de traduction à votre compétence.
  2. Au début du flux que vous avez l'intention d'être le point de départ de la compétence, insérez un composant Detect Language (Détecter la langue).
  3. Dans le flux principal, ajoutez l'événement intégré Start Skill et mappez-le au flux qui contient le composant Detect Language.
  4. Dans la page Settings (Paramètres) de la compétence, sélectionnez l'onglet Configuration et définissez les propriétés Translate User Input Message (Traduire le message d'entrée utilisateur) et Translate Bot Response Message (Traduire le message de réponse du robot).
    • Réglez Traduire le message d'entrée d'utilisateur à Vrai pour traduire l'entrée d'utilisateur.
    • Si vous n'utilisez pas d'ensembles de ressources pour les langues cibles, réglez Message de réponse du robot de traduction à Vrai.
Traduction des aptitudes en mode de dialogue YAML

Pour les compétences conçues en mode de dialogue YAML, vous pouvez déterminer ce qu'il faut traduire un composant par composant à l'aide de la variable de contexte autotranslate ou des deux et de la propriété translate au niveau du composant.

  • La variable de contexte autotranslate s'applique globalement à toute la compétence. 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.

Pour autotranslate et translate, vous pouvez définir un seul booléen, ou spécifier des valeurs booléennes distinctes pour l'entrée et la sortie.

Exemples : Variable de contexte autotranslate

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

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

Et voici comment vous pouvez utiliser 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
Note

Vous n'avez pas à spécifier les valeurs autotranslation fausses. Par exemple, dans l'extrait de code précédent, vous n'avez pas besoin d'inclure la ligne :

        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 qui a été spécifié pour la compétence :

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

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

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate:       
        input: true
        output: false
Option d'inclusion pour la traduction

Pour les compétences conçues en mode de dialogue YAML, voici les étapes permettant de spécifier individuellement les composants à traduire :

  1. Le cas échéant, ajoutez un service de traduction à votre compétence.
  2. Assurez-vous que la variable de contexte autoTranslate n'est pas définie (ou est réglée à false).
  3. Au-dessus de l'état du composant System.Intent, ajoutez le composant System.DetectLanguage :
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Note

    La propriété useExistingProfileLanguageTag est utilisée lorsqu'une compétence fait partie d'un assistant numérique doté d'un service de traduction. Ceci permet à la compétence d'utiliser immédiatement la langue détectée par l'assistant numérique. Sinon, la compétence peut fournir un message ou une invite en anglais avant que la langue ne soit détectée (à nouveau). Si la compétence figure dans un assistant numérique ne permettant pas la traduction, la propriété est ignorée.
  4. Dans le composant System.Intent, réglez la propriété translate à true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Pour les autres composants d'entrée, réglez également la propriété translate à true, ou réglez l'attribut input de la propriété translate à true. Par exemple :
      askName:
        component: "System.Text"
        properties:   
          prompt: "${rb.askNamePrompt}"
          variable: "name"
          translate:       
            input: true
            output: false
Exemple : Compétence multilingue avec traduction automatique (option d'inclusion)
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:"
            ...
  ...  
Option d'exclusion pour la traduction

Pour les compétences conçues en mode de dialogue YAML, voici les étapes d'utilisation de la traduction automatique par défaut (et spécifiez individuellement les composants à ne pas traduire) :

  1. Le cas échéant, ajoutez un service de traduction à votre compétence.
  2. Ajoutez la variable autoTranslate: "map" au noeud context.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. Dans le noeud states, au-dessus du composant System.Intent, ajoutez un composant System.SetVariable. Ensuite, définissez la propriété variable afin qu'elle utilise la variable de contexte autotranslate et réglez l'attribut input (et, facultativement, output) de la propriété value à true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Note

    Si vous utilisez des ensembles de ressources, réglez la valeur output à false.
  4. Pour l'état suivant, ajoutez le composant System.DetectLanguage :
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Note

    La propriété useExistingProfileLanguageTag est utilisée lorsqu'une compétence fait partie d'un assistant numérique doté d'un service de traduction. Ceci permet à la compétence d'utiliser immédiatement la langue détectée par l'assistant numérique. Sinon, la compétence peut fournir un message ou une invite en anglais avant que la langue ne soit détectée (à nouveau). Si la compétence figure dans un assistant numérique ne permettant pas la traduction, la propriété est ignorée.
  5. Pour tous les composants à ne pas traduire, réglez la propriété translate à false, par exemple :
      done:
        component: "System.Output"
        properties:
          text: "${rb('OnTheWay','${size.value}','${type.value}')}"
          translate:       
            input: true
            output: false
        transitions:
          return: "done"
Exemple : Compétence multilingue avec traduction automatique pour l'entrée (option d'exclusion)

Dans cet exemple, la traduction automatique est configurée pour l'entrée, mais elle est désactivée pour la sortie (le texte de sortie peut donc être spécifié dans les ensembles 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: 
      ...
 

Manipuler l'entrée avant la traduction

Si vous voulez manipuler le texte d'entrée avant de l'envoyer au service de traduction, vous pouvez utiliser le composant Translate Input (Entrée de traduction) (mode de dialogue visuel) ou System.TranslateInput (mode de dialogue YAML). Par exemple, vous voulez traiter l'entrée utilisateur pour supprimer certaines données personnelles avant de l'envoyer au service de traduction.

Dans l'extrait de code YAML suivant, la variable sourceString contient le texte à traduire. (Ce texte, par exemple, a été recueilli par un autre composant.) Une fois le traitement par le composant System.TranslateInput terminé, 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 compétences utilisant la version 20.09 ou une version antérieure de la plate-forme et qui ont été configurées avec un service de traduction, Oracle Digital Assistant affecte automatiquement une langue prédominante en fonction de la langue des exemples d'énoncés.

Pour trouver la langue prédominante affectée à une compétence, cliquez sur l'icône Settings (Paramètres) (icône des paramètres) dans la barre de navigation gauche de la compétence, sélectionnez l'onglet General (Général) et vérifiez la valeur de la propriété Predominant Language (Langue prédominante).

Pour ces compétences, assurez-vous que les exemples d'énoncés, les entités et le texte des réponses de dialogue de vos intentions sont tous dans la langue prédominante.

Si vous créez la compétence pour prendre en charge plusieurs langues, la langue prédominante doit être l'anglais.

Pour les assistants numériques basés sur les versions 20.09 ou antérieures de la plate-forme, la langue prédominante est celle de la première compétence que vous ajoutez à l'assistant. Toutes les autres compétences que vous lui ajoutez doivent avoir la même langue prédominante.

Si la première compétence que vous ajoutez n'a pas de langue prédominante (car aucun service de traduction ne lui est associé), la langue prédominante de l'assistant numérique est l'anglais. Dans ce cas, vous pouvez ajouter des compétences dont la langue prédominante est l'anglais (ou dont la langue prédominante n'est pas définie).

Note

Pour les compétences et les assistants numériques basés sur les versions 20.12 ou supérieures de la plate-forme, aucune langue prédominante n'est définie. Au lieu de cela, vous spécifiez la langue principale lorsque vous créez la compétence ou l'assistant numérique.