Servizi di traduzione nelle competenze

Per le competenze che sono indirizzate a lingue diverse dall'inglese e che non utilizzano il supporto della lingua nativa di Digital Assistant, è necessario configurare un servizio di traduzione.

Per tali competenze, quando un utente inserisce una richiesta o una risposta non in inglese, lo skill utilizza il servizio di traduzione per convertire questo input in inglese. Una volta tradotto, il motore NLP (Natural Language Processing) può risolverlo in un intento e abbinare le entità. L'abilità può quindi rispondere all'utente utilizzando il servizio di traduzione per tradurre le etichette e i prompt o facendo riferimento a stringhe specifiche della lingua nei bundle di risorse.

Per le competenze che hanno un corpus di formazione in una lingua non inglese, il servizio di traduzione viene utilizzato anche in fase di progettazione. Quando si forma un'abilità non in inglese, viene creata una versione in inglese delle espressioni di esempio e dei valori entità personalizzati da utilizzare nel modello di addestramento (anche se queste traduzioni non vengono visualizzate nel designer abilità).

Nota

Se si intende aggiungere un'abilità basata su un servizio di traduzione a un assistente digitale, tale assistente digitale deve utilizzare anche un servizio di traduzione.

Servizi di traduzione supportati

Linguaggio OCI

Oracle Cloud Infrastructure (OCI) fornisce il proprio servizio di traduzione chiamato Language. Se si utilizza questo servizio come servizio di traduzione in Oracle Digital Assistant, i messaggi utente non vengono esposti a un servizio di traduzione di terze parti.

Per utilizzare il linguaggio OCI come servizio di traduzione, è necessario eseguire la sottoscrizione al servizio e creare le autorizzazioni per l'accesso a Digital Assistant. Vedere Criteri per il linguaggio OCI.

API di traduzione Google

Per utilizzare l'API di traduzione di Google, è necessario generare la chiave API. È possibile creare questa chiave dalla console GCP (API e servizi > Credenziali). Per ulteriori informazioni, consulta la documentazione di Google Cloud Platform.

Traduttore Microsoft

Se si desidera utilizzare Microsoft Translator come servizio di traduzione in Oracle Digital Assistant, è necessario sottoscrivere il servizio multiplo Translator o Cognitive Services e ottenere una chiave segreta. Vedere https://docs.microsoft.com/en-gb/azure/cognitive-services/translator/reference/v3-0-reference.

Queste sono le cose principali che devi sapere:

  • È necessario utilizzare l'area Globale e l'URL corrispondente (https://api.cognitive.microsofttranslator.com/).
  • Per l'autenticazione è necessario ottenere una chiave segreta. È possibile ottenerlo dalla sezione Chiavi ed endpoint del portale Azure.

Registrare un servizio di traduzione in Oracle Digital Assistant

  1. Fare clic su icona per aprire il menu laterale per aprire il menu laterale e selezionare Impostazioni > Servizio di traduzione.

  2. Fare clic su + Servizio.

  3. Nella finestra di dialogo Servizi di traduzione, immettere l'URL e la chiave di autorizzazione (per il servizio Microsoft Translator) o il token di autorizzazione (per l'API di Google Translation).

    1. URL
    2. Chiave di autorizzazione (per il servizio Microsoft Translator) o token di autorizzazione (per l'API di traduzione Google).

Aggiungi un servizio di traduzione alla tua abilità

  1. Se non è già stato fatto, registrare un servizio di traduzione in Oracle Digital Assistant.
  2. Fare clic su icona per aprire il menu laterale per aprire il menu laterale, selezionare Sviluppo > Skill e selezionare lo skill desiderato.
  3. Nella barra di navigazione a sinistra dello skill, fare clic sull'icona Impostazioni(icona Impostazioni) e selezionare la scheda Generale.
  4. Passare all'elenco a discesa Servizio di traduzione e selezionare il servizio di traduzione.

Approcci basati su servizi di traduzione

Quando si utilizza un servizio di traduzione per supportare le competenze che parlano in lingue non inglesi, è possibile utilizzare uno dei seguenti approcci di sviluppo:

  • Crea competenze linguistiche singole non in inglese in cui:
    • Preparare il corpus di formazione nella lingua di destinazione dello skill.

    Quando sviluppi assistenti digitali non in lingua singola, li inserisci con tali competenze in una sola lingua (dove tutte le competenze in un determinato assistente digitale hanno lo stesso linguaggio predominante).

  • Creare competenze multilingue in cui:
    • Preparare il corpus di formazione in inglese.
    • Configurare il flusso della finestra di dialogo dello skill per gestire la traduzione dell'input utente e le risposte dello skill.
    • Facoltativamente (ma preferibilmente), creare bundle di risorse per una o più lingue per le etichette, i prompt e i messaggi dello skill. Questo è auspicabile perché consente di controllare la formulazione delle risposte dell'abilità.

In entrambi i casi, Digital Assistant utilizza il servizio di traduzione per tradurre l'input dell'utente nella lingua di base. Per le risposte, utilizza bundle di risorse (se forniti nello skill) o il servizio di traduzione per tradurre la risposta dello skill nella lingua dell'utente.

Abilità in una sola lingua non inglese con un servizio di traduzione

Per sviluppare una competenza per una singola lingua non inglese che si basa su un servizio di traduzione, è necessario:

  1. Se non lo si è già fatto, aggiungere un servizio di traduzione alle proprie competenze.

  2. Crea le espressioni per la tua abilità nella lingua di destinazione dell'abilità (invece che in inglese):
    1. Fare clic su icona per aprire il menu laterale per aprire il menu laterale, selezionare Sviluppo > Competenze e aprire lo skill.
    2. Nella navigazione a sinistra dello skill fare clic su Immagine dell'icona Intento.
    3. Selezionare un intento.
    4. Nel campo di testo Esempi digitare l'espressione e premere Invio.
    5. Ripetere i due passi secondari precedenti per ogni intento.
  3. Per qualsiasi entità personalizzata nello skill, assicurarsi che i valori siano nella lingua principale dello skill.

    È possibile aggiungere e modificare entità personalizzate facendo clic su Immagine dell'icona Entità nella navigazione a sinistra dello skill.

    Se non si forniscono valori di entità personalizzati nella lingua principale dello skill, lo skill non sarà in grado di elaborare correttamente l'input utente che contiene valori che devono essere corrispondenti a un'entità personalizzata.

  4. Nella competenza, aggiornare tutti i messaggi e i prompt di configurazione per utilizzare la lingua principale:

    Per accedere a questi messaggi e prompt:

    • Nella navigazione a sinistra dello skill, fare clic su icona Impostazioni.

    I messaggi e i prompt si trovano nelle schede Configurazione e Assistente digitale.

Ci sono un paio di altre cose da tenere a mente:
  • Impossibile tradurre i nomi delle entità incorporate.

  • Quando imposti la tua abilità in questo modo, il framework di elaborazione della lingua rileva l'input non inglese e poi lo traduce in inglese (la lingua del modello di formazione) dietro le quinte. Dopo aver valutato l'input, determina la risposta appropriata e la converte nella lingua di destinazione.

    Ciò può influire sui costi di traduzione perché richiede più chiamate al servizio di traduzione rispetto a un'abilità in cui il corpus di formazione è già in inglese.

Skill multilingue con traduzione automatica

Per gli skill che utilizzano un servizio di traduzione, è possibile abilitare lo skill per rilevare automaticamente la lingua dell'utente e comunicare in tale lingua.

Per impostare questa impostazione, è necessario aggiornare il flusso della finestra di dialogo in modo che:

  • Rilevare la lingua dell'utente.
  • Tradurre l'input utente in modo che possa essere risolto.
Traduzione per skill in modalità finestra di dialogo visiva

Per le competenze multilingue progettate in modalità Visual dialog, ecco i passaggi per impostare la traduzione:

  1. Se non lo si è già fatto, aggiungere un servizio di traduzione alle proprie competenze.
  2. All'inizio del flusso che si desidera essere il punto di partenza dello skill, inserire un componente Detect Language.
  3. Nel flusso principale, aggiungere l'evento incorporato Avvia skill e mapparlo al flusso contenente il componente Rileva lingua.
  4. Nella pagina Impostazioni dello skill, selezionare la scheda Configurazione e impostare le proprietà Traduci messaggio di input utente e Traduci messaggio di risposta bot.
    • Impostare Traduci messaggio di input utente su true per tradurre l'input utente.
    • Se non si utilizzano bundle di risorse per le lingue di destinazione, impostare Traduci messaggio di risposta bot su true.
Traduzione per skill in modalità finestra di dialogo YAML

Per le competenze progettate in modalità finestra di dialogo YAML, è possibile determinare il componente da tradurre per componente utilizzando una o entrambe le variabili di contesto autotranslate e la proprietà translate a livello di componente.

  • La variabile di contesto autotranslate si applica a livello globale all'intera competenza. Se non si specifica autotranslate, il relativo valore è false.
  • La proprietà translate può essere impostata singolarmente per ciascun componente. Quando la proprietà translate è impostata per un componente, esegue l'override del valore autotranslate per tale componente.

Sia per autotranslate che per translate, è possibile impostare il valore come singolo booleano oppure specificare valori booleani separati per input e output.

Esempi: autotranslate Variabile di contesto

Ecco un esempio di utilizzo di autotranslate per attivare la traduzione automatica sia per l'input che per l'output:

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

Ecco come è possibile utilizzare autotranslate per tradurre l'input per impostazione predefinita, ma non l'output:

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

Non è necessario specificare valori autotranslation falsi. Ad esempio, nello snippet precedente non è necessario includere la riga:

        output: false
Esempi: proprietà translate

Di seguito è riportato un esempio di impostazione della proprietà translate per inviare sia l'input che l'output del componente al servizio di traduzione specificato per la competenza.

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

Ed ecco un esempio di invio solo dell'input del componente al servizio di traduzione:

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate:       
        input: true
        output: false
Traduzione inclusione

Per le competenze progettate in modalità finestra di dialogo YAML, ecco i passaggi se si desidera specificare singolarmente i componenti da tradurre:

  1. Se non lo si è già fatto, aggiungere un servizio di traduzione alle proprie competenze.
  2. Assicurarsi che la variabile di contesto autoTranslate non sia impostata (o sia impostata su false).
  3. Al di sopra dello stato del componente System.Intent, aggiungere il componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Nota

    La proprietà useExistingProfileLanguageTag viene utilizzata quando uno skill fa parte di un assistente digitale che dispone di un servizio di traduzione. Ciò consente di utilizzare immediatamente la lingua rilevata dall'assistente digitale. In caso contrario, l'abilità potrebbe fornire un messaggio o un prompt in inglese prima che la lingua venga (ri)rilevata. Se lo skill non si trova in un assistente digitale abilitato alla traduzione, la proprietà viene ignorata.
  4. Nel componente System.Intent, impostare la proprietà di traduzione su true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Per altri componenti di input, impostare anche la proprietà translate property su true oppure impostare l'attributo input della proprietà translate su true, ad esempio:
      askName:
        component: "System.Text"
        properties:   
          prompt: "${rb.askNamePrompt}"
          variable: "name"
          translate:       
            input: true
            output: false
Esempio: competenza multilingua con traduzione automatica (inclusione)
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:"
            ...
  ...  
Traduzione esclusione

Per le competenze progettate in modalità finestra di dialogo YAML, ecco i passi per utilizzare la traduzione automatica per impostazione predefinita (e specificare singolarmente i componenti da non tradurre):

  1. Se non lo si è già fatto, aggiungere un servizio di traduzione alle proprie competenze.
  2. Aggiungere autoTranslate: "map" come variabile al nodo context.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. All'interno del nodo states, sopra il componente System.Intent, aggiungere un componente System.SetVariable. Impostare quindi la proprietà variable in modo che utilizzi la variabile di contesto autoTranslate e impostare l'attributo input (e, facoltativamente, output) della proprietà value su true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Nota

    Se si utilizzano i bundle di risorse, impostare il valore output su false.
  4. Per lo stato successivo, aggiungere il componente System.DetectLanguage:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Nota

    La proprietà useExistingProfileLanguageTag viene utilizzata quando uno skill fa parte di un assistente digitale che dispone di un servizio di traduzione. Ciò consente di utilizzare immediatamente la lingua rilevata dall'assistente digitale. In caso contrario, l'abilità potrebbe fornire un messaggio o un prompt in inglese prima che la lingua venga (ri)rilevata. Se lo skill non si trova in un assistente digitale abilitato alla traduzione, la proprietà viene ignorata.
  5. Per i componenti che non si desidera tradurre automaticamente, vedere la proprietà di traduzione in false, ad esempio:
      done:
        component: "System.Output"
        properties:
          text: "${rb('OnTheWay','${size.value}','${type.value}')}"
          translate:       
            input: true
            output: false
        transitions:
          return: "done"
Esempio: competenza multilingua con traduzione automatica per input (esclusione)

In questo esempio, la traduzione automatica è impostata per l'input, ma è disattivata per l'output (in modo che il testo di output possa essere specificato nei bundle di risorse).

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

Manipola input prima della traduzione

Se si desidera modificare il testo di input prima di inviarlo al servizio di traduzione, è possibile utilizzare il componente Traduci input (modalità finestra di dialogo visiva) o System.TranslateInput (modalità finestra di dialogo YAML). Ad esempio, potresti voler elaborare l'input dell'utente per rimuovere alcuni dati personali prima di inviarli al servizio di traduzione.

Nello snippet YAML seguente, la variabile sourceString contiene il testo da tradurre. (Questo testo, ad esempio, potrebbe essere stato raccolto da un altro componente.) Una volta completata l'elaborazione del file System.TranslateInput, la traduzione in inglese viene memorizzata nella variabile translatedString.
context:
  variables:
    autoTranslate: "boolean" 
    translatedString: "string"
    sourceString: "string"    
   ...
states:
   ...
  translateInputString:
    component: "System.TranslateInput"
    properties:
      source: "sourceString"
      variable: "translatedString"
    transitions:
      ...

Lingua predominante

Per gli skill impostati per l'utilizzo della versione piattaforma 20.09 o precedente e configurati con un servizio di traduzione, Oracle Digital Assistant assegna automaticamente un linguaggio predominante per tale skill, in base alla lingua delle espressioni di esempio dello skill.

Per individuare la lingua predominante assegnata a uno skill, fare clic sull'icona Impostazioni(icona Impostazioni) nella barra di navigazione sinistra dello skill, selezionare la scheda Generale e controllare il valore della proprietà Lingua predominante.

Per tali abilità, assicurarsi che tutte le espressioni dell'esempio di intento, le entità e il testo di risposta della finestra di dialogo siano nel linguaggio predominante.

Se si sta progettando l'abilità per supportare più lingue, la lingua predominante deve essere l'inglese.

Per gli assistenti digitali basati sulla versione 20.09 o precedente della piattaforma, il linguaggio predominante è determinato dal linguaggio predominante della prima abilità aggiunta all'assistente digitale. Tutte le altre competenze aggiunte all'assistente digitale devono avere lo stesso linguaggio predominante.

Se la prima abilità aggiunta non ha una lingua predominante (perché non è stato specificato alcun servizio di traduzione nell'abilità), la lingua predominante dell'assistente digitale è impostata sull'inglese. In questo caso, puoi aggiungere abilità che hanno l'inglese come lingua predominante (o che non hanno una lingua predominante impostata).

Nota

Per le competenze e gli assistenti digitali basati sulla piattaforma versione 20.12 o successiva, non è impostato un linguaggio predominante. In alternativa, specificare la lingua principale quando si crea lo skill o l'assistente digitale.