Servicios de traducción en aptitudes

Para las aptitudes que tienen como destino idiomas distintos del inglés y que no utilizan el soporte de idioma nativo de Digital Assistant, debe configurar un servicio de traducción.

Para esas aptitudes, si un usuario introduce una solicitud o una respuesta en un idioma distinto al inglés, la aptitud utiliza el servicio de traducción para convertir la entrada al inglés. Tras efectuar la traducción, el motor de procesamiento de lenguaje natural (NLP) puede resolverla en una intención y parear las entidades. A continuación, la aptitud puede responder al usuario utilizando el servicio de traducción para traducir las etiquetas y las peticiones de datos o haciendo referencia a cadenas específicas del idioma de los grupos de recursos.

En el caso de las aptitudes que disponen de un corpus de entrenamiento en un idioma distinto del inglés, el servicio de traducción se utiliza también en la fase de diseño. Al entrenar una aptitud en un idioma distinto del inglés, se crean versiones en inglés de las expresiones de ejemplo y los valores de entidades personalizadas que se van a utilizar en el modelo de entrenamiento (si bien estas traducciones no se muestran en el diseñador de aptitudes).

Nota

Si desea agregar una aptitud basada en un servicio de traducción a un asistente digital, dicho asistente digital también debe utilizar un servicio de traducción.

Servicios de traducción soportados

Idioma de OCI

Oracle Cloud Infrastructure (OCI) proporciona su propio servicio de traducción denominado Idioma. Si utiliza este servicio como servicio de traducción en Oracle Digital Assistant, los mensajes de usuario no se exponen a un servicio de traducción de terceros.

Para utilizar OCI Language como servicio de traducción, debe suscribirse al servicio y crear permisos para que Digital Assistant pueda acceder a él. Consulte Políticas para OCI Language.

API Translation de Google

Para utilizar la API Translation de Google, debe generar la clave de API. Esta clave se crea desde la consola de GCP (API y servicios > Credenciales). Para obtener más información, consulte la documentación de Google Cloud Platform.

Microsoft Translator

Si desea utilizar Microsoft Translator como servicio de traducción en Oracle Digital Assistant, debe suscribirse a Translator o al servicio múltiple de Cognitive Services y obtener una clave secreta. Consulte https://docs.microsoft.com/en-gb/azure/cognitive-services/translator/reference/v3-0-reference.

