スモールトークとは、Botがエンドユーザーと行うことができる形式張らない会話のことです。エンドユーザーと形式張らない会話をすることで、Botをソーシャル化し、リコール率を向上させることができます。
スモールトークの会話は、Botとユーザー間の一連のやり取りとして設計することができます。「How Are You?」のようなソーシャルインプットに対応することができるBotは、Botに肯定的な印象を与える可能性が高く、ユーザーとの貴重なつながりを構築するのに役立ちます。カスタムスモールトーク機能を使用して、人格を形成し、興味のある分野について形式ばらない会話を行えるようBotをトレーニングします。また、ネスト化された会話を構築して、後に続く会話に答えたり、Botをより魅力的なものにしたりすることもできます。
この機能はKore.ai Botビルダープラットフォームのバージョン7.1で導入されました。これは、本来挨拶やスモールトークであった標準応答の一部に置き換わるものであり、お客様はBotに組み込まれているスモールトーク機能を拡張することができます。
v8.1以降、プラットフォームはユーザーの発話で絵文字を識別し、それに応じてSmallTalkで応答できるようになりました。
デフォルトのスモールトーク
スモールトークは、Botのニーズに合わせて設定することができるBotレベルのタスクです。新しいBotを作成すると、デフォルトでグループ挨拶のスモールトークが生成されます。
既存のBotでスモールトークタスクを開くと、挨拶に関連する標準応答がスモールトーク機能に移行されたことが通知されます。続行を選択せず、標準応答を継続することができます。
移行を続行した場合、挨拶文は標準応答セクションから永久に削除され、検索できなくなってしまうことにご注意ください。
以下は、挨拶グループの下にあるメッセージです(これらは、挨拶の標準応答、および続行を選択するとスモールトークに移行されるその他のカテゴリです)
挨拶 | |
---|---|
ユーザーが「Hi」と言った時の応答 | ユーザーがhi、hello、heyなどと言った時、またはBotの名前を入力した時に表示されます。 |
「how are you?」への応答 | ユーザーが「How are you?」と尋ねる NLは以下のように解釈します。 , whazzupp whatcha`upto watsup wassup howzit |
「who are you?」への応答 | ユーザーが「who are you」と言ったときに表示されます。 |
コンテキストにタスクがない時に、ユーザーが「great」「awsome」などと言う | ユーザーが「great」「awsome」などと言った時に表示されます。(恐らくタスク終了後) |
ユーザーが「that helped」「that was useful」などと言う | ユーザーが「good」「great」「awesome」「cool」「fair enough」「that helped」「it helps」「that was useful」「that was handy」などと言った時に表示されます。(恐らくタスク終了後) |
コンテキストにタスクがない時に、ユーザーが「no」「nope」などと言う | これは、「No」「Nopes」などのユーザーの発話に対して応答したスモールトークです。 |
コンテキストにタスクがない時に、ユーザーが「I am done」「That’s it for now」などと言う | ユーザーが「I am done」「that’s it for now」「that’s all」「done」などと言った時に表示されます。(恐らくタスク終了後) |
ユーザーが会話の終了をほのめかしている(「good night」「good night」「bye」「ttyl」など) | この条件は、次のフォローアップタスク設定が設定されているダイアログタスクでのみ発生します。「はい、このダイアログの最後に、ダイアログ設定の[フォローアップタスク]リストからタスクを選択して実行するようにユーザーに依頼します」ダイアログの最後にフォローアップインテントの配列がユーザーに提示されると、Botはこのメッセージを表示します。 |
ユーザーからの感謝の言葉 | ユーザーがBotに感謝の言葉を伝えた時に表示されます。 |
コンテキストにタスクがない時に、ユーザーが「OK」「fine」「yes」などと言う | ユーザーが「OK」「fine」「got it」などと言ったときに表示されます。(恐らくタスク終了後) |
NLエンジンのプラットフォームバージョン8.0リリース後の改良により、発話の最初に入力される「hello」のような言葉は、それ自体の文に分割されず、「~emohello」のような概念に置き換えられるようになりました。例えば、「Hello, I need to transfer money」というユーザーの発話の場合、「~emohello」と「I need to transfer money」の2つの文に分割されていたため、問題が発生していました。現在は分割されず、「transfer money」というインテントと一致するようになっています。
概要
スモールトークとは、一連のユーザー発話とBot応答です。スモールトークの主な目的は、ユーザーとの形式張らない会話を行うことであり、機能的なトピックまたはビジネス上の取引は通常スモールトークには含まれません。
スモールトークの様々なユーザークエリをグループに分類し、階層構造を割り当てることができます。挨拶カテゴリは、新しいBotすべてに対してデフォルトで自動生成されます。このグループには、挨拶や社交辞令に関する様々な質問が含まれています。お客様は、追加のグループやカテゴリを定義して、それぞれのグループの下に対話フローを構築することができます。
- それぞれのグループは1つ以上の最上位の質問を設定することができます。最上位の質問は1つ以上の子質問を設定することができます。
- 子質問には、それに続く1つ以上の子質問を最大3つのレベルまで設定することができます。すべての質問には、1つ以上の代替質問を設定することができます。
- すべての質問には1つ以上の応答を設定することができます。複数の応答がある場合、プラットフォームはランダムに1つを選択します。
用語集
以下は、スモールトークに関連する様々な用語です。
- グループ – スモールトークは、目的と内容に基づいて、グループに分類することができます。
- ユーザークエリ – それぞれのグループに対して、ユーザークエリ、代替クエリ、子クエリを追加することができます。クエリはパターンを使って形成することができます。パターンの詳細はこちらを参照してください。
- Botの応答 – それぞれのユーザークエリはBotの応答に関連付けられている必要があります。これらの応答は、プレーンテキスト形式でもJavaScript形式でも構いません。チャネル固有の応答を指定することができます。複数の応答を入力することもでき、プラットフォームによってそのうちの1つが実行時にランダムに選択されます。
グループ
新しいグループを手動で作成する、あるいは既存のJSONまたはTSVファイルをインポートすることができます。また、デフォルトの挨拶カテゴリを修正することもできます。
- 新しいグループ:
- Botタスク > スモールトークから、新しいグループボタンをクリックします。
- 名前を入力して続行します。
- インポート:お客様の組織にすでにスモールトークが導入されている場合は、同様にインポートすることができます。ファイルはJSONまたはTSV形式である必要があります。フォーマットの詳細については、サンプルファイルをダウンロードしていただけます。
- Botタスク > スモールトークから、その他(省略記号)ボタンをクリックします。
- インポートオプションを選択します。
- スモールトークを含むファイルおよび次へを選択します。
- インポートが開始されます。既存のスモールトークがインポートされたファイルに置き換わることにご注意ください。
- 修正:
- 既存のグループをクリックして変更することができます。
開いたスモールトークエディタから、ユーザー発話とBotの応答の組み合わせを入力し、リストに追加することができます。
クエリ – 応答
グループを作成/インポートすると、クエリと応答の組み合わせを追加/変更することができます。
- ユーザー欄にユーザークエリを入力し、Bot欄に対応するBotの応答を入力します。
- 入力または追加を押してクエリと応答の組み合わせをリストに追加します。
- クエリはパターンを使用して設計することができます。パターンの詳細についてはこちらを参照してください。
- それぞれのユーザークエリに対して、ユーザーが同じクエリを実行する際の異なる方法を示す 代替質問 を入力することができます。
- それぞれのBotの応答に対して、代替応答を入力することができます。プラットフォームは、実行時に1つの応答をランダムに選択します。
- カーソルを合わせたときに質問の前に表示されるハンドルバーアイコンを使用して、質問の順序を変更することができます。
- それぞれのユーザークエリは、子クエリを設定することができます。子質問は、親質問が実行されて回答された場合にのみ実行することができます。子クエリを追加するには、カーソルを合わせたときに質問の横に表示される+アイコンを使用します。
- 応答はチャネル固有およびJava Scriptの書式設定にすることができます。カーソルを合わせたときに応答の横に表示される設定(歯車アイコン)をクリックすると、応答の管理ウィンドウが開きます。以下をご確認ください。
- すべてのチャネルに表示されるデフォルトのメッセージを指定します。
- チャネル固有の応答:
- +応答の追加をクリックします。
- 新しいプロンプトメッセージをクリックします。
- チャネルを選択します。
- 詳細設定モードを使用して、標準テキストまたはJava Scriptで応答を入力します。該当する場合は、テンプレートを選択します。(メッセージの書式設定の詳細については、こちらを参照してください)
- 保存します。
設定
スモールトークグループ上にカーソルを合わせた場合、以下のオプションがあります。
- グループを削除します。
- 設定オプションを使用して、以下のことが行えます。
- スモールトークグループで使用される変数名空間を関連付けることにより、変数名前空間を管理(バージョン8.0で導入)します。このオプションは、変数名前空間がBotに対して有効になっている場合にのみ表示されます。詳細については、名前空間の管理を参照してください。
スモールトークのコンテキスト
(リリース8.0で導入)
リリース8.0以降では、ユーザーの発話パターンの定義において必要な情報をマークできるようになり、そしてそれがコンテキストで利用できるようになりました。NL分析の下にスモールトークと呼ばれる新しいセクションが導入され、現在進行中のスモールトークのコンテキスト情報が保存されます。この情報を利用して、スモールトークメッセージをパーソナライズすることができます。
- アンダースコア「_」を含めることでユーザー入力パターンのセクションをマークすると、必要な情報を示すことができます。例えば、「I am from _~location Where are you from?」を使用して、ユーザーの発話から場所を取得することができます。
- この情報はスモールトークのコンテキストに保存され、
context.smallTalk.matchData._0
を使用してアクセスすることができるようになります。JSONの構造は以下の通りです。{ "pattern": "I am from _~location Where are you from?", "matchData": { "_0": "chicago" }, "previousMatchData": [] }
- 同じユーザ入力に複数のパターントークンを定義して保存することができ、それらは位置カウント変数(_0、_1、_2など)を使用してアクセスすることができます。これらは位置コンテンツを取得するため、任意のトークンがユーザーの発話から欠落している場合、連続していない場合があります。
例えば、「how is the _[ climate temperature ] { at _~location } ~time」のパターンを考えてみましょう。
- ケース1:
- ユーザーの発話:「how is the temperature at London today」
- コンテキスト:
{ "pattern": "how is the _[ climate temperature ] { at _~location } ~time", "matchData": { "_0": "temperature" "_1": "London" "_2": "today" }, "previousMatchData": [] }
- ケース2:
- ユーザーの発話:「how is the climate today」
- コンテキスト:
{ "pattern": "how is the _[ climate temperature ] { at _~location } ~time", "matchData": { "_0": "climate" "_2": "today" }, "previousMatchData": [] }
- ケース1:
- コンテキストには、
context.smallTalk.previousMatchData[i].matchData._0
を使用してpreviousMatchedData配列の下の子ノードからアクセスできます。変数iは、親レベルに基づいて0、1、および2のインデックス値を取ります。
親スモールトークコンテキストのJSON構造は以下のようになります。{ "pattern": "That is nice", "matchData": {}, "previousMatchData": [ { "pattern": "I am from _~location Where are you from?", "matchData": { "_0": "chicago" } }, { "pattern": "That is far.", "matchData": {} } ] }
- 以下のシナリオのいずれかが発生するまでコンテキストは持続します。
- セッションの終了
- 新しい一次スモールトークインテントの検出
- スモールトーク以外のインテントの発動
トレーニング
スモールトークに変更を加えた後、Botがスモールトークを取得するためのトレーニングを行う必要があります。スモールトーク編集画面のトレーニングボタンを使用して、Botをトレーニングします。
注:スモールトークファイルをインポートすると、自動的にトレーニングが開始されます。
注意事項
- スモールトークでは、3つのレベルの子ノードのみが許可されています。子質問は、対応する親レベルの質問が前のやり取りで回答された場合にのみ識別されます。
- 質問は、グループに追加された順番で評価されます。最後に一般的なスモールトークを追加し、最初に特定のスモールトークを追加することをお勧めします(例:まず「how is your day today」を追加し、その後に「how are you」を追加します)。一次質問を追加した後、これらの順番を入れ替えることができます。
- グループも追加された順番で評価されます。
- すべてのカテゴリで最上位の質問を重複して実行することはできません。
- インテントとナレッジコレクションはスモールトークよりも優先されます。つまり、インテント(またはFAQ)とスモールトークが検出された場合、インテント(またはFAQ)が優先されます。
- 検出されたスモールトークは、ランキング及び解決の後に表示されます。
- ユニバーサルBot:
- ユーザーがユニバーサルBotの状況下にある場合、ユニバーサルBotのスモールトークが考慮されます。
- ユーザーが子Botの状況下にある場合、その子Botのスモールトークが考慮されます。ただし、対応する子Botのスモールトークが見つからない場合は、ユニバーサルBotのスモールトークが考慮されます。
- スモールトークは言語に特化したものです。お客様のBotが多言語である場合、それぞれの有効な言語でスモールトークを設計することができます。
- スモールトークの割り込み動作は、自然言語 > インテリジェンス > 割り込みの管理から以下のオプションを使って処理することができます。