Serviços de Tradução em Habilidades
Para habilidades que direcionam idiomas diferentes do inglês e que não usam o suporte ao idioma nativo do Digital Assistant, configure um serviço de tradução.
Para essas habilidades, quando um usuário digita uma solicitação ou resposta que não seja em inglês, a habilidade usa o serviço de tradução para converter essa entrada em inglês. Depois de traduzida, o mecanismo NLP (Natural Language Processing) pode resolvê-la como uma intenção e corresponder às entidades. A habilidade então poderá responder ao usuário utilizando o serviço de tradução para traduzir os labels e prompts ou referenciando as strings específicas do idioma nos pacotes de recursos.
Para habilidades com um corpus de treinamento em um idioma que não seja o inglês, o serviço de tradução também é usado durante o design time. Quando você treina uma habilidade que não está em inglês, ela cria versões em inglês das declarações de exemplo e dos valores de entidade personalizados a serem usados no modelo de treinamento (embora essas traduções não sejam mostradas no designer de habilidade).
Se você pretende adicionar uma habilidade baseada em um serviço de tradução a um assistente digital, esse assistente digital também deverá usar um serviço de tradução.
Serviços de Tradução suportados
Idioma do OCI
O OCI (Oracle Cloud Infrastructure) fornece seu próprio serviço de tradução chamado Linguagem. Se você usar esse serviço como seu serviço de tradução no Oracle Digital Assistant, as mensagens do usuário não serão expostas a um serviço de tradução de terceiros.
Para usar o OCI Language como serviço de tradução, você precisa se inscrever no serviço e criar permissões para que o Digital Assistant o acesse. Consulte Políticas para o OCI Language.
API do Google Translation
Para usar a API do Google Translation, você precisa gerar a Chave da API. Você cria essa chave na Console do GCP ( APIs e serviços > Credenciais). Para saber mais, consulte a Documentação do Google Cloud Platform.
Microsoft Translator
Se quiser usar o Microsoft Translator como seu serviço de tradução no Oracle Digital Assistant, você precisará se inscrever no Tradutor ou no multisserviço de Serviços Cognitivos e obter uma chave secreta. Consulte https://docs.microsoft.com/en-gb/azure/cognitive-services/translator/reference/v3-0-reference.
Estas são as principais coisas que você precisa saber:
- Você precisa usar a região Global e seu URL correspondente (
https://api.cognitive.microsofttranslator.com/
). - Você precisa obter uma chave secreta para autenticação. Você pode obtê-lo na seção Chaves e Pontos de Extremidade do Portal do Azure.
Registrar um Serviço de Tradução no Oracle Digital Assistant
-
Clique em
para abrir o menu lateral e selecione Definições > Serviço de Tradução.
-
Clique em + Serviço.
-
Na caixa de diálogo Serviços de Tradução, informe o URL e a chave de autorização (do serviço Microsoft Translator) ou o token de autorização (da API do Google Translation).
- URL
- Chave de autorização (do serviço Microsoft Translator) ou token de autorização (da API do Google Translation).
Adicionar um Serviço de Tradução à sua Habilidade
- Se você ainda não tiver feito isso, configure um serviço de tradução para sua instância do Assistente Digital:
- Clicando em
para abrir o menu lateral e selecionando Definições > Serviço de Tradução.
- Clicando em + Serviço.
- Selecionar o serviço e inserir as informações de configuração necessárias.
Se você selecionar o OCI (para o serviço OCI Language), não inserirá informações diretamente nesta caixa de diálogo, mas precisará configurar políticas do OCI para usar o serviço.
Consulte Serviços de Tradução Suportados para obter informações sobre o que você precisa fazer para configurar cada serviço.
Consulte a documentação do Microsoft Translator e da API do Google Translation para saber como obter o URL e o token de acesso.Observação
Para usar a API do Google Translation, gere a Chave de API. Você cria essa chave na Console do GCP ( APIs e serviços > Credenciais). Para saber mais, consulte a Documentação do Google Cloud Platform. - Clicando em
- Clique em
para abrir o menu lateral, selecione Desenvolvimento > Habilidades e selecione sua habilidade.
- Na barra de navegação esquerda da habilidade, clique no ícone Definições (
) e selecione a guia Geral.
- Navegue até a lista drop-down Serviço de Tradução e selecione o serviço de tradução.
Abordagens Baseadas em Serviços de Tradução
Quando você usar um serviço de tradução para suportar as habilidades que conversam em idiomas que não são o inglês, poderá usar uma destas abordagens de desenvolvimento:
-
Crie habilidades de idioma único que não seja o inglês em que você:
- Prepara o corpus de treinamento no idioma de destino da habilidade.
Ao desenvolver assistentes digitais em um único idioma que não sejam em inglês, preencha-os com habilidades em um único idioma (em que todas as habilidades em um determinado assistente digital têm o mesmo idioma predominante).
-
Crie habilidades de vários idiomas em que você:
- Prepara o corpus de treinamento em inglês.
- Configure o fluxo de caixas de diálogo da habilidade para gerenciar a tradução da entrada do usuário e das respostas dela.
- Como opção (mas preferencialmente), crie pacotes de recursos para um ou mais idiomas para os labels, os prompts e as mensagens da habilidade. Isso é desejável porque permite que você controle a elaboração das respostas da habilidade.
Em ambos os casos, o Digital Assistant usa o serviço de tradução para traduzir a entrada do usuário para o idioma base. Para respostas, ele usa pacotes de recursos (se fornecidos na habilidade) ou o serviço de tradução para traduzir a resposta da habilidade de volta para o idioma do usuário.
Habilidade de Idioma Único Não Inglês Usando um Serviço de Tradução
Para desenvolver uma habilidade em um único idioma que não seja o inglês que dependa de um serviço de tradução, você:
-
Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
- Crie as declarações para sua habilidade no idioma de destino da habilidade (em vez de em inglês):
- Clique em
para abrir o menu lateral, selecione Desenvolvimento > Habilidades e abra sua habilidade.
- Na navegação esquerda da habilidade, clique em
- Selecione uma intenção.
- No campo de texto Exemplos, digite a descrição e pressione Enter.
- Repita as duas subetapas anteriores para cada intenção.
- Clique em
-
Para qualquer entidade personalizada da sua habilidade, certifique-se de que os valores estejam no idioma principal da habilidade.
Você pode adicionar e editar entidades personalizadas clicando em
na navegação esquerda da habilidade.
Se você não fornecer valores de entidade personalizada no idioma principal da habilidade, a habilidade não poderá processar adequadamente a entrada do usuário que contém qualquer valor que precise ser correspondido por uma entidade personalizada.
- Na habilidade, atualize todas as mensagens de configuração e prompts para usar o idioma principal:
Para acessar essas mensagens e prompts:
- Na navegação esquerda da habilidade, clique em
As mensagens e os prompts estão localizados nas guias Configuração e Assistente Digital.
- Na navegação esquerda da habilidade, clique em
-
Você não pode traduzir os nomes das entidades incorporadas.
-
Quando você configura sua habilidade dessa forma, o framework de processamento do idioma detecta uma entrada que não está em inglês e a traduz para o inglês (o idioma do modelo de treinamento) nos bastidores. Depois de avaliar a entrada, ele determina a resposta apropriada e a traduz novamente para o idioma de destino.
Isso pode impactar os custos de tradução porque exige mais chamadas para o serviço de tradução do que uma habilidade em que o corpus de treinamento já está em inglês.
Habilidades de Vários Idiomas com Tradução Automática
Para habilidades que usam um serviço de tradução, você pode ativar a habilidade para detectar automaticamente o idioma do usuário e se comunicar nesse idioma.
Para configurar isso, atualize o fluxo de caixas de diálogo para:
- Detectar o idioma do usuário.
- Traduzir a entrada do usuário para que ela possa ser resolvida.
Tradução de Habilidades no Modo de Diálogo Visual
Para habilidades em vários idiomas criadas no modo de diálogo Visual, veja a seguir as etapas para configurar a tradução:
- Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
- No início do fluxo que você pretende ser o ponto inicial da habilidade, insira um componente Detectar Idioma.
- No Fluxo Principal, adicione o evento incorporado Iniciar Habilidade e mapeie-o para o fluxo que contém o componente Detectar Idioma.
- Na página Definições da habilidade, selecione a guia Configuração e defina as propriedades Traduzir Mensagem de Entrada do Usuário e Traduzir Mensagem de Resposta do Bot.
- Defina Traduzir Mensagem de Entrada do Usuário como verdadeiro para traduzir a entrada do usuário.
- Se você não estiver usando pacotes de recursos para os idiomas de destino, defina Traduzir Mensagem de Resposta do Bot como verdadeiro.
Tradução para Habilidades no Modo de Diálogo YAML
Para habilidades projetadas no modo de caixa de diálogo YAML, você pode determinar o que traduziu o componente por componente usando uma ou ambas as variáveis de contexto autotranslate
e a propriedade translate
no nível do componente.
- A variável de contexto
autotranslate
se aplica globalmente a toda a habilidade. Se você não especificarautotranslate
, o valor seráfalse
. - A propriedade
translate
pode ser definida individualmente para cada componente. Quando a propriedadetranslate
é definida para um componente, ela substitui o valorautotranslate
desse componente.
Para autotranslate
e translate
, você pode definir o valor como booliano único ou especificar valores boolianos distintos para entrada e saída.
Exemplos: Variável de Contexto autotranslate
Veja um exemplo de como usar autotranslate
para ativar a tradução automática para entrada e saída:
setAutoTranslate:
component: "System.SetVariable"
properties:
variable: "autoTranslate"
value: true
E veja aqui como você poderia usar autotranslate
para traduzir a entrada por padrão, mas não a saída:
setAutoTranslate:
component: "System.SetVariable"
properties:
variable: "autoTranslate"
value:
input: true
output: false
Não é necessário especificar valores
autotranslation
falsos. Por exemplo, no trecho de código anterior, você não precisa incluir a linha:
output: false
Exemplos: Propriedade translate
Veja um exemplo de como definir a propriedade translate
para enviar a entrada e a saída do componente ao serviço de tradução que foi especificado para a habilidade:
askName:
component: "System.Text"
properties:
prompt: "${rb.askNamePrompt}"
variable: "name"
translate: true
E aqui está um exemplo de envio somente da entrada do componente para o serviço de tradução:
askName:
component: "System.Text"
properties:
prompt: "${rb.askNamePrompt}"
variable: "name"
translate:
input: true
output: false
Aceitar Tradução
Para habilidades projetadas no modo de diálogo YAML, aqui estão as etapas se você quiser especificar individualmente quais componentes traduzir:
- Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
- Certifique-se de que a variável de contexto
autoTranslate
não seja definida (ou seja definida comofalse
). - Acima do estado para o componente
System.Intent
, adicione o componente System.DetectLanguage:detect: component: "System.DetectLanguage" properties: useExistingProfileLanguageTag: true transitions: ...
Observação
A propriedadeuseExistingProfileLanguageTag
é usada quando uma habilidade faz parte de um assistente digital que tem um serviço de tradução. Isso permite que a habilidade use o idioma detectado pelo assistente digital imediatamente. Caso contrário, a habilidade poderá fornecer uma mensagem ou prompt em inglês antes que o idioma seja detectado novamente. Se a habilidade não estiver em um assistente digital habilitado para tradução, a propriedade será ignorada. - No componente System.Intent, defina a propriedade translate como
true
.intent: component: "System.Intent" properties: variable: "iResult" translate: true
- Para outros componentes de entrada, defina também a propriedade translate property como
true
ou defina o atributoinput
da propriedadetranslate
comotrue
, por exemplo:askName: component: "System.Text" properties: prompt: "${rb.askNamePrompt}" variable: "name" translate: input: true output: false
Exemplo: Habilidade de Vários Idiomas com Tradução Automática (Aceitar)
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:"
...
...
Recusar Tradução
Para habilidades projetadas no modo de diálogo YAML, aqui estão as etapas para usar a tradução automática por padrão (e especificar individualmente componentes para não traduzir):
- Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
- Adicione
autoTranslate: "map"
como variável ao nócontext
.context: variables: ... autoTranslate: "map"
- No nó
states
, acima do componenteSystem.Intent
, adicione um componenteSystem.SetVariable
. Em seguida, defina a propriedadevariable
para usar a variável de contextoautoTranslate
e defina o atributoinput
(e, opcionalmente,output
) da propriedadevalue
comotrue
.setAutoTranslate: component: "System.SetVariable" properties: variable: "autoTranslate" value: input: true output: true transitions: ...
Observação
Se você estiver usando pacotes de recursos, defina o valoroutput
comofalse
. - Para o próximo estado, adicione o componente System.DetectLanguage:
detect: component: "System.DetectLanguage" properties: useExistingProfileLanguageTag: true transitions: ...
Observação
A propriedadeuseExistingProfileLanguageTag
é usada quando uma habilidade faz parte de um assistente digital que tem um serviço de tradução. Isso permite que a habilidade use o idioma detectado pelo assistente digital imediatamente. Caso contrário, a habilidade poderá fornecer uma mensagem ou prompt em inglês antes que o idioma seja detectado novamente. Se a habilidade não estiver em um assistente digital habilitado para tradução, a propriedade será ignorada. - Para qualquer componente que você não queira traduzir automaticamente, defina a propriedade translate como
false
, por exemplo:done: component: "System.Output" properties: text: "${rb('OnTheWay','${size.value}','${type.value}')}" translate: input: true output: false transitions: return: "done"
Exemplo: Habilidade de Vários Idiomas com Tradução Automática para Entrada (Recusar)
Neste exemplo, a tradução automática é configurada para entrada, mas é desativada para saída (para que o texto de saída possa ser especificado em pacotes de recursos).
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:
...
Manipular Entrada Antes da Tradução
Se você quiser manipular o texto da entrada antes de enviá-la ao serviço de tradução, poderá usar o componente Traduzir Entrada (modo de caixa de diálogo Visual) ou System.TranslateInput (modo de caixa de diálogo YAML). Por exemplo, talvez você queira processar a entrada do usuário para remover alguns dados pessoais antes de enviá-la ao serviço de tradução.
sourceString
contém o texto a ser traduzido. (Este texto, por exemplo, pode ter sido reunido por outro componente.) Depois que o componente System.TranslateInput
conclui seu processamento, a tradução em inglês é armazenada na variável translatedString
.context:
variables:
autoTranslate: "boolean"
translatedString: "string"
sourceString: "string"
...
states:
...
translateInputString:
component: "System.TranslateInput"
properties:
source: "sourceString"
variable: "translatedString"
transitions:
...
Idioma Predominante
Para habilidades que você configura para usar a Plataforma Versão 20.09 ou anterior e que foram configuradas com um serviço de tradução, o Oracle Digital Assistant designa automaticamente um idioma predominante a essa habilidade, com base no idioma das declarações de exemplo da habilidade.
Você descobre qual idioma predominante foi designado a uma habilidade clicando no ícone Definições () na barra de navegação esquerda da habilidade, selecionando a guia Geral e verificando o valor da propriedade Idioma Predominante.
Para essas habilidades, verifique se todas as declarações, entidades e texto de resposta da caixa de diálogo de exemplo da sua intenção estão no idioma predominante.
Se você estiver projetando a habilidade para suportar vários idiomas, o idioma predominante deverá ser o inglês.
Para assistentes digitais baseados na Plataforma Versão 20.09 ou anterior, o idioma predominante é determinado pelo idioma predominante da primeira habilidade adicionada ao assistente digital. Qualquer outra habilidade adicionada ao assistente digital deve ter o mesmo idioma predominante.
Se a primeira habilidade adicionada não tiver idioma predominante (porque nenhum serviço de tradução foi especificado na habilidade), o idioma predominante do assistente digital será definido como inglês. Nesse caso, você poderá adicionar habilidades que tenham o inglês como idioma predominante (ou que não tenham idioma predominante definido).
Para habilidades e assistentes digitais baseados na Plataforma Versão 20.12 ou superior, um idioma predominante não é definido. Em vez disso, você especifica o idioma principal ao criar a habilidade ou o assistente digital.