スキルのネイティブ言語サポート

プラットフォーム・バージョン20.12以降、Oracle Digital Assistantにはいくつかの言語のネイティブ・サポートがあります。このネイティブ言語サポートを使用するスキルを作成するときは、それらの言語でユーザー入力およびスキル・レスポンスを処理するためにサード・パーティ翻訳サービスを使用する必要がありません。

このようなスキルをデジタル・アシスタントに含めるために開発する場合、そのデジタル・アシスタントでもネイティブ言語サポートを使用する必要があります。デジタル・アシスタントでのネイティブ言語サポートを参照してください。

ネイティブ言語サポートの仕組み

  • トレーニング・データは、スキルの設計対象の(ネイティブにサポートされている)各言語で提供できます。

    ネイティブ言語サポートを使用する場合、スキルはすべてのネイティブ・サポート言語が組み込まれた統合モデルに従ってトレーニングされます。トレーニング発話は、スキルの1つ以上のターゲット言語で提供できます。1つの言語で提供するトレーニング発話は、スキルのすべての言語のモデルを構築するのに役立ちます。複数の言語をターゲットとするスキルでは、通常、スキルのプライマリ言語でトレーニング・コーパスを作成することから始めます。その後、他の言語でトレーニング発話を追加できます(そうする必要があります)が、おそらく他の言語では必要な量は少なくなります。

    これは、翻訳サービスを使用するスキルでは異なります。それらのスキルでは、トレーニング・コーパスが別の言語で提供されている場合でも、基礎となるトレーニング・モデルは常に英語です。

  • 組込みエンティティ型(NUMBER、EMAIL、DATEなど)のエンティティ値は、会話の言語で抽出されます。(これは、翻訳サービス・モードのスキルの場合とは異なります。その場合は、翻訳サービスによって入力が翻訳された後で値が抽出されます。
  • カスタム・エンティティのエンティティ値は、現在の会話の言語に指定された値と照合されます。
  • 英語以外の言語をサポートするスキルは、Trainer TMでトレーニングする必要があります。

ネイティブ・サポート言語

Oracle Digital Assistantで現在ネイティブにサポートされている言語(および対応する言語コード)を次に示します。

  • アラビア語(ar)
  • オランダ語(nl)
  • 英語(en)
  • フランス語(fr)
  • ドイツ語(de)
  • イタリア語(it)
  • ポルトガル語(pt)
  • スペイン語(es))

つまり、これらの言語のスキルとデジタル・アシスタントは、Google Translateなどの翻訳サービスを使用せずに作成できます。

各言語のサポート・レベルの概要を次に示します。

言語 言語の理解 音声 インサイト データ製造 会話デザイナ
アラビア語(ar) はい いいえ はい はい いいえ
オランダ語(nl) はい いいえ はい はい いいえ
英語(en) はい はい(en-US、en-GB、en-AUロケールが含まれる) はい はい はい
フランス語(fr) はい はい はい はい いいえ
ドイツ語(de) はい はい はい はい いいえ
イタリア語(it) はい はい はい はい いいえ
ポルトガル語(pt) はい はい はい はい いいえ
スペイン語(es)) はい はい はい はい いいえ

各言語のサポートの詳細な比較は、言語別の機能サポートを参照してください。

ネイティブ・サポート言語を使用するスキルの作成

Oracle Digital Assistantのネイティブ言語サポートを使用するスキルを作成する一般的なステップを次に示します。

  1. スキルを作成するときは、プラットフォーム・バージョン20.12以降を選択し、「プライマリ言語」ドロップダウンからサポートするプライマリ言語を選択します。

    選択する言語は、ドロップダウンの「ネイティブ・サポート」セクション内にある必要があります。

  2. 作成するインテントごとに、スキルの発話をプライマリ言語で追加します:
    1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「スキル」を選択して、スキルを開きます。
    2. スキルの左側のナビゲーションで、これは「インテント」アイコンのイメージです。をクリックします
    3. インントを選択します。
    4. 「例」テキスト・フィールドに発話を入力し、[Enter]を押します。
    5. 各インテントについて、前の2つのサブステップを繰り返します。
  3. スキルのカスタム・エンティティについて、各値がスキルのプライマリ言語であることを確認します。

    スキルの左側のナビゲーションで「エンティティ」アイコンのイメージですをクリックすると、カスタム・エンティティを追加および編集できます。

  4. ダイアログ・フロー内のコンポーネントで、プロンプトまたはラベルを表示するプロパティが含まれるものについては、必ずそれらのプロパティを明示的に定義してください。これらのプロパティを定義しないと、プロパティのデフォルト・テキスト(英語)がユーザーに表示される場合があります。
  5. スキルの設定で、すべての構成メッセージとプロンプトがプライマリ言語を使用するように更新します:

    これらのメッセージとプロンプトにアクセスするには:

    • スキルの左側のナビゲーションで、「設定」アイコンをクリックします。

    メッセージおよびプロンプトは、「構成」タブと「デジタル・アシスタント」タブにあります。