Estos son los puntos más importante que debe saber:

  • Debe utilizar la región Global y su URL correspondiente (https://api.cognitive.microsofttranslator.com/).
  • Debe obtener una clave secreta para la autenticación. Puede obtenerla en la sección Keys and Endpoints de Azure Portal.

Registro de un servicio de traducción en Oracle Digital Assistant

  1. Haga clic en icono para abrir el menú lateral para abrir el menú lateral y seleccione Configuración > Servicio de traducción.

  2. Haga clic en Agregar servicio.

  3. En el cuadro de diálogo Servicios de traducción, introduzca la URL y la clave de autorización (para el servicio Microsoft Translator) o el token de autorización (para la API de Google Translation).

    1. URL
    2. Clave de autorización (para el servicio Microsoft Translator) o token de autorización (para la API de Google Translation).

Agregar un servicio de traducción a una aptitud

  1. Si todavía no lo ha hecho, registre un servicio de traducción en Oracle Digital Assistant.
  2. Haga clic en icono para abrir el menú lateral para abrir el menú lateral, seleccione Desarrollo > Aptitudes y elija la aptitud.
  3. En la barra de navegación izquierda de la aptitud, haga clic en el icono Configuración (icono Configuración) y seleccione el separador General.
  4. Vaya al menú desplegable Servicio de traducción y seleccione el servicio de traducción.

Enfoques basados en servicios de traducción

Al utilizar un servicio de traducción para soportar aptitudes que conversen en idiomas distintos del inglés, puede utilizar uno de estos métodos de desarrollo:

  • Cree aptitudes en un solo idioma distinto del inglés en las que:
    • Prepare el corpus de entrenamiento en el idioma de destino de la aptitud.

    Cuando se desarrollan asistentes digitales en un solo idioma distinto al inglés, estos se rellenan con aptitudes únicamente en ese idioma (si todas las aptitudes de un asistente digital determinado tienen el mismo idioma predominante).

  • Cree aptitudes multilingües en las que:
    • Prepare el corpus de entrenamiento en inglés.
    • Configure el flujo de diálogo de la aptitud para gestionar la traducción de las entradas del usuario y las respuestas de la aptitud.
    • Como paso opcional (aunque recomendado), puede crear grupos de recursos para uno o más idiomas para las etiquetas, peticiones de datos y mensajes de la aptitud. Esto le permite controlar el texto de las respuestas de la aptitud.

En ambos casos, Digital Assistant utiliza el servicio de traducción para traducir la entrada del usuario al idioma base. Para las respuestas, utiliza grupos de recursos (si se proporcionan en la aptitud) o el servicio de traducción para traducir la respuesta de la aptitud al idioma del usuario.

Aptitud en un solo idioma que no sea inglés mediante un servicio de traducción

Para desarrollar una aptitud para un idioma único distinto del inglés que se base en un servicio de traducción, siga estos pasos:

  1. Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.

  2. Cree las expresiones para la aptitud en el idioma de destino de la aptitud (no en inglés):
    1. Haga clic en icono para abrir el menú lateral para abrir el menú lateral, seleccione Desarrollo > Aptitudes y abra la aptitud.
    2. En la navegación izquierda de la aptitud, haga clic en Imagen del icono Intención.
    3. Seleccione una intención.
    4. En el campo de texto Ejemplos, escriba la expresión y pulse Intro.
    5. Repita los dos pasos anteriores para cada intención.
  3. Para cualquier entidad personalizada de la aptitud, asegúrese de que los valores estén en el idioma principal de la aptitud.

    Puede agregar y editar entidades personalizadas haciendo clic en Imagen del icono Entidades, en la navegación izquierda de la aptitud.

    Si no proporciona valores de entidad personalizados en el idioma principal de la aptitud, esta no podrá procesar correctamente las entradas de usuario que contengan valores que tengan que parearse mediante una entidad personalizada.

  4. En la aptitud, actualice todos los mensajes de configuración y las solicitudes para utilizar el idioma principal:

    Para acceder a estos mensajes y peticiones de datos:

    • En la navegación izquierda de la aptitud, haga clic en icono Configuración.

    Los mensajes y peticiones de datos se encuentran en los separadores Configuración y Asistente digital.

Hay otros aspectos que se deben tener en cuenta:
  • No se pueden traducir los nombres de las entidades incorporadas.

  • Cuando se configura una aptitud de este modo, el marco de procesamiento de idioma detecta una entrada que no está en inglés y la traduce al inglés (el idioma del modelo de entrenamiento) en segundo plano. Después de evaluar la entrada, determina la respuesta adecuada y la traduce al idioma de destino.

    Esto puede afectar a los costos de la traducción, ya que requiere más llamadas al servicio de traducción que una aptitud en la que el corpus de entrenamiento ya está en inglés.

Aptitudes multilingües con traducción automática

Para las aptitudes que utilizan un servicio de traducción, puede permitir que la aptitud detecte automáticamente el idioma del usuario y comunicarse en ese idioma.

Para ello, debe actualizar el flujo de diálogo para:

  • Detecte el idioma del usuario.
  • Traduzca la entrada del usuario de manera que se pueda resolver.
Traducción para aptitudes en modo de diálogo visual

Para las aptitudes multilingües diseñadas en modo de diálogo visual, estos son los pasos para configurar la traducción:

  1. Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
  2. Al principio del flujo que desea que sea el punto de partida de la aptitud, inserte un componente Detectar idioma.
  3. En el flujo principal, agregue el evento incorporado Iniciar aptitud y asígnelo al flujo que contiene el componente Detectar idioma.
  4. En la página Configuración de la aptitud, seleccione el separador Configuración y defina las propiedades Traducir mensaje de entrada de usuario y Traducir mensaje de respuesta de bot.
    • Defina Convertir mensaje de entrada de usuario en verdadero para convertir la entrada de usuario.
    • Si no utiliza grupos de recursos para los idiomas de destino, defina Traducir mensaje de respuesta de bot en true.
Traducción para aptitudes en modo de diálogo YAML

Para las aptitudes diseñadas en el modo de diálogo YAML, puede determinar qué se debe traducir componente por componente mediante la variable de contexto autotranslate o ambas, y la propiedad translate de nivel de componente.

  • La variable de contexto autotranslate se aplica globalmente a toda la aptitud. Si no especifica autotranslate, el valor es false.
  • La propiedad translate se puede definir individualmente para cada componente. Cuando la propiedad translate se define para un componente, sustituye el valor autotranslate para ese componente.

Para autotranslate y translate, puede definir el valor como un único valor booleano o puede especificar valores booleanos independientes para entrada y salida.

Ejemplos: variable de contexto autotranslate

A continuación, se muestra un ejemplo del uso de autotranslate para activar la traducción automática tanto para la entrada como para la salida:

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

Y aquí se muestra cómo podría utilizar autotranslate para traducir la entrada por defecto, pero no la salida:

  setAutoTranslate:
    component: "System.SetVariable"
    properties:
      variable: "autoTranslate"
      value:
        input: true
        output: false
Nota

No tiene que especificar valores autotranslation que sean falsos. Por ejemplo, en el fragmento anterior, no es necesario incluir la línea:

        output: false
Ejemplos: propiedad translate

A continuación, se muestra un ejemplo de definición de la propiedad translate para enviar tanto la entrada como la salida del componente al servicio de traducción que se ha especificado para la aptitud:

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

A continuación se muestra un ejemplo de envío de la entrada del componente al servicio de traducción:

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate:       
        input: true
        output: false
Traducción inclusiva

Para las habilidades diseñadas en el modo de diálogo YAML, estos son los pasos si desea especificar individualmente qué componentes traducir:

  1. Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
  2. Asegúrese de que la variable de contexto autoTranslate no esté definida (o esté definida en false).
  3. Encima del estado del componente System.Intent, agregue el componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Nota

    La propiedad useExistingProfileLanguageTag se utiliza cuando una aptitud forma parte de un asistente digital que tiene un servicio de traducción. Esto permite a la aptitud utilizar el idioma detectado por el asistente digital inmediatamente. De lo contrario, la aptitud puede proporcionar un mensaje o una petición de datos en inglés antes de que se detecte (o se vuelva a detectar) el idioma. Si la aptitud no está en un asistente digital con la función de traducción activada, se ignora la propiedad.
  4. En el componente System.Intent, defina la propiedad translate en true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Para otros componentes de entrada, defina también la propiedad translate en true o defina el atributo input de la propiedad translate en true, por ejemplo:
      askName:
        component: "System.Text"
        properties:   
          prompt: "${rb.askNamePrompt}"
          variable: "name"
          translate:       
            input: true
            output: false
Ejemplo: aptitud multilingüe con traducción automática (inclusiva)
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:"
            ...
  ...  
Traducción exclusiva

Para las aptitudes diseñadas en el modo de diálogo YAML, estos son los pasos para utilizar la traducción automática por defecto (y especificar de forma individual los componentes que no se van a traducir):

  1. Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
  2. Agregue autoTranslate: "map" como variable al nodo context.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. En el nodo states, encima del componente System.Intent, agregue un componente System.SetVariable. A continuación, defina la propiedad variable para utilizar la variable de contexto autoTranslate y defina el atributo input (y, opcionalmente, output) de la propiedad value en true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Nota

    Si está utilizando grupos de recursos, debe definir el valor output en false.
  4. Para el siguiente estado, agregue el componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Nota

    La propiedad useExistingProfileLanguageTag se utiliza cuando una aptitud forma parte de un asistente digital que tiene un servicio de traducción. Esto permite a la aptitud utilizar el idioma detectado por el asistente digital inmediatamente. De lo contrario, la aptitud puede proporcionar un mensaje o una petición de datos en inglés antes de que se detecte (o se vuelva a detectar) el idioma. Si la aptitud no está en un asistente digital con la función de traducción activada, se ignora la propiedad.
  5. Para los componentes que no quiera traducir de forma automática, defina la propiedad translate en false. Por ejemplo:
      done:
        component: "System.Output"
        properties:
          text: "${rb('OnTheWay','${size.value}','${type.value}')}"
          translate:       
            input: true
            output: false
        transitions:
          return: "done"
Ejemplo: aptitud multilingüe con traducción automática para la entrada (exclusiva)

En este ejemplo, la traducción automática está configurada para la entrada, pero está desactivada para la salida (para que el texto de salida se pueda especificar en los grupos 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: 
      ...
 

Manipulación de las entradas antes de la traducción

Si desea manipular el texto de entrada antes de enviarlo al servicio de traducción, puede utilizar el componente Traducir entrada (modo de diálogo visual) o System.TranslateInput (modo de diálogo YAML). Por ejemplo, puede que quiera procesar la entrada de usuario para eliminar datos personales antes de enviarla al servicio de traducción.

En el siguiente fragmento de YAML, la variable sourceString incluye el texto que se debe traducir. (Este texto, por ejemplo, puede haber sido recopilado por otro componente). Una vez que System.TranslateInput termina su procesamiento, la traducción al inglés se almacena en la variable translatedString.
context:
  variables:
    autoTranslate: "boolean" 
    translatedString: "string"
    sourceString: "string"    
   ...
states:
   ...
  translateInputString:
    component: "System.TranslateInput"
    properties:
      source: "sourceString"
      variable: "translatedString"
    transitions:
      ...

Idioma predominante

Para las aptitudes configuradas para utilizar la Versión 20.09 o una versión anterior de la plataforma y que se han configurado con un servicio de traducción, Oracle Digital Assistant asigna automáticamente un idioma predominante para esa aptitud, en función del idioma de las expresiones de ejemplo de la aptitud.

Para ver qué idioma predominante se ha asignado a una aptitud, pulse el icono Configuración(icono Configuración) en la barra de navegación izquierda de la aptitud, seleccione el separador General y compruebe el valor de la propiedad Idioma predominante.

En el caso de esas aptitudes, asegúrese de que todas las expresiones de ejemplo de las intenciones, las entidades y el texto de respuesta del diálogo estén en el idioma predominante.

Si está diseñando la aptitud para que admita varios idiomas, el idioma predominante debe ser el inglés.

Para los asistentes digitales basados en la versión 20.09 o anteriores de la plataforma, el idioma predominante lo determina el idioma predominante de la primera aptitud que se agrega al asistente digital. Cualquier otra aptitud que se agregue al asistente digital deberá tener el mismo idioma predominante.

Si la primera aptitud que se agrega no tiene un idioma predominante (porque no se ha especificado ningún servicio de traducción en la aptitud), el idioma predominante del asistente digital se establecerá en inglés. En este caso, puede agregar aptitudes que tengan el inglés como idioma predominante (o que no tengan ningún idioma predominante establecido).

Nota

Para las aptitudes y los asistentes digitales basados en la versión 20.12 o superior de la plataforma, no se define un idioma predominante. En su lugar, especifique el idioma principal al crear la aptitud o el asistente digital.