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).

Observação

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

  1. Clique em ícone para abrir o menu lateral para abrir o menu lateral e selecione Definições > Serviço de Tradução.

  2. Clique em + Serviço.

  3. 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).

    1. URL
    2. 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

  1. Se você ainda não tiver feito isso, configure um serviço de tradução para sua instância do Assistente Digital:
    1. Clicando em ícone para abrir o menu lateral para abrir o menu lateral e selecionando Definições > Serviço de Tradução.
    2. Clicando em + Serviço.
    3. 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.
  2. Clique em ícone para abrir o menu lateral para abrir o menu lateral, selecione Desenvolvimento > Habilidades e selecione sua habilidade.
  3. Na barra de navegação esquerda da habilidade, clique no ícone Definições (o ícone Definições) e selecione a guia Geral.
  4. 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ê:

  1. Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.

  2. Crie as declarações para sua habilidade no idioma de destino da habilidade (em vez de em inglês):
    1. Clique em ícone para abrir o menu lateral para abrir o menu lateral, selecione Desenvolvimento > Habilidades e abra sua habilidade.
    2. Na navegação esquerda da habilidade, clique em Esta é uma imagem do ícone Intenção.
    3. Selecione uma intenção.
    4. No campo de texto Exemplos, digite a descrição e pressione Enter.
    5. Repita as duas subetapas anteriores para cada intenção.
  3. 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 Uma imagem do ícone Entidades 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.

  4. 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 o ícone Definições

    As mensagens e os prompts estão localizados nas guias Configuração e Assistente Digital.

Há algumas outras questões a serem consideradas:
  • 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:

  1. Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
  2. No início do fluxo que você pretende ser o ponto inicial da habilidade, insira um componente Detectar Idioma.
  3. No Fluxo Principal, adicione o evento incorporado Iniciar Habilidade e mapeie-o para o fluxo que contém o componente Detectar Idioma.
  4. 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 especificar autotranslate, o valor será false.
  • A propriedade translate pode ser definida individualmente para cada componente. Quando a propriedade translate é definida para um componente, ela substitui o valor autotranslate 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
Observação

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:

  1. Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
  2. Certifique-se de que a variável de contexto autoTranslate não seja definida (ou seja definida como false).
  3. Acima do estado para o componente System.Intent, adicione o componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Observação

    A propriedade useExistingProfileLanguageTag é 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.
  4. No componente System.Intent, defina a propriedade translate como true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Para outros componentes de entrada, defina também a propriedade translate property como true ou defina o atributo input da propriedade translate como true, 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):

  1. Se você não tiver feito isso ainda, adicione um serviço de tradução à sua habilidade.
  2. Adicione autoTranslate: "map" como variável ao nó context.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. No nó states, acima do componente System.Intent, adicione um componente System.SetVariable. Em seguida, defina a propriedade variable para usar a variável de contexto autoTranslate e defina o atributo input (e, opcionalmente, output) da propriedade value como true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Observação

    Se você estiver usando pacotes de recursos, defina o valor output como false.
  4. Para o próximo estado, adicione o componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Observação

    A propriedade useExistingProfileLanguageTag é 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.
  5. 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.

No snippet YAML a seguir, a variável 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 (o í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).

Observação

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.