Ü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).
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
-
Klicken Sie auf
, um das Seitenmenü zu öffnen, und wählen Sie Einstellungen > Übersetzungsservice aus.
-
Klicken Sie auf + Service.
-
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.
- URL
- Autorisierungsschlüssel (für den Microsoft Translator-Service) bzw. Autorisierungstoken (für die Google Translation API).
Übersetzungsservice zu Ihrem Skill hinzufügen
- Falls noch nicht geschehen, konfigurieren Sie einen Übersetzungsservice für Ihre Digital Assistant-Instanz folgendermaßen:
- Klicken Sie auf
, um das Seitenmenü zu öffnen, und wählen Sie Einstellungen > Übersetzungsservice aus.
- Klicken Sie auf + Service.
- 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. - Klicken Sie auf
- Klicken Sie auf
, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills und dann Ihren Skill aus.
- Klicken Sie in der linken Navigationsleiste des Skills auf das Symbol Einstellungen (
), und wählen Sie die Registerkarte Allgemein aus.
- 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:
-
Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
- Erstellen Sie die Äußerungen für den Skill in der Zielsprache des Skills (statt auf Englisch):
- Klicken Sie auf
, um das Seitenmenü zu öffnen, wählen Sie Entwicklung > Skills aus, und öffnen Sie Ihren Skill.
- Klicken Sie in der linken Navigationsleiste des Skills auf
.
- Wählen Sie ein Ziel aus.
- Geben Sie im Textfeld "Beispiele" die Äußerung ein, und drücken Sie die Eingabetaste.
- Wiederholen Sie die vorherigen beiden Teilschritte für jedes Intent.
- Klicken Sie auf
-
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
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.
- 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
.
Die Nachrichten und Prompts befinden sich auf den Registerkarten Konfiguration und Digital Assistant.
- Klicken Sie in der linken Navigationsleiste des Skills auf
-
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:
- Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
- Fügen Sie am Anfang des Ablaufs, den Sie als Ausgangspunkt des Skills festlegen möchten, eine Komponente Sprache erkennen ein.
- 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.
- 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 Sieautotranslate
nicht angeben, lautet der Wertfalse
. - Die Eigenschaft
translate
kann für jede Komponente einzeln festgelegt werden. Wenn die Eigenschafttranslate
für eine Komponente festgelegt ist, setzt sie denautotranslate
-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
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:
- Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
- Stellen Sie sicher, dass die Kontextvariable
autoTranslate
nicht festgelegt (oder auffalse
gesetzt) ist. - 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 EigenschaftuseExistingProfileLanguageTag
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. - Setzen Sie in der Komponente System.Intent die Eigenschaft "translate" auf
true
.intent: component: "System.Intent" properties: variable: "iResult" translate: true
- Setzen Sie bei anderen Eingabekomponenten auch die Eigenschaft translate auf
true
, oder setzen Sie das Attributinput
der Eigenschafttranslate
auftrue
. 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:
- Falls noch nicht geschehen, fügen Sie Ihrem Skill einen Übersetzungsservice hinzu.
- Fügen Sie
autoTranslate: "map"
als Variable zum Knotencontext
hinzu.context: variables: ... autoTranslate: "map"
- Fügen Sie im Knoten
states
oberhalb der KomponenteSystem.Intent
eine KomponenteSystem.SetVariable
hinzu. Setzen Sie dann die Eigenschaftvariable
auf die KontextvariableautoTranslate
, und setzen Sie das Attributinput
(und optionaloutput
) der Eigenschaftvalue
auftrue
.setAutoTranslate: component: "System.SetVariable" properties: variable: "autoTranslate" value: input: true output: true transitions: ...
Hinweis
Wenn Sie Resource Bundles verwenden, setzen Sie denoutput
-Wert auffalse
. - Fügen Sie für den nächsten Status die Komponente System.DetectLanguage hinzu:
detect: component: "System.DetectLanguage" properties: useExistingProfileLanguageTag: true transitions: ...
Hinweis
Die EigenschaftuseExistingProfileLanguageTag
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. - 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.
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 () 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).
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.