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).
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 pour que Digital Assistant puisse 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
-
Cliquez sur
pour ouvrir le menu latéral et sélectionnez Settings > Translation Service (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 jeton d'autorisation (pour l'API de traduction Google).
Ajouter un service de traduction à votre compétence
- Si ce n'est pas encore fait, configurez un service de traduction pour votre instance de Digital Assistant. Procédez de la façon suivante :
- Cliquez sur
pour ouvrir le menu latéral et sélectionnez Settings > Translation Service (Paramètres > Service de traduction).
- Cliquez sur + Service.
- Sélection du service et entrée des données de configuration requises.
Si vous sélectionnez OCI (pour le service de langue pour OCI), vous n'entrez pas d'informations directement dans cette boîte de dialogue, mais vous devez configurer des politiques OCI pour utiliser le service.
Voir Services de traduction pris en charge pour plus d'informations sur ce que vous devez faire pour configurer chaque service.
Consultez la documentation de Microsoft Translator et de l'API de traduction Google pour voir comment obtenir l'URL et le jeton d'accès.Note
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. - Cliquez sur
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
- Dans la barre de navigation gauche de la compétence, cliquez sur l'icône Settings (Paramètres) (
) et sélectionnez l'onglet General (Général).
- 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 :
-
Le cas échéant, ajoutez un service de traduction à votre compétence.
- Créez les énoncés de votre compétence dans la langue cible (au lieu de l'anglais) :
- Cliquez sur
pour ouvrir le menu latéral, sélectionnez Development > Skills (Développement > Compétences) et ouvrez votre compétence.
- Dans la barre de navigation gauche de la compétence, cliquez sur
- Sélectionnez une intention.
- Dans le champ de texte Examples (Exemples), tapez l'énoncé et appuyez sur Entrée.
- Répétez les deux sous-étapes précédentes pour chaque intention.
- Cliquez sur
-
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
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.
- 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
.
Les messages et les invites se trouvent dans les onglets Configuration et Digital Assistant.
- Dans la barre de navigation gauche de la compétence, cliquez sur
-
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 :
- Le cas échéant, ajoutez un service de traduction à votre compétence.
- 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).
- Dans le flux principal, ajoutez l'événement intégré Start Skill et mappez-le au flux qui contient le composant Detect Language.
- 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 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
.
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
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 :
- Le cas échéant, ajoutez un service de traduction à votre compétence.
- Assurez-vous que la variable de contexte
autoTranslate
n'est pas définie (ou est réglée àfalse
). - 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. - Dans le composant System.Intent, réglez la propriété translate à
true
.intent: component: "System.Intent" properties: variable: "iResult" translate: true
- Pour les autres composants d'entrée, réglez également la propriété translate à
true
, ou réglez l'attributinput
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) :
- Le cas échéant, ajoutez un service de traduction à votre compétence.
- Ajoutez la variable
autoTranslate: "map"
au noeudcontext
.context: variables: ... autoTranslate: "map"
- Dans le noeud
states
, au-dessus du composantSystem.Intent
, ajoutez un composantSystem.SetVariable
. Ensuite, définissez la propriétévariable
afin qu'elle utilise la variable de contexteautotranslate
et réglez l'attributinput
(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 valeuroutput
àfalse
. - 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. - 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.
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) () 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).
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.