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).
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
-
Haga clic en
para abrir el menú lateral y seleccione Configuración > Servicio de traducción.
-
Haga clic en Agregar servicio.
-
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).
- URL
- 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
- Si todavía no lo ha hecho, registre un servicio de traducción en Oracle Digital Assistant.
- Haga clic en
para abrir el menú lateral, seleccione Desarrollo > Aptitudes y elija la aptitud.
- En la barra de navegación izquierda de la aptitud, haga clic en el icono Configuración (
) y seleccione el separador General.
- 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:
-
Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
- Cree las expresiones para la aptitud en el idioma de destino de la aptitud (no en inglés):
- Haga clic en
para abrir el menú lateral, seleccione Desarrollo > Aptitudes y abra la aptitud.
- En la navegación izquierda de la aptitud, haga clic en
- Seleccione una intención.
- En el campo de texto Ejemplos, escriba la expresión y pulse Intro.
- Repita los dos pasos anteriores para cada intención.
- Haga clic en
-
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
, 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.
- 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
.
Los mensajes y peticiones de datos se encuentran en los separadores Configuración y Asistente digital.
- En la navegación izquierda de la aptitud, haga clic en
-
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:
- Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
- Al principio del flujo que desea que sea el punto de partida de la aptitud, inserte un componente Detectar idioma.
- En el flujo principal, agregue el evento incorporado Iniciar aptitud y asígnelo al flujo que contiene el componente Detectar idioma.
- 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 especificaautotranslate
, el valor esfalse
. - La propiedad
translate
se puede definir individualmente para cada componente. Cuando la propiedadtranslate
se define para un componente, sustituye el valorautotranslate
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
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:
- Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
- Asegúrese de que la variable de contexto
autoTranslate
no esté definida (o esté definida enfalse
). - Encima del estado del componente
System.Intent
, agregue el componente System.DetectLanguage:detect: component: "System.DetectLanguage" properties: useExistingProfileLanguageTag: true transitions: ...
Nota
La propiedaduseExistingProfileLanguageTag
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. - En el componente System.Intent, defina la propiedad translate en
true
.intent: component: "System.Intent" properties: variable: "iResult" translate: true
- Para otros componentes de entrada, defina también la propiedad translate en
true
o defina el atributoinput
de la propiedadtranslate
entrue
, 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):
- Si aún no lo ha hecho, agregue un servicio de traducción a la aptitud.
- Agregue
autoTranslate: "map"
como variable al nodocontext
.context: variables: ... autoTranslate: "map"
- En el nodo
states
, encima del componenteSystem.Intent
, agregue un componenteSystem.SetVariable
. A continuación, defina la propiedadvariable
para utilizar la variable de contextoautoTranslate
y defina el atributoinput
(y, opcionalmente,output
) de la propiedadvalue
entrue
.setAutoTranslate: component: "System.SetVariable" properties: variable: "autoTranslate" value: input: true output: true transitions: ...
Nota
Si está utilizando grupos de recursos, debe definir el valoroutput
enfalse
. - Para el siguiente estado, agregue el componente System.DetectLanguage:
detect: component: "System.DetectLanguage" properties: useExistingProfileLanguageTag: true transitions: ...
Nota
La propiedaduseExistingProfileLanguageTag
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. - 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.
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() 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).
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.