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).
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
-
Cliquez sur
pour ouvrir le menu latéral et sélectionnez Paramètres > Service de traduction.
-
Cliquez sur + Service.
-
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).
- URL
- 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
- Si vous ne l'avez pas déjà fait, inscrivez un service de traduction auprès d'Oracle Digital Assistant.
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis sélectionnez votre brique.
- Dans la barre de navigation de gauche de la brique, cliquez sur l'icône Paramètres (
) et sélectionnez l'onglet Général.
- 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 :
-
Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
- Créez des variations pour votre brique dans la langue cible de celle-ci (au lieu de l'anglais) :
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Développement > Briques, puis ouvrez votre brique.
- Dans la navigation de gauche de la brique, cliquez sur
- Sélectionnez une intention.
- Dans le champ de texte Exemples, saisissez la variation, puis appuyez sur Entrée.
- Répétez les deux sous-étapes précédentes pour chaque intention.
- Cliquez sur
-
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
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.
- 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
.
Les messages et les invites se trouvent dans les onglets Configuration et Assistant numérique.
- Dans la barre de navigation de gauche de la brique, cliquez sur
-
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 :
- Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
- 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.
- 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.
- 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 pasautotranslate
, sa valeur estfalse
. - 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 valeurautotranslate
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
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 :
- Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
- Assurez-vous que la variable de contexte
autoTranslate
n'est pas définie (ou est définie surfalse
). - 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. - Dans le composant System.Intent, définissez la propriété translate sur
true
.intent: component: "System.Intent" properties: variable: "iResult" translate: true
- Pour les autres composants d'entrée, définissez également la propriété translate sur
true
, ou définissez l'attributinput
de la propriététranslate
surtrue
. 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) :
- Si vous ne l'avez pas encore fait, ajoutez un service de traduction à votre brique.
- Ajoutez
autoTranslate: "map"
en tant que variable au noeudcontext
.context: variables: ... autoTranslate: "map"
- Dans le noeud
states
, au-dessus du composantSystem.Intent
, ajoutez un composantSystem.SetVariable
. Définissez ensuite la propriétévariable
de façon à utiliser la variable de contexteautoTranslate
, et définissez l'attributinput
(et éventuellementoutput
) de la propriétévalue
surtrue
.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 valeuroutput
surfalse
. - 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. - 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.
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 () 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.
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.