Übersetzungsservices in Skills

Für Fähigkeiten, die auf andere Sprachen als Englisch ausgerichtet sind und die native Sprachunterstützung für Digital Assistant nicht leisten, müssen Sie einen Übersetzungsservice konfigurieren.

Wenn ein Benutzer bei diesem Skills eine Anforderung oder Antwort in einer anderen Sprache als Englisch eingibt, verwendet der Skill den Übersetzungsservice, um diese Eingabe ins Englische zu konvertieren. Nach der Übersetzung kann die Natural Language Processing-(NLP-)Engine sie in ein Intent auflösen und die Entitys zuordnen. Der Skill kann dann dem Benutzer antworten, indem er mithilfe des Übersetzungsservice die Labels und Prompts übersetzt oder sprachspezifische Zeichenfolgen in Resource Bundles referenziert.

Für Skills, für die ein Trainingskorpus in einer nicht-englischen Sprache vorhanden ist, wird der Übersetzungsservice auch während der Entwurfszeit genutzt. Wenn Sie einen solchen nicht-englischen Skill trainieren, werden englische Versionen der Beispieläußerungen und benutzerdefinierte Entitywerte erstellt, die im Trainingsmodell verwendet werden sollen (obwohl diese Übersetzungen im Skilldesigner nicht angezeigt werden).

Hinweis

Wenn Sie einem digitalen Assistenten einen Skill hinzufügen möchten, der auf einem Übersetzungsservice basiert, muss dieser digitale Assistent ebenfalls einen Übersetzungsservice verwenden.

unterstützte Übersetzungsservices

OCI Language

Oracle Cloud Infrastructure (OCI) bietet einen eigenen Übersetzungsservice namens Sprache. Wenn Sie diesen Service als Übersetzungsservice in Oracle Digital Assistant verwenden, werden Benutzernachrichten nicht an einen Übersetzungsservice eines Drittanbieters weitergegeben.

Um OCI Language als Übersetzungsservice zu verwenden, müssen Sie den Service abonnieren und Berechtigungen für den Zugriff durch Digital Assistant erstellen. Siehe Policys für OCI Language.

Google Translation API

Um die Google Translation API verwenden zu können, müssen Sie den API-Schlüssel generieren. Sie erstellen diesen Schlüssel in der GCP-Konsole ( APIs und Services > Zugangsdaten). Weitere Informationen finden Sie in der Google Cloud Platform-Dokumentation.

Microsoft Translator

Wenn Sie Microsoft Translator als Übersetzungsservice in Oracle Digital Assistant verwenden möchten, müssen Sie Translator oder den Multiservice Cognitive Services abonnieren und einen Secret Key abrufen. Siehe https://docs.microsoft.com/en-gb/azure/cognitive-services/translator/reference/v3-0-reference.