ノート

スキルで複数の言語をサポートする予定がある場合は、ユーザーに表示されるプロパティ、プロンプトおよびメッセージのリソース・バンドル・キーを定義する必要があります。また、複数の言語をサポートする予定がない場合でも、これを行うことをお薦めします。リソース・バンドルによって、すべての文字列の値を一箇所で編集できるようになるためです。スキルのリソース・バンドルを参照してください。

スキルへのネイティブ・サポート言語の追加

ネイティブ・サポート・プライマリ言語を選択したスキル(またはスキルのバージョン)では、その他のネイティブ・サポート言語を追加できます。

  1. スキルがプラットフォーム・バージョン20.12以降で実行されていることを確認します。

    そうでない場合は、スキルのクローンまたは新規バージョンを作成し、プラットフォーム・バージョン20.12以降を使用するように設定する必要があります。

  2. スキルの左側のナビゲーション・バーで、「設定」(「設定」アイコン)アイコンをクリックし、「一般」タブを選択します。
  3. 言語のセクションまで下にスクロールし、「言語の追加」をクリックしてドロップダウンから言語を選択します。
  4. スキルのインテントごとに、会話名と発話を追加した言語で追加します:
    1. 左側のナビゲーション・バーで「インテント」(これは「インテント」アイコンのイメージです。)をクリックします。
    2. 編集するインテントを選択します。
    3. 追加した言語のタブを選択します。
    4. これは「編集」アイコンのイメージですをクリックして、「会話名」フィールドにインテントのわかりやすい名前またはフレーズを入力します。
  5. キーと値のペアに基づくエンティティ(値リスト・エンティティおよび動的エンティティ)では、その言語での値を入力します。
  6. スキルがエンティティ値を会話の言語で表示できるようにします:
    1. エンティティの解決に使用するコンポーネント(エンティティの解決および共通レスポンス)で、useFullEntityMatchesプロパティがtrueに設定されていることを確認します。

      これによって、カスタム・エンティティ値が単純な文字列としてではなく、JSONオブジェクトとして格納されるようになります。

    2. (ダイアログ・フロー内および様々なスキル・プロパティ内の)カスタム・エンティティ値を参照するすべてのFreeMarker式に、読み取ろうとする値に対応する属性を挿入します。次の任意の属性を使用できます:
      • value - 言語の会話におけるエンティティの値を返します。
      • primaryLanguageValue - エンティティの値をスキルのプライマリ言語で返します。このオプションは、ビジネス・ロジックに使用される式で使用します(エンティティ値に基づいてプロンプトを表示するかどうかを決定する場合など)。
      • originalString - エンティティと一致するようにユーザーが入力した値を返します。この値は、エンティティ値のシノニムの可能性があります。

      たとえば、PizzaSizeエンティティの値を参照する${PizzaSize}という式がある場合、それを${PizzaSize.value}に変更すると会話の言語で値を表示できます。

  7. まだ作成していない場合は、ユーザーに表示されるすべての出力のリソース・バンドル・キーを作成し、プライマリ言語の値を入力して、それらのキーへの参照を適切な場所に挿入します。これには:
    • ダイアログ・フローの出力テキスト。
    • エンティティ定義に含まれるエンティティに対するプロンプト。
    • スキルの設定で定義されたメッセージおよびプロンプト。これらにアクセスするには:
      • スキルの左側のナビゲーションで、「設定」アイコンをクリックします。

      メッセージおよびプロンプトは、「構成」タブと「デジタル・アシスタント」タブにあります。

    スキルのリソース・バンドルを参照してください。
  8. ダイアログ・フロー内のコンポーネントで、プロンプトまたはラベルを表示するプロパティが含まれるものについては、必ずそれらのプロパティを明示的に定義します(デフォルトで英語の値が表示されないようにします)。また、それらのリソース・バンドル・エントリを作成してください。
  9. すべてのリソース・バンドル・キーに、追加した言語で値を追加します。
  10. 必要に応じて、追加言語でトレーニング・コーパスを補強します。

    ネイティブ・サポート言語を使用するスキルは、統合トレーニング・モデル(すべてのトレーニングがスキルのすべてのターゲット言語でのインテント解決に役立つ)に基づいているため、追加言語での発話を追加しなくても、トレーニング・モデルが追加言語に対してすでに動作できるはずです。ただし、精度はおそらくプライマリ言語の精度より低くなります。精度を上げるには、次のようにします:

    • 追加言語でバッチ・テストを作成して実行し、追加言語での発話なしで、モデルがどの程度適切に実行されるかを判別します。テスト実行の作成を参照してください。
    • 十分なレベルのインテント解決が得られるまで、その言語のトレーニング発話の追加とテストを繰り返します。
      1. 左側のナビゲーション・バーで「インテント」(これは「インテント」アイコンのイメージです。)をクリックします。
      2. 編集するインテントを選択します。
      3. 追加した言語のタブを選択します。
      4. 「例」セクションで、追加言語での発話の例を入力します。

      これらの追加のターゲット言語では、追加する必要がある発話は、おそらくプライマリ言語ほどは多くないはずです。

ノート

スキルを多言語にする場合のベスト・プラクティスについて学習するには、多言語NLUでのDesign Campのビデオを参照してください。

翻訳サービスからネイティブ言語サポートへの切替え

翻訳サービスの使用がすでに構成されたスキルでOracle Digital Assistantネイティブ言語サポートを利用する場合は、そのスキルの新しいバージョンまたはクローンを作成して、サポートを有効にできます。

前提条件:

  • 変換しようとするスキルは、変換先のプラットフォームのバージョンでネイティブにサポートされている言語のみを使用する必要があります。リストは、ネイティブ・サポート言語を参照してください。

この前提条件が満たされない場合は、スキルの英語以外のすべての言語で翻訳サービスを引き続き使用する必要があります。

デジタル・アシスタントのネイティブ言語サポートを使用するようにスキルを変換するには:

  1. 新しいバージョンまたはクローンを作成し、スキルのプライマリ言語を指定します。
    1. サイド・メニューを開くアイコンをクリックしてサイド・メニューを開き、「開発」→「スキル」を選択します。

    2. バージョンまたはクローンを作成するスキル・アシスタントのタイルで、「オプション」メニューを開くアイコンをクリックして「バージョン」または「クローン」を選択します。

    3. 「プラットフォーム・バージョン」フィールドで、バージョン20.12以降を選択します。

      まだ表示されていなかった場合は、「プライマリ言語」フィールドが表示されます。

    4. 「プライマリ言語」ドロップダウンで、ドロップダウンの「ネイティブ・サポート」セクションから、スキルの以前のバージョンの主言語に最も適応する言語を選択します。
      ノート

      「作成」をクリックした後は、プラットフォーム・バージョンおよびプライマリ言語を変更できません。
    5. 「作成」をクリックします。
  2. サポートするその他の言語を追加します。
  3. ダイアログ・フローを調整して、翻訳サービスへのテキストの送信に関連する次のメカニズムの使用を停止します:
    1. すべての翻訳コンポーネント(言語の検出、入力の翻訳および出力の翻訳)。
    2. (YAMLベースのフローの場合)autotranslateコンテキスト変数。
    3. (YAMLベースのフローの場合)コンポーネント・レベルのtranslateプロパティ。

追加言語のトレーニング・コーパス

言語を追加したときに、スキルの様々な部分がどのように処理されるかを次に示します:

  • インテント—インテント名がどの言語であっても、言語ごとに変化することはありません。インテントごとに、各言語の発話例を追加できます。ネイティブにサポートされているスキルのモデルは統合されているため、特定の言語に対して追加する発話が、他の言語のモデルにも役立ちます。それでもなお、各言語に発話を追加することでモデルを強化できます。

    特に、プライマリ言語のフレーズの直訳にならないように、別の言語でインテントを表すフレーズを追加することに専念する必要があります。

  • エンティティ—キーと値のペアに基づくエンティティ(値リスト・エンティティおよび動的エンティティ)の場合、プライマリ言語で値を定義してから、追加言語ごとに、プライマリ言語の値に対応する値を追加します。

    エンティティに定義されているプロンプトおよびメッセージ(コンポジット・バッグ・エンティティに定義されているプロンプトを含む)の場合は、リソース・バンドル・キーを参照します。リソース・バンドル・キーに、各ターゲット言語の適切なテキストを指定します。

    列挙範囲サイズなどの他のプロパティの場合、値はすべての言語に適用されます。

    ノート

    あいまい一致プロパティは、スキルのすべての言語でサポートされていないと無効になります。

ネイティブ・サポート言語を使用するスキルでの言語検出

複数のネイティブ・サポート言語を使用するスキルでは、デジタル・アシスタント(またはスタンドアロン・スキル)はセッションの開始時にユーザーの言語を自動的に検出できます。この仕組みは次のとおりです:

  • 複数のネイティブ・サポート言語を使用するように構成されているデジタル・アシスタントおよびスキルでは、言語が自動的に検出されます。
    • スキルまたはデジタル・アシスタントに(ネイティブ・サポート)言語が1つしかない場合、言語検出はオフになります。
    • デジタル・アシスタントまたはスキルが翻訳サービスを使用する場合、スキルまたはデジタル・アシスタントではなく翻訳サービスが言語検出を処理します。
  • profile.languageTagまたはprofile.locale変数が設定されたチャネルからスキルまたはデジタル・アシスタントがアクセスされている場合、言語は自動的に検出されません
  • 言語は会話の最初の発話で検出され、ユーザーが言語を切り替えてもセッション中には更新されません。
  • デフォルトでは、チャネル・セッションは7日継続してから有効期限が切れます。