Insbesondere müssen Sie Folgendes beachten:

  • Sie müssen die globale Region und die entsprechende URL (https://api.cognitive.microsofttranslator.com/) verwenden.
  • Sie müssen einen Secret Key für die Authentifizierung erhalten. Diesen können Sie im Abschnitt "Keys and Endpoints" des Azure-Portals abrufen.

Übersetzungsservice in Oracle Digital Assistant registrieren

  1. Klicken Sie auf Symbol zum Öffnen des Seitenmenüs, um das Seitenmenü zu öffnen, und wählen Sie Einstellungen > Übersetzungsservice aus.

  2. Klicken Sie auf + Service.

  3. Geben Sie im Dialogfeld "Übersetzungsservices" die URL und den Autorisierungsschlüssel (für den Microsoft Translator-Service) bzw. das Autorisierungstoken (für die Google Translation API) ein.

    1. URL
    2. Autorisierungsschlüssel (für den Microsoft Translator-Service) bzw. Autorisierungstoken (für die Google Translation API).

Übersetzungsservice zu Ihrem Skill hinzufügen

  1. Falls noch nicht geschehen, konfigurieren Sie einen Übersetzungsservice für Ihre Digital Assistant-Instanz folgendermaßen:
    1. Klicken Sie auf Symbol zum Öffnen des Seitenmenüs, um das Seitenmenü zu öffnen, und wählen Sie Einstellungen > Übersetzungsservice aus.
    2. Klicken Sie auf + Service.
    3. Wählen Sie den Dienst und geben Sie die erforderlichen Konfigurationsinformationen ein.

      Wenn Sie OCI (für den OCI Language-Service) auswählen, geben Sie keine Informationen direkt in dieses Dialogfeld ein. Sie müssen jedoch OCI-Policys einrichten, um den Service zu verwenden.

      Informationen zu den Aktionen, die Sie zur Konfiguration der einzelnen Services ausführen müssen, finden Sie unter Unterstützte Übersetzungsservices.

    In der Dokumentation zu Microsoft Translator und zur Google-Übersetzer-API wird beschrieben, wie die URL und das Zugriffstoken abgerufen werden.
    Hinweis

    Um die Google-Übersetzer-API verwenden zu können, müssen Sie den API-Schlüssel generieren. Sie erstellen diesen Schlüssel in der GCP-Konsole ( APIs und Services > Zugangsdaten). Weitere Informationen finden Sie in der Google Cloud Platform-Dokumentation.
  2. Klicken Sie auf Symbol zum Öffnen des Seitenmenüs, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills und dann Ihren Skill aus.
  3. Klicken Sie in der linken Navigationsleiste des Skills auf das Symbol Einstellungen (Symbol "Einstellungen"), und wählen Sie die Registerkarte Allgemein aus.
  4. Navigieren Sie zur Dropdown-Liste Übersetzungsservice, und wählen Sie den Übersetzungsservice aus.

Ansätze für Übersetzungsservices

Wenn Sie einen Übersetzungsservice für Skills in anderen Sprachen als Englisch nutzen, können Sie einen der folgenden Entwicklungsansätze verfolgen:

  • Erstellen Sie nicht-englische einsprachige Skills, indem Sie wie folgt vorgehen:
    • Bereiten Sie das Trainingskorpus in der Zielsprache des Skills vor.

    Wenn Sie nicht-englische, einsprachige digitale Assistenten entwickeln, füllen Sie diese mit diesen einsprachigen Skills auf (wobei alle Skills in einem bestimmten digitalen Assistenten dieselbe vorherrschende Sprache haben).

  • Erstellen Sie mehrsprachige Skills, indem Sie wie folgt vorgehen:
    • Bereiten Sie das Trainingskorpus auf Englisch vor.
    • Konfigurieren Sie den Dialogablauf des Skills, um die Übersetzung der Benutzereingabe und der Skills zu verwalten.
    • Erstellen Sie optional (aber vorzugsweise) Resource Bundles für eine oder mehrere Sprachen für die Labels, Prompts und Nachrichten des Skills. Dies ist wünschenswert, da Sie damit den Wortlaut der Antworten des Skills steuern können.

In beiden Fällen verwendet Digital Assistant den Übersetzungsservice, um Benutzereingaben in die Basissprache zu übersetzen. Bei Antworten werden Resource Bundles (sofern im Skill bereitgestellt) oder der Übersetzungsservice verwendet, um die Antwort des Skills zurück in die Sprache des Benutzers zu übersetzen.

Einsprachiger Skill mit einer anderen Sprache als Englisch über einen Übersetzungsservice

Um einen Skill basierend auf einem Übersetzungsservice für eine einzelne nicht-englische Sprache zu entwickeln, gehen Sie wie folgt vor:

  1. Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.

  2. Erstellen Sie die Äußerungen für den Skill in der Zielsprache des Skills (statt auf Englisch):
    1. Klicken Sie auf Symbol zum Öffnen des Seitenmenüs, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills aus, und öffnen Sie Ihren Skill.
    2. Klicken Sie in der linken Navigationsleiste des Skills auf Dieses Bild zeigt das Symbol "Intent"..
    3. Wählen Sie ein Ziel aus.
    4. Geben Sie im Textfeld "Beispiele" die Äußerung ein, und drücken Sie die Eingabetaste.
    5. Wiederholen Sie die vorherigen beiden Teilschritte für jedes Intent.
  3. Stellen Sie für alle benutzerdefinierten Entitys im Skill sicher, dass die Werte in der primären Sprache des Skills vorliegen.

    Sie können benutzerdefinierte Entitys hinzufügen und bearbeiten, indem Sie in der linken Navigationsleiste des Skills auf Dieses Bild zeigt das Symbol "Entitys". klicken.

    Wenn Sie keine benutzerdefinierten Entitywerte in der primären Sprache des Skills angeben, kann der Skill Benutzereingaben, die Werte enthalten, die von einer benutzerdefinierten Entity abgeglichen werden müssen, nicht korrekt verarbeiten.

  4. Aktualisieren Sie im Skill alle Konfigurationsnachrichten und Prompts so, dass sie die primäre Sprache verwenden:

    So greifen Sie auf diese Nachrichten und Prompts zu:

    • Klicken Sie in der linken Navigationsleiste des Skills auf Symbol "Einstellungen".

    Die Nachrichten und Prompts befinden sich auf den Registerkarten Konfiguration und Digital Assistant.

Es gibt einige weitere Aspekte, die Sie beachten sollten:
  • Sie können die Namen der integrierten Entitys nicht übersetzen.

  • Wenn Sie Ihren Skill auf diese Weise einrichten, erkennt das Sprachverarbeitungs-Framework nicht-englische Eingaben und übersetzt diese dann im Hintergrund ins Englische (die Sprache des Trainingsmodells). Nachdem die Eingabe ausgewertet wurde, bestimmt sie die entsprechende Antwort und übersetzt sie zurück in die Zielsprache.

    Dies kann sich auf die Übersetzungskosten auswirken, weil dadurch mehr Aufrufe des Übersetzungsservice erforderlich sind als bei einem Skill, dessen Trainingskorpus bereits auf Englisch vorliegt.

Mehrsprachige Skills mit automatischer Übersetzung

Bei Skills, die einen Übersetzungsservice verwenden, können Sie festlegen, dass der Skill die Sprache des Benutzers automatisch erkennt und in dieser Sprache kommuniziert.

Dazu müssen Sie den Dialogablauf aktualisieren, damit er:

  • die Sprache des Benutzers erkennt.
  • die Benutzerdaten übersetzt, damit sie berechnet werden können.
Übersetzung für Skills im visuellen Dialogmodus

Für mehrsprachige Skills, die im visuellen Dialogmodus entwickelt wurden, sind hier die Schritte zum Einrichten der Übersetzung:

  1. Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
  2. Fügen Sie am Anfang des Ablaufs, den Sie als Ausgangspunkt des Skills festlegen möchten, eine Komponente Sprache erkennen ein.
  3. Fügen Sie im Hauptablauf das integrierte Ereignis "Skill starten" hinzu, und ordnen Sie es dem Ablauf zu, der die Komponente "Sprache erkennen" enthält.
  4. Wählen Sie auf der Seite Einstellungen des Skills die Registerkarte Konfiguration aus, und legen Sie die Eigenschaften Benutzereingabenachricht übersetzen und Botantwortnachricht übersetzen fest.
    • Setzen Sie Benutzereingabenachricht übersetzen auf "true", um Benutzereingaben zu übersetzen.
    • Wenn Sie keine Resource Bundles für die Zielsprachen verwenden, setzen Sie die Option Botantwortnachricht übersetzen auf "true".
Übersetzung für Skills im YAML-Dialogmodus

Bei Skills, die im YAML-Dialogmodus entwickelt wurden, können Sie bestimmen, welche Komponenten nach Komponenten übersetzt werden sollen, indem Sie entweder die Kontextvariable autotranslate oder die Eigenschaft translate auf Komponentenebene verwenden.

  • Die Kontextvariable autotranslate gilt global für den gesamten Skill. Wenn Sie autotranslate nicht angeben, lautet der Wert false.
  • Die Eigenschaft translate kann für jede Komponente einzeln festgelegt werden. Wenn die Eigenschaft translate für eine Komponente festgelegt ist, setzt sie den autotranslate-Wert für diese Komponente außer Kraft.

Sie können den Wert für autotranslate und translate als einen einzelnen booleschen Wert festlegen oder separate boolesche Werte für Eingabe und Ausgabe angeben.

Beispiele: Kontextvariable autotranslate

Beispiel für die Verwendung von autotranslate zum Aktivieren der automatischen Übersetzung für Eingabe und Ausgabe:

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

So können Sie die Eingabe mit autotranslate standardmäßig übersetzen, die Ausgabe aber nicht übersetzen.

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

Sie müssen den Wert "false" für autotranslation nicht angeben. Beispiel: Im vorherigen Snippet muss die folgende Zeile nicht enthalten sein:

        output: false
Beispiele: Eigenschaft translate

Beispiel für das Festlegen der Eigenschaft translate, sodass sowohl die Eingabe als auch die Ausgabe der Komponente an den für den Skill angegebenen Übersetzungsservice gesendet werden:

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

Beispiel, um nur die Eingabe der Komponente an den Übersetzungsservice zu senden:

  askName:
    component: "System.Text"
    properties:   
      prompt: "${rb.askNamePrompt}"
      variable: "name"
      translate:       
        input: true
        output: false
Opt-in-Übersetzung

Für Skills, die im YAML-Dialogmodus entwickelt wurden, gehen Sie wie folgt vor, wenn Sie die zu übersetzenden Komponenten einzeln angeben möchten:

  1. Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
  2. Stellen Sie sicher, dass die Kontextvariable autoTranslate nicht festgelegt (oder auf false gesetzt) ist.
  3. Fügen Sie über dem Status der Komponente System.Intent die Komponente System. DetectLanguage hinzu:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Hinweis

    Die Eigenschaft useExistingProfileLanguageTag wird verwendet, wenn ein Skill Teil eines digitalen Assistenten ist, der einen Übersetzungsservice hat. Dadurch kann der Skill umgehend die Sprache verwenden, die vom digitalen Assistenten erkannt wird. Andernfalls kann der Skill eine Nachricht oder Eingabeaufforderung auf Englisch bereitstellen, bevor die Sprache (neu) erkannt wird. Wenn sich der Skill nicht in einem übersetzungsfähigen digitalen Assistenten befindet, wird die Eigenschaft ignoriert.
  4. Setzen Sie in der Komponente System.Intent die Eigenschaft "translate" auf true.
      intent:
        component: "System.Intent"
        properties:
          variable: "iResult"
          translate: true
  5. Setzen Sie bei anderen Eingabekomponenten auch die Eigenschaft translate auf true, oder setzen Sie das Attribut input der Eigenschaft translate auf true. Beispiel:
      askName:
        component: "System.Text"
        properties:   
          prompt: "${rb.askNamePrompt}"
          variable: "name"
          translate:       
            input: true
            output: false
Beispiel: Mehrsprachiger Skill mit automatischer Übersetzung (Opt-in)
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:"
            ...
  ...  
Opt-out-Übersetzung

Bei Skills, die im YAML-Dialogmodus entwickelt wurden, sind die folgenden Schritte zur Verwendung der automatischen Übersetzung standardmäßig (und zur individuellen Angabe von Komponenten, die nicht übersetzt werden sollen) aufgeführt:

  1. Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
  2. Fügen Sie autoTranslate: "map" als Variable zum Knoten context hinzu.
    context:
      variables:
        ...
        autoTranslate: "map"
  3. Fügen Sie im Knoten states oberhalb der Komponente System.Intent eine Komponente System.SetVariable hinzu. Setzen Sie dann die Eigenschaft variable auf die Kontextvariable autoTranslate, und setzen Sie das Attribut input (und optional output) der Eigenschaft value auf true.
      setAutoTranslate:
        component: "System.SetVariable"
        properties:
          variable: "autoTranslate"
          value:
            input: true
            output: true
        transitions:
          ...
    Hinweis

    Wenn Sie Resource Bundles verwenden, setzen Sie den output-Wert auf false.
  4. Fügen Sie für den nächsten Status die Komponente System.DetectLanguage hinzu:
      detect:
        component: "System.DetectLanguage"
        properties:
          useExistingProfileLanguageTag: true
        transitions:
          ...
    Hinweis

    Die Eigenschaft useExistingProfileLanguageTag wird verwendet, wenn ein Skill Teil eines digitalen Assistenten ist, der einen Übersetzungsservice hat. Dadurch kann der Skill umgehend die Sprache verwenden, die vom digitalen Assistenten erkannt wird. Andernfalls kann der Skill eine Nachricht oder Eingabeaufforderung auf Englisch bereitstellen, bevor die Sprache (neu) erkannt wird. Wenn sich der Skill nicht in einem übersetzungsfähigen digitalen Assistenten befindet, wird die Eigenschaft ignoriert.
  5. Setzen Sie für alle Komponenten, die nicht automatisch übersetzt werden sollen, die Eigenschaft "translate" auf false. Beispiel:
      done:
        component: "System.Output"
        properties:
          text: "${rb('OnTheWay','${size.value}','${type.value}')}"
          translate:       
            input: true
            output: false
        transitions:
          return: "done"
Beispiel: Mehrsprachiger Skill mit automatischer Übersetzung für Eingabe (Opt-out)

In diesem Beispiel wird die automatische Übersetzung für die Eingabe eingerichtet, aber für die Ausgabe deaktiviert (damit der Ausgabetext in Resource Bundles angegeben werden kann).

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

Eingabe vor Übersetzung ändern

Wenn Sie den Eingabetext bearbeiten möchten, bevor Sie ihn an den Übersetzungsservice senden, können Sie die Komponente Eingabe übersetzen (visueller Dialogmodus) oder System.TranslateInput (YAML-Dialogmodus) verwenden. Beispiel: Sie möchten die Benutzereingabe verarbeiten, um einige personenbezogene Daten zu entfernen, bevor Sie sie an den Übersetzungsservice senden.

In dem folgenden YAML-Snippet enthält die Variable sourceString den Text, der übersetzt werden soll. (Dieser Text wurde beispielsweise von einer anderen Komponente erfasst.) Nach Abschluss der Verarbeitung von System.TranslateInput wird die englische Übersetzung in der Variablen translatedString gespeichert.
context:
  variables:
    autoTranslate: "boolean" 
    translatedString: "string"
    sourceString: "string"    
   ...
states:
   ...
  translateInputString:
    component: "System.TranslateInput"
    properties:
      source: "sourceString"
      variable: "translatedString"
    transitions:
      ...

Vorherrschende Sprache

Skills, die Sie für die Verwendung von Plattformversion 20.09 oder früher eingerichtet und mit einem Übersetzungsservice konfiguriert haben, weist Oracle Digital Assistant automatisch eine vorherrschende Sprache zu. Diese basiert auf der Sprache der Beispieläußerungen des Skills.

Sie können ermitteln, welche vorherrschende Sprache für einen Skill zugewiesen wurde, indem Sie in der linken Navigationsleiste des Skills auf das Symbol Einstellungen (Symbol "Einstellungen") klicken, die Registerkarte Allgemein auswählen und den Wert der Eigenschaft Vorherrschende Sprache prüfen.

Stellen Sie bei diesen Skills sicher, dass alle Intent-Beispieläußerungen, Entitys und Dialogantworttexte in der vorherrschenden Sprache vorliegen.

Wenn Sie den Skill zur Unterstützung mehrerer Sprachen entwerfen, muss die vorherrschende Sprache Englisch sein.

Bei digitalen Assistenten, die auf Plattformversion 20.09 oder früher basieren, wird die vorherrschende Sprache anhand der vorherrschenden Sprache des ersten Skills bestimmt, den Sie dem digitalen Assistenten hinzufügen. Alle weiteren Skills, die Sie dem digitalen Assistenten hinzufügen, müssen dieselbe vorherrschende Sprache haben.

Wenn der erste Skill, den Sie hinzufügen, keine vorherrschende Sprache hat (weil im Skill kein Übersetzungsservice angegeben wurde), wird die vorherrschende Sprache des digitalen Assistenten auf Englisch gesetzt. In diesem Fall können Sie entweder Skills hinzufügen, deren vorherrschende Sprache Englisch ist (oder für die keine vorherrschende Sprache festgelegt ist).

Hinweis

Für Skills und digitale Assistenten, die auf Plattformversion 20.12 oder höher basieren, wird keine vorherrschende Sprache festgelegt. Stattdessen geben Sie die primäre Sprache an, wenn Sie den Skill oder digitalen Assistenten erstellen.