IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許7561836自然言語処理のためのストップワードデータ拡張
<>
  • 特許-自然言語処理のためのストップワードデータ拡張 図1
  • 特許-自然言語処理のためのストップワードデータ拡張 図2
  • 特許-自然言語処理のためのストップワードデータ拡張 図3
  • 特許-自然言語処理のためのストップワードデータ拡張 図4
  • 特許-自然言語処理のためのストップワードデータ拡張 図5
  • 特許-自然言語処理のためのストップワードデータ拡張 図6
  • 特許-自然言語処理のためのストップワードデータ拡張 図7
  • 特許-自然言語処理のためのストップワードデータ拡張 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-26
(45)【発行日】2024-10-04
(54)【発明の名称】自然言語処理のためのストップワードデータ拡張
(51)【国際特許分類】
   G06F 16/90 20190101AFI20240927BHJP
   G06F 40/20 20200101ALI20240927BHJP
   G10L 15/10 20060101ALI20240927BHJP
【FI】
G06F16/90 100
G06F40/20
G10L15/10 500T
【請求項の数】 16
(21)【出願番号】P 2022516740
(86)(22)【出願日】2020-09-11
(65)【公表番号】
(43)【公表日】2022-11-14
(86)【国際出願番号】 US2020050407
(87)【国際公開番号】W WO2021055247
(87)【国際公開日】2021-03-25
【審査請求日】2023-08-17
(31)【優先権主張番号】62/901,203
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ ルクマン
(72)【発明者】
【氏名】ビナコタ,バラコタ・シュリニバス
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】シンガラジュ,ゴータム
【審査官】原 秀人
(56)【参考文献】
【文献】国際公開第2016/067418(WO,A1)
【文献】国際公開第2016/151698(WO,A1)
【文献】米国特許出願公開第2017/0116177(US,A1)
【文献】米国特許出願公開第2019/0280992(US,A1)
【文献】中国特許出願公開第109241533(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G10L 15/10
G06F 40/20-40/58
H04L 51/02
(57)【特許請求の範囲】
【請求項1】
方法であって、
データ処理システムにおいて、インテント分類器を、1つ以上の発話について1つ以上のインテントを特定するように訓練するための発話の訓練セットを受信することと、
前記データ処理システムが、前記発話の訓練セットをストップワードで拡張して、未解決のインテントに対応する未解決のインテントカテゴリについて、アウトドメイン発話の拡張された訓練セットを生成することとを備え、前記拡張することは、
前記発話の訓練セットから、1つ以上の発話を選択することと、
選択された発話ごとに、前記発話内の既存のストップワードを保存し、前記発話内の少なくとも1つの非ストップワードを、ストップワードのリストから選択されるストップワードまたはストップワードフレーズと置換して、アウトドメイン発話を生成することとを含み、前記方法はさらに、
前記データ処理システムが、前記発話の訓練セットと、前記アウトドメイン発話の拡張された訓練セットとを用いて、前記インテント分類器を訓練することを備える、方法。
【請求項2】
選択された発話ごとに、前記発話内の前記既存のストップワードは保存され、前記発話内の前記非ストップワードのすべてが、前記ストップワードのリストから選択される前記ストップワードまたは前記ストップワードフレーズと置換される、請求項1に記載の方法。
【請求項3】
選択された発話ごとに、前記発話内の前記既存のストップワードは保存され、前記発話内の前記非ストップワードのうちの少なくとも1つは、前記ストップワードのリストから選択される前記ストップワードまたは前記ストップワードフレーズとランダムに置換される、請求項1に記載の方法。
【請求項4】
前記発話を選択することは、前記発話の訓練セット内の前記発話の冒頭の連続するストップワードを検索することと、前記発話の訓練セット内の前記発話の前記冒頭の最も長い連続するストップワードを有する発話を選択することとを含む、請求項1~3のいずれかに記載の方法。
【請求項5】
前記発話を選択することは、前記発話の訓練セット内の前記発話の任意の場所でn個の連続するストップワードを検索することと、前記発話の任意の場所でn個の連続するストップワードを有する前記発話を選択することとを含む、請求項1~3のいずれかに記載の方法。
【請求項6】
前記発話の訓練セットを前記ストップワードで拡張することはさらに、(i)前記発話の訓練セットから前記1つ以上の発話を繰返し選択し、各発話を一回処理して、事前に定義された拡張割合に基づいて、対応する1つのアウトドメイン発話を生成すること、(ii)前記発話の訓練セットから前記1つ以上の発話を選択し、前記1つ以上の発話を複数回処理して、前記事前に定義された拡張割合に基づいて、各発話から複数のアウトドメイン発話を生成すること、または(iii)これらの任意の組合せを含む、請求項1~5のいずれかに記載の方法。
【請求項7】
前記事前に定義された拡張割合は、本来の発話と拡張された発話との割合が1:0.05~1:1である、請求項6に記載の方法。
【請求項8】
システムであって、
1つ以上のデータプロセッサと、
前記1つ以上のデータプロセッサで実行されると、前記1つ以上のデータプロセッサにアクションを行わせる命令を含む非一時的なコンピュータ読取可能ストレージ媒体とを備え、前記アクションは、
インテント分類器を、1つ以上の発話について1つ以上のインテントを特定するように訓練するための発話の訓練セットを受信することと、
前記発話の訓練セットをストップワードで拡張して、未解決のインテントに対応する未解決のインテントカテゴリについて、アウトドメイン発話の拡張された訓練セットを生成することとを含み、前記拡張することは、
前記発話の訓練セットから、1つ以上の発話を選択することと、
選択された発話ごとに、前記発話内の既存のストップワードを保存し、前記発話内の少なくとも1つの非ストップワードを、ストップワードのリストから選択されるストップワードまたはストップワードフレーズと置換して、アウトドメイン発話を生成することとを含み、前記アクションはさらに、
前記発話の訓練セットと、前記アウトドメイン発話の拡張された訓練セットとを用いて、前記インテント分類器を訓練することを含む、システム。
【請求項9】
選択された発話ごとに、前記発話内の前記既存のストップワードは保存され、前記発話内の前記非ストップワードのすべてが、前記ストップワードのリストから選択される前記ストップワードまたは前記ストップワードフレーズと置換される、請求項8に記載のシステム。
【請求項10】
選択された発話ごとに、前記発話内の前記既存のストップワードは保存され、前記発話内の前記非ストップワードのうちの少なくとも1つは、前記ストップワードのリストから選択される前記ストップワードまたは前記ストップワードフレーズとランダムに置換される、請求項8に記載のシステム。
【請求項11】
前記発話を選択することは、前記発話の訓練セット内の前記発話の冒頭の連続するストップワードを検索することと、前記発話の訓練セット内の前記発話の前記冒頭の最も長い連続するストップワードを有する発話を選択することとを含む、請求項8に記載のシステム。
【請求項12】
前記発話を選択することは、前記発話の訓練セット内の前記発話の任意の場所でn個の連続するストップワードを検索することと、前記発話の任意の場所でn個の連続するストップワードを有する前記発話を選択することとを含む、請求項8に記載のシステム。
【請求項13】
前記発話の訓練セットを前記ストップワードで拡張することはさらに、(i)前記発話の訓練セットから前記1つ以上の発話を繰返し選択し、各発話を一回処理して、事前に定義された拡張割合に基づいて、対応する1つのアウトドメイン発話を生成すること、(ii)前記発話の訓練セットから前記1つ以上の発話を選択し、前記1つ以上の発話を複数回処理して、前記事前に定義された拡張割合に基づいて、各発話から複数のアウトドメイン発話を生成すること、または(iii)これらの任意の組合せを含む、請求項8に記載のシステム。
【請求項14】
前記事前に定義された拡張割合は、本来の発話と拡張された発話との割合が1:0.05~1:1である、請求項13に記載のシステム。
【請求項15】
発話から解決済みのインテントまたは未解決のインテントを判断するための方法であって、
チャットボットシステムが、前記チャットボットシステムと対話しているユーザによって生成された発話を受信することと、
前記チャットボットシステム内で展開されるインテント分類器を用いて、前記発話を、解決済みのインテントに対応する解決済みのインテントカテゴリまたは未解決のインテントに対応する未解決インテントカテゴリに分類することとを備え、前記インテント分類器は、訓練データを用いて特定された複数のモデルパラメータを含み、前記訓練データは、
前記インテント分類器を、1つ以上の発話について1つ以上の解決済みのインテントを特定するように訓練するための発話の訓練セットと、
前記インテント分類器を、1つ以上の発話について1つ以上の未解決のインテントを特定するように訓練するためのアウトドメイン発話の拡張された訓練セットとを含み、前記アウトドメイン発話の拡張された訓練セットは、前記発話の訓練セットからの発話を含むように人工的に生成され、前記発話の訓練セットでは、前記発話内の既存のストップワードパターンが保存され、かつ、前記発話の各々における少なくとも1つの非ストップワードが、ストップワードとランダムに置換され、
前記複数のモデルパラメータは、損失関数の最小化に基づいて、前記訓練データを用いて識別され、前記方法はさらに、
前記インテント分類器を用いて、前記分類に基づいて、前記解決済みのインテントまたは前記未解決のインテントを出力することを備える、方法。
【請求項16】
請求項1~7および15のいずれかに記載の方法を一つ以上のプロセッサに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本出願は、「STOP WORD AUGMENTATION TOOL(ストップワード拡張ツール)」と題された、米国特許法第119(e)条に準拠して2019年9月16日に出願された米国仮特許出願第62/901,203号の利益および優先権を主張する非仮出願である。当該出願の開示内容全体を、すべての目的について、参照により本明細書に援用する。
【0002】
発明の分野
本開示は、一般に、チャットボットシステムに関し、より詳細には、自然言語処理におけるチャットボットシステムの訓練のためのストップワードデータ拡張技術に関する。
【背景技術】
【0003】
背景
世界中の多くのユーザは、瞬時に反応を得るために、インスタントメッセージングまたはチャットプラットフォームを利用している。組織は、顧客(またはエンドユーザ)とライブで会話するために、これらのインスタントメッセージングまたはチャットプラットフォームを使用することがよくある。しかしながら、顧客またはエンドユーザとのライブコミュニケーションにサービスマンを雇用することは、組織にとって非常にコストがかかる場合がある。特にインターネット上でエンドユーザとの会話をシミュレートするチャットボットまたはボットが開発され始めている。エンドユーザは、すでにインストールされ使用されているメッセージングアプリを通じて、ボットとコミュニケーションをとることができる。一般に人工知能(AI)で動作するインテリジェントボットは、ライブの会話においてよりインテリジェントで文脈に沿ったコミュニケーションが可能であるため、ボットとエンドユーザとの間でより自然な会話を行い、会話体験を改善することができる可能性がある。エンドユーザが、ボットが応答する方法を知っている一定のキーワードまたはコマンドのセットを学習する代わりに、インテリジェントボットは、自然言語でのユーザの発話に基づいてエンドユーザの意図を理解し、それに応じて応答することができる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、チャットボット自動化ソルーションには、特定の分野の具体的な知識および特定の技術の応用が必要であり、これらは専門の開発者でなければできないことがあるため、チャットボットの構築は困難である。このようなチャットボットの構築の一環として、開発者はまず、企業およびエンドユーザのニーズを理解しなければならない場合がある。開発者は次に、たとえば、分析に使用するデータセットの選択、分析のための入力データセットの準備(たとえば、データのクレンジング、分析前のデータの抽出、フォーマット化、および/または変換、データ特徴エンジニアリングの実行など)、分析を行うための適切な機械学習(ML)技術(複数可)またはモデル(複数可)の特定、およびフィードバックに基づいて結果/成果を改善するための技術またはモデルの改善に関連して、分析および意思決定を行ってもよい。適切なモデルを特定する作業は、場合によっては並行して複数のモデルを開発し、これらのモデルを用いて繰返しテストし、実験し、その後、使用する特定のモデル(1つまたは複数)を特定することを含む場合がある。さらに、教師あり学習ベースのソリューションは、一般的に、トレーニング段階、それに続く応用(すなわち、推論)段階、およびトレーニング段階と応用段階との間の反復ループとを含む。開発者は、最適なソリューションを実現するために、これらの段階を注意深く実現し、監視する責任を負うことがある。たとえば、ML技術(複数可)またはモデル(複数可)を訓練するためには、アルゴリズムが特定のパターンまたは特徴(たとえば、チャットボットの場合、生の言語処理だけでなく、インテント抽出および注意深い構文解析)を理解し学習できるように、正確な訓練データが必要であり、そのような訓練データは、ML技術(複数可)またはモデル(複数可)が望ましい成果(たとえば、発話からのインテントの推測)を予測するために使用される。ML技術(複数可)またはモデル(複数可)が確実にこれらのパターンおよび特徴を適切に学習するために、開発者はML技術(複数可)またはモデル(複数可)用の訓練データのセットを選択し、充実させ、最適化する責任を負う場合がある。
【0005】
簡潔な概要
本明細書で開示される技術は、一般的にチャットボットに関する。より具体的には、これらに限定されないが、本明細書に開示される技術は、自然言語処理においてチャットボットシステムを訓練するための訓練データのセットのストップワードデータ拡張のための技術に関連する。チャットボットは、ユーザの発話を、ユーザの事前に定義されたインテントなど、異なるクラスに分類することができる。チャットボットの分類器は、入力(たとえば、ユーザの発話)に基づいて出力(たとえば、インテント)を生成する、訓練されたMLモデルを含み得る。訓練されたMLモデルを訓練するために使用される訓練データが適切でない場合、チャットボットは、より頻繁に不正確なインテントを判断する可能性がある。本明細書に開示される技術は、MLモデルがストップワード内のパターンを選ぶために停止され、かつ、インテントのパターンまたは境界をより正確に学習するように、MLモデルを訓練するためのストップワード拡張データセットを提供し得る。本明細書では、方法、システム、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を格納する非一時的なコンピュータ読取可能ストレージ媒体などを含む、さまざまな実施形態について説明する。
【課題を解決するための手段】
【0006】
さまざまな実施形態では、コンピュータによって実現される方法が提供され、方法は、データ処理システムにおいて、インテント分類器を、1つ以上の発話について1つ以上のインテントを特定するように訓練するための発話の訓練セットを受信することと、データ処理システムが、発話の訓練セットをストップワードで拡張して、未解決のインテントに対応する未解決のインテントカテゴリについて、アウトドメイン発話の拡張された訓練セットを生成することとを備え、拡張することは、発話の訓練セットから1つ以上の発話を選択することと、選択された発話ごとに、発話内の既存のストップワードを保存し、発話内の少なくとも1つの非ストップワードを、ストップワードのリストから選択されるストップワードまたはストップワードフレーズと置換して、アウトドメイン発話を生成することとを含み、方法はさらに、データ処理システムが、発話の訓練セットとアウトドメイン発話の拡張された訓練セットとを用いて、インテント分類器を訓練することを備える。
【0007】
いくつかの実施形態では、選択された発話ごとに、発話内の既存のストップワードは保存され、発話内の非ストップワードのすべてが、ストップワードのリストから選択されるストップワードまたはストップワードフレーズと置換される。
【0008】
いくつかの実施形態では、選択された発話ごとに、発話内の既存のストップワードは保存され、発話内の非ストップワードのうちの少なくとも1つは、ストップワードのリストから選択されるストップワードまたはストップワードフレーズとランダムに置換される。
【0009】
いくつかの実施形態では、発話を選択することは、発話の訓練セット内の発話の冒頭の連続するストップワードを検索することと、発話の訓練セット内の発話の冒頭の最も長い連続するストップワードを有する発話を選択することとを含む。
【0010】
いくつかの実施形態では、発話を選択することは、発話の訓練セット内の発話の任意の場所でn個の連続するストップワードを検索することと、発話の任意の場所でn個の連続するストップワードを有する発話を選択することとを含む。
【0011】
いくつかの実施形態では、発話の訓練セットをストップワードで拡張することはさらに、(i)発話の訓練セットから1つ以上の発話を繰返し選択し、各発話を一回処理して、事前に定義された拡張割合に基づいて、対応する1つのアウトドメイン発話を生成すること、(ii)発話の訓練セットから1つ以上の発話を生成し、1つ以上の発話を複数回処理して、事前に定義された拡張割合に基づいて、各発話から複数のアウトドメイン発話を生成すること、または(iii)これらの任意の組合せを含む。
【0012】
いくつかの実施形態では、事前に定義された拡張割合は、本来の発話と拡張された発話との割合が1:0.05~1:1である。
【0013】
さまざまな実施形態では、コンピュータによって実現される方法が提供され、方法は、チャットボットシステムが、チャットボットシステムと対話しているユーザによって生成された発話を受信することと、チャットボットシステム内で展開されるインテント分類器を用いて、発話を、解決済みのインテントに対応する解決済みのインテントカテゴリまたは未解決のインテントに対応する未解決インテントカテゴリに分類することとを備え、インテント分類器は、訓練データを用いて特定された複数のモデルパラメータを含み、訓練データは、インテント分類器を、1つ以上の発話について1つ以上の解決済みのインテントを特定するように訓練するための発話の訓練セットと、インテント分類器を、1つ以上の発話について1つ以上の未解決のインテントを特定するように訓練するためのアウトドメイン発話の拡張された訓練セットとを含み、アウトドメイン発話の拡張された訓練セットは、発話の訓練セットからの発話を含むように人工的に生成され、発話の訓練セットでは、発話内の既存のストップワードパターンが保存され、かつ、発話の各々における少なくとも1つの非ストップワードがストップワードとランダムに置換され、複数のモデルパラメータは、損失関数の最小化に基づいて、訓練データを用いて識別され、方法はさらに、インテント分類器を用いて、分類に基づいて、解決済みのインテントまたは未解決のインテントを出力することを備える。
【0014】
さまざまな実施形態では、1つ以上のデータプロセッサと、命令を含む非一次的なコンピュータ読取可能ストレージ媒体とを備えるシステムが提供され、命令は、1つ以上のデータプロセッサで実行されると、1つ以上のデータプロセッサに、本明細書で開示される1つ以上の方法の一部または全てを実行させる。
【0015】
さまざまな実施形態では、コンピュータプログラム製品が提供され、コンピュータプログラム製品は、非一時的な機械読取可能ストレージ媒体で有形に具体化され、かつ、1つ以上のデータプロセッサに、本明細書で開示される1つ以上の方法の一部または全てを実行させるように構成された命令を含む。
【0016】
本開示のいくつかの実施形態は、1つ以上のデータプロセッサを備えるシステムを備える。いくつかの実施形態では、システムは、命令を含む非一時的なコンピュータ読取可能ストレージ媒体を備え、命令は、1つ以上のデータプロセッサで実行されると、1つ以上のデータプロセッサに、本明細書で開示される1つ以上の複数の方法の一部もしくはすべて、および/または、1つ以上のプロセスの一部もしくはすべてを行わせる。本開示のいくつかの実施形態は、非一時的な機械読取可能ストレージ媒体において有形に具体化されるコンピュータプログラム製品を備え、非一時的な機械読取可能ストレージ媒体は、1つ以上のデータプロセッサに、本明細書で開示される1つ以上の方法の一部もしくはすべて、および/または1つ以上のプロセスの一部もしくはすべてを行わせるように構成された命令を含む。
【0017】
上述のおよび後述する技術は、多くの方法および多くの文脈で実施され得る。実装例およびコンテキストのいくつかの例が、より詳細に後述するように、以下の図を参照して提供される。しかしながら、以下の実装例およびコンテキストは、多くの実装例およびコンテキストのうちのいくつかに過ぎない。
【図面の簡単な説明】
【0018】
図1】例示的な実施形態を組込んだ分散環境を示す簡略化されたブロック図である。
図2】特定の実施形態に係る、マスターボットを実現するコンピューティングシステムを示す簡略化されたブロック図である。
図3】特定の実施形態に係る、スキルボットを実現するコンピューティングシステムを示す簡略化されたブロック図である。
図4】さまざまな実施形態に係る、チャットボットの訓練および展開システムを示す簡略化されたブロック図である。
図5】さまざまな実施形態に係る、訓練データセットをストップワードで拡張するためのプロセスフローを示す図である。
図6】さまざまな実施形態を実施するための分散システムを示す簡略化された図である。
図7】さまざまな実施形態に従って、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスが、クラウドサービスとして提供され得るシステム環境の1つ以上のコンポーネントを示す、簡略化されたブロック図である。
図8】さまざまな実施形態を実施するために使用され得るコンピュータシステムの例を示す図である。
【発明を実施するための形態】
【0019】
詳細な説明
以下の説明では、説明の便宜上、特定の実施形態を十分に理解するために、具体的な詳細について説明する。しかしながら、さまざまな実施形態は、これらの具体的な詳細なしに実施され得ることが明らかであろう。図および説明は、限定的であることを意図していない。「例示的」という単語は、本明細書では、「例、事例、または説明として機能する」という意味で使用されている。本明細書において「例示的」であると説明される任意の実施形態または設計は、必ずしも、他の実施形態もしくは設計よりも好ましい、または有利であると解釈されるべきではない。
【0020】
序論
デジタルアシスタントは、自然言語による会話でユーザのさまざまなタスクの達成を支援する、人工知能駆動型インターフェイスである。デジタルアシスタントごとに、顧客は1つまたは複数のスキルをアセンブル可能である。スキル(本明細書では、チャットボット、ボット、またはスキルボットとも記載する)は、在庫の追跡、タイムカードの提出、および経費報告書の作成など、特定のタイプのタスクに焦点を合わせた個々のボットである。エンドユーザがデジタルアシスタントに関与すると、デジタルアシスタントは、エンドユーザの入力を評価し、適切なチャットボットとの間で会話をルーティングする。デジタルアシスタントは、FACEBOOK(登録商標)メッセンジャー、SKYPE MOBILE(登録商標)メッセンジャー、ショートメッセージサービス(SMS)など、さまざまなチャネルを通じてエンドユーザが利用可能である。チャネルは、さまざまなメッセージングプラットフォーム上のエンドユーザからデジタルアシスタントとそのさまざまなチャットボットに対して、チャットを前後に運ぶ。チャネルは、ユーザエージェントのエスカレーション、イベント開始時の会話、およびテストもサポート可能である。
【0021】
インテントにより、チャットボットは、ユーザがチャットボットに何を望んでいるかを理解することができる。インテントは、典型的なユーザのリクエストおよびステートメントの順列で構成され、これらは発話とも呼ばれる(たとえば、口座残高を得る、購入する、など)。本明細書で使用する場合、発言またはメッセージは、チャットボットとの会話中に交わされる一連の単語(たとえば、1つまたは複数の文)を指す場合がある。インテントは、あるユーザアクション(たとえば、ピザの注文)を例示する名前を提供し、アクションのトリガに一般的に関連する現実のユーザステートメントまたは発話のセットをコンパイルすることによって、作成され得る。チャットボットの認知はこれらのインテントから導かれるため、各インテントは、チャットボットが曖昧なユーザ入力を解釈できるように、堅牢で多様なデータセット(1~20個の発話)から作成される場合がある。豊富な発話のセットによって、チャットボットが「この注文を忘れてください。」または「配送をキャンセルしてください。」といったメッセージ―同じことを意味するが異なる表現がされているメッセージ―を受信したときに、ユーザが何を望んでいるかを理解できるようになる。インテントおよびそれらに属する発言はまとめて、チャットボット用の訓練コーパスを構成する。このコーパスを用いてモデルを訓練することで、顧客は基本的に、このモデルを、エンドユーザの入力を1つのインテントに解決するためのリファレンスツールとすることができる。顧客は、インテントのテストおよびインテント・訓練を繰返すことで、チャットボットの認識力を向上させることができる。
【0022】
しかしながら、ユーザの発話に基づいてエンドユーザのインテントを判断できるチャットボットを構築することは、一つには自然言語の微妙さおよび曖昧さ、ならびに入力空間(たとえば、可能なユーザの発話)の次元、ならびに出力空間(インテントの数)の大きさなどが原因で、困難な作業である。そのため、チャットボットのパフォーマンスおよびチャットボットを使用するユーザ体験を向上させるために、チャットボットの訓練、監視、デバッグ、および再訓練を行わなければならない場合がある。従来のシステムでは、音声言語理解(SLU)および自然言語処理(NLP)におけるデジタルアシスタントまたはチャットボットの機械学習モデルを訓練および再訓練するための訓練システムが提供されている。従来、チャットボットシステムに使用されるモデルは、任意のインテントのための「製造された」発話を使用してNLPで訓練される。たとえば、「価格を変更しますか。」という発話を使用して、チャットボットシステムの分類器モデルを、この種類の発話をインテント―「プライスマッチを行いますか。」―として分類するように訓練可能である。製造された発話を用いたモデルの訓練は、サービスを提供するためのチャットボットシステムの初期訓練に役立ち、その後、チャットボットシステムが展開され、ユーザから実際の発話を得るようになると、再訓練可能になる。
【0023】
テキスト分類のための従来のモデルの訓練は、あらかじめラベル付けされたデータから開始される。ラベル付けされたデータを得るためのオプションの1つは、各テキストを手動で読み、テキストを分類する(たとえば、発話をインテントとして分類する)ことによって、すべてのデータ自体に注釈を施すことである。また、データラベリングを専門とするフリーランサーまたは企業にラベリングを委託する選択肢もある。いずれの選択肢も、時間的・金銭的にコストがかかる。画像解析などの類似技術領域でこの問題を克服するために、画像分類タスクの画像データセットサイズを増大させ、ラベリング処理を高速化するデータ拡張が行われている。画像には、回転、小さな並進移動、加法的ガウスノイズなどの自然な拡張プリミティブがあるが、テキストデータについては同様のプリミティブがあまり開発されていない。たとえば、テキストベースのデータ拡張では、クラスラベルを維持したまま入力データを変更する必要がある。拡張アプローチによって、発話(たとえば、文またはフレーズ)の意味が大幅に変更される場合、元のクラスラベルはもはや有効でない可能性がある。したがって、テキスト用に開発された従来の拡張プリミティブは、文またはフレーズの元のクラスラベルを維持するために、各文に存在する単語(たとえば、同義語置換、同義語によるランダム挿入、ランダムスワップ、ランダム削除など)および文またはフレーズの長さに着目する。しかしながら、これらのアプローチは、複数の言語で多くの異なるタスクのために訓練された多くのチャットボットシステムを採用し、タスクごとに多種多様な発話(それらの多くは非常に短い発話)を受信している企業システムに対して実現することが困難な場合がある。このようなチャットボットを採用したシステムでは、多くの異なるチャットボットのために複数の言語で訓練データの大規模なコーパスを迅速かつ効率的に生成するために、合成にとらわれない態様で拡張を自動的に適用する必要がある。
【0024】
したがって、これらの問題に対処するために、異なるアプローチが必要である。さまざまな実施形態において、1つ以上の発話について1つ以上のインテントを特定するためのインテント分類器を訓練するための発話の訓練セットを受信することと、発話の訓練セットをストップワードテキストで拡張して、テキストデータの拡張された訓練セットを得ることとを備える方法が提供される。拡張することは、未解決のインテントに対応する未解決のインテント・カテゴリについての発話セットを生成することを含み、発話セットは発話の訓練セットからの発話を含み、既存のストップワードパターンが保存され、発話セット内の少なくとも1つの非ストップワードがストップワードにランダムに置換される。コンピュータによって実現される方法はさらに、テキストデータの拡張された訓練セットを用いて、インテント分類器を訓練することを含む。
【0025】
ボットおよび分析システム
ボット(スキル、チャットボット、チャッターボット、トークボットとも呼ばれる)は、エンドユーザと会話を行うことができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを使用するメッセージングアプリケーションを通じて、自然言語メッセージ(たとえば、質問またはコメント)に応答することができる。企業は、1つまたは複数のボットシステムを使用して、メッセージングアプリケーションを通じてエンドユーザと通信可能である。チャネルと呼ばれることがあるメッセージングアプリケーションは、エンドユーザが既にインストールし、精通している、エンドユーザが好むメッセージングアプリケーションでもよい。したがって、エンドユーザは、ボットシステムとチャットするために、新しいアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、たとえば、オーバーザトップ(OTT)メッセージングチャネル(Facebook Messenger,Facebook WhatsApp,WeChat,Line1,Kik,Telegram,Talk,Skype,SlackもしくはSMSなど)、仮想プライベートアシスタント(Amazon Dot,EchoもしくはShow,Google Home,Apple HomePodなど)、ネイティブもしくはハイブリッド/レスポンシブモバイルアプリまたはウェブアプリケーションをチャット機能で拡張するモバイルおよびウェブアプリの拡張、または音声ベースの入力(Siri(登録商標),Cortana,Google Voiceもしくはその他の音声入力を使用して対話するインターフェイスを有するデバイスまたはアプリなど)を含み得る。
【0026】
例によっては、ボットシステムは、URI(Uniform Resource Identifier)と関連付けられている場合がある。URIは、文字列を使用してボットシステムを特定してもよい。URIは、1つまたは複数のメッセージングアプリケーションシステムのウェブフックとして使用されてもよい。URIは、たとえば、URL(Uniform Resource Locator)またはURN(Uniform Resource Name)を含み得る。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(たとえば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計されてもよい。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられることがある。いくつかの実施形態では、メッセージは、HTTPポストコールメッセージと異なる場合がある。たとえば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信してもよい。本明細書における議論は、ボットシステムがメッセージとして受信する通信に言及することがあるが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の他のタイプの通信でもよいことを理解されたい。
【0027】
エンドユーザは、人間同士の対話と同じように、会話型の対話(会話型ユーザインターフェイス(UI)と呼ばれることもある)を通じて、ボットシステムと対話してもよい。場合によっては、対話は、エンドユーザがボットに「こんにちは」と言うことと、ボットが「やあ」と応答し、エンドユーザにどのように助けることができるかを尋ねることとを含み得る。また、場合によっては、対話は、たとえば、ある口座から別の口座への送金などの、銀行ボットとの取引対話、たとえば、休暇残高の確認などの人事ボットとの情報に関する対話、または、たとえば、購入商品の返品について議論する、もしくは技術サポートを求めたるといった、小売ボットとの対話でもよい。
【0028】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザとの対話をインテリジェントに処理し得る。たとえば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つまたは複数のメッセージを送信してもよい。メッセージは、テキスト、絵文字、音声、画像、映像、またはメッセージを伝達する他の方法などの特定のコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(たとえば、適切なパラメータを有する企業サービスに対するREST(representational state transfer)呼出し)に変換し、自然言語応答を生成してもよい。ボットシステムは、追加の入力パラメータをエンドユーザに促す、または他の追加情報を要求してもよい。いくつかの実施形態では、ボットシステムは、エンドユーザの発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。本明細書に記載されるのは、ボットシステムの明示的な呼出しを特定し、呼出されるボットシステムの入力を判断するためのさまざまな技術である。特定の実施形態において、明示的な呼出しの分析は、発話中の呼出し名を検出することに基づいて、マスターボットによって実行される。呼出し名の検出に応答して、発言は、呼出し名に関連付けられたスキルボットへの入力のために洗練され得る。
【0029】
ボットとの会話は、複数の状態を含む特定の会話フローに従い得る。フローは、入力に基づいて、次に何が起こるかを定義してもよい。いくつかの実施形態では、ユーザ定義の状態(たとえば、エンドユーザのインテント)および状態においてまたは状態から状態へのアクションを含む状態マシンが、ボットシステムを実現するために使用されてもよい。会話は、エンドユーザ入力に基づいて異なる経路をとることがあり、これは、ボットがフローについて行う判断に影響を与えることがある。たとえば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、次に取るべき適切なアクションを判断するために、エンドユーザのインテントを判断してもよい。本明細書および発話の文脈で使用されるように、「インテント」という用語は、発話を提供したユーザのインテントを指す。たとえば、ユーザは、ピザを注文するためにボットを会話に参加させるよう意図することができるため、ユーザのインテントは、「ピザを注文する」という発話を通じて表すことができる。ユーザのインテントは、ユーザがチャットボットにユーザの代わりに実行することを望む特定のタスクに向けることができる。したがって、発話は、ユーザのインテントを反映する質問、コマンドおよびリクエストなどのフレーズであり得る。インテントは、エンドユーザが達成したい目標を含み得る。
【0030】
チャットボットの構成の文脈で、ユーザの発話をチャットボットが実行可能な特定のタスク/アクション、またはタスク/アクションのカテゴリにマッピングするための構成情報を指すために、本明細書では「インテント」を使用する。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、本明細書では、後者を「ボットのインテント」と称することがある。ボットのインテントは、インテントに関連付けられた1つ以上の発話のセットから構成されてもよい。たとえば、ピザを注文するためのインテントには、ピザを注文したいという願望を表すさまざまな順列の発話があり得る。これらの関連付けられた発話は、チャットボットのインテント分類器を訓練するために使用することができ、インテント分類器は、その後、ユーザからの入力発話がピザ注文インテントに一致するかどうかを判断することが可能になる。ボットインテントは、ユーザとの会話を開始するための1つ以上のダイアログフローと、特定の状態で関連付けられることがある。たとえば、ピザ注文インテントの最初のメッセージは、「どのような種類のピザをご希望ですか。」という質問であり得る。関連付けられた発話に加えて、ボットインテントはさらに、インテントに関連する名前付きエンティティを含み得る。たとえば、ピザ注文インテントは、ピザを注文するタスクを実行するために使用される変数またはパラメータ、たとえば、トッピング1、トッピング2、ピザタイプ、ピザサイズおよびピザ数量などを含むことができる。エンティティの値は、通常、ユーザとの会話を通じて取得される。
【0031】
図1は、特定の実施形態に係るチャットボットシステムを組込んだ環境100を示す、簡略化されたブロック図である。環境100は、デジタルアシスタントビルダープラットフォーム(DABP)102を含み、DABP102は、そのユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。たとえば、図1に示すように、特定の企業を表すユーザ104が、DABP102を使用して、当該特定の企業のユーザのためのデジタルアシスタント106を作成および展開することができる。たとえば、DABP102は、銀行が、銀行の顧客が使用するための1つまたは複数のデジタルアシスタントを作成するために使用することができる。同じDABP102プラットフォームは、デジタルアシスタントを作成するために、複数の企業によって使用され得る。別の例として、レストラン(たとえば、ピザ屋)のオーナーは、DABP102を使用して、レストランの客が食べ物を注文(たとえば、ピザを注文)することを可能にするデジタルアシスタントを作成および展開することができる。
【0032】
本開示の目的で、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語の会話を通じてさまざまなタスクを達成するのを支援するエンティティである。デジタルアシスタントは、ソフトウェアのみを用いて(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)、ハードウェアを用いて、またはハードウェアとソフトウェアとの組合せを用いて、実現することができる。デジタルアシスタントは、コンピュータ、携帯電話、時計、家電製品、および車両など、さまざまな物理的システムまたは装置において具体化または実現され得る。また、デジタルアシスタントは、チャットボットシステムと呼ばれることもある。したがって、本開示の目的で、デジタルアシスタントおよびチャットボットシステムという用語は、交換可能である。
【0033】
DABP102を使用して構築されたデジタルアシスタント106などのデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介してさまざまなタスクを実行するために使用することができる。会話の一部として、ユーザは、1つまたは複数のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を返してもらうことができる。会話は、入力110と応答112とのうちの1つ以上を含み得る。これらの会話を介して、ユーザは、デジタルアシスタントによって実行されるべき1つ以上のタスクを要求することができ、これに応答して、デジタルアシスタントは、ユーザが要求したタスクを実行し、ユーザに対して適切な応答を返すように構成されている。
【0034】
ユーザ入力110は、一般に自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト断片、または1つの単語をタイプしてデジタルアシスタント106に入力として提供する場合など、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うまたは話すときのような、音声入力または音声形式であり得る。発話は、典型的には、ユーザ108が話す言語である。たとえば、発話は英語でもよい、または他の言語でもよい。発話が音声形式であるとき、音声入力は、その特定の言語におけるテキスト形式の発話に変換され、テキスト発話は、次に、デジタルアシスタント106によって処理される。さまざまな音声からテキストへの処理技術が、音声またはオーディオ入力をテキスト発話に変換するために使用されてもよく、このテキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われてもよい。
【0035】
テキスト発話または音声発話でもよい発話は、断片、文、複数の文、1つ以上の単語、1つ以上の質問、および前述のタイプの組合せなどでもよい。デジタルアシスタント106は、自然言語理解(NLU)技術を発話に適用して、ユーザ入力の意味を理解するように構成されている。発話のNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成されており、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを特定することを含む。発話の意味を理解すると、デジタルアシスタント106は、理解された意味もしくはインテントに応答する1つ以上のアクションまたはオペレーションを実行することができる。本開示の目的で、発話は、デジタルアシスタント106のユーザ108によって直接提供されたテキスト発話である、または、入力音声発話のテキスト形式への変換の結果であると仮定される。しかしながら、これは、いかなる方法においても、限定的または限定的であることを意図していない。
【0036】
たとえば、ユーザ108の入力は、「ピザを注文したいです。」などの発話を提供することによって、ピザの注文を要求することができる。このような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るように構成されている。適切なアクションは、たとえば、ユーザが注文を希望するピザの種類、ピザのサイズ、およびピザの任意のトッピングなどに関するユーザ入力を要求する質問でユーザに応答することを含み得る。また、デジタルアシスタント106によって提供される応答は、自然言語形式でもよく、典型的には入力発話と同じ言語でもよい。これらの応答を生成する一環として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ピザを注文するユーザの場合、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザの注文に必要なすべての情報を提供するようにユーザを誘導し、会話の最後に、ピザを注文させることができる。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0037】
概念的なレベルでは、デジタルアシスタント106は、ユーザから受信した発話に応答してさまざまな処理を実行する。いくつかの実施形態では、この処理は、たとえば、入力された発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行されるべきアクションを判断すること、必要に応じてアクションを実行させること、ユーザの発話に応答してユーザに出力すべき応答を生成すること、および応答をユーザに出力すること等を含む、一連のまたはパイプラインの処理ステップを含む。NLU処理は、受信した入力発話を構文解析して、発話の構造および意味を理解すること、発話を洗練および改編して、発話についてより理解しやすい形式(たとえば、論理形式)または構造を開発することを含み得る。応答を生成することは、NLG技術を使用することを含み得る。
【0038】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文の構文解析(たとえば、トークン化、見出し語化、文の品詞タグの識別、文中の名前付きエンティティの識別、文構造を表すための依存性ツリーの生成、文の節への分割、個々の節の分析、前方照応解決、およびチャンク化の実行など)等のさまざまなNLP関連処理を含み得る。特定の実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、NLU処理の一部を実行するために他のリソースを使用することができる。たとえば、入力発話文の構文および構造は、パーサ、品詞タグ付け装置、および/または名前付きエンティティ認識装置を用いて文を処理することによって識別されてもよい。ある実現例では、英語の場合、スタンフォード自然言語処理(NLP)グループが提供するもののようなパーサ、品詞タグ付け装置、および名前付きエンティティ認識装置が、文の構造および構文を分析するために使用される。これらは、Stanford CoreNLP toolkitの一部として提供されている。
【0039】
本開示で提供されるさまざまな例では英語での発話が示されているが、これは例であると意図されているにすぎない。特定の実施形態では、デジタルアシスタント106は、英語以外の言語での発話を処理することも可能である。デジタルアシスタント106は、異なる言語に対する処理を実行するために構成されたサブシステム(たとえば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを使用して呼出すことができる、プラグイン可能なユニットとして実現されてもよい。これにより、処理を異なる順序にするなど、NLUの処理が言語ごとに柔軟かつ拡張可能になる。個々の言語について言語パックが提供されてもよく、言語パックは、NLUコアサーバから提供可能なサブシステムのリストを登録することができる。
【0040】
図1に示されたデジタルアシスタント106などのデジタルアシスタントは、特定のアプリケーションを介して、ソーシャルメディアプラットフォームを介して、さまざまなメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネルなどのさまざまな異なるチャネルを通じて、そのユーザ108に利用可能またはアクセス可能にすることができるが、これらに限定されるわけではない。単一のデジタルアシスタントが、異なるサービス上で実行され、異なるサービスによって同時にアクセスされるように、そのために構成されたいくつかのチャネルを有することができる。
【0041】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含む、またはそれらに関連付けられている。特定の実施形態では、これらのスキルは、ユーザと対話し、在庫追跡、タイムカード提出、経費報告書作成、食品注文、銀行口座確認、予約、およびウィジェット購入など、特定のタイプのタスクを果たすように構成されている個々のチャットボット(スキルボットと呼ばれる)である。たとえば、図1に示された実施形態の場合、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1および116-2などを含む。本開示の目的で、「スキル」および「複数のスキル」という用語は、それぞれ「スキルボット」および「複数のスキルボット」という用語と同義に使用されている。
【0042】
デジタルアシスタントに関連付けられた各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを支援し、会話は、ユーザが提供するテキストまたは音声入力と、スキルボットが提供する応答との組合せを含み得る。これらの応答は、ユーザに対するテキストもしくは音声メッセージの形態でもよく、および/または、ユーザが選択を行うためにユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を使用してもよい。
【0043】
スキルまたはスキルボットをデジタルアシスタントに関連付けまたは追加できる態様は、さまざまである。いくつかの事例では、スキルボットは、企業によって開発され、その後、DABP102を使用してデジタルアシスタントに追加可能である。他の事例では、スキルボットは、DABP102を使用して開発および作成され、次いで、DABP102を使用して作成されたデジタルアシスタントに追加可能である。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と称される)を提供する。スキルストアを通じて提供されるスキルは、さまざまなクラウドサービスを公開することもできる。DABP102を使用して生成されているデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択したスキルをDABP102を使用して生成されるデジタルアシスタントに追加するように指示することが可能である。スキルストアからのスキルは、そのまま、または修正された形態でデジタルアシスタントに追加することができる(たとえば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択しクローン化し、選択したスキルボットに対してカスタマイズまたは修正を行い、次に、修正したスキルボットをDABP102を使用して作成されるデジタルアシスタントに追加することができる)。
【0044】
デジタルアシスタントまたはチャットボットシステムを実現するために、さまざまな異なるアーキテクチャが使用されてもよい。たとえば、特定の実施形態では、DABP102を使用して作成および展開されたデジタルアシスタントは、マスターボット/子(もしくはサブ)ボットのパラダイムまたはアーキテクチャを使用して実現され得る。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つまたは複数の子ボットと対話するマスターボットとして実現される。たとえば、図1に示された実施形態では、デジタルアシスタント106は、マスターボット114と、マスターボット114の子ボットであるスキルボット116-1,116-2等を含む。特定の実施形態では、デジタルアシスタント106は、それ自体がマスターボットとして機能すると考えられる。
【0045】
マスターボット-子ボット・アーキテクチャに従って実現されたデジタルアシスタントは、デジタルアシスタントのユーザが統一されたユーザインターフェイス、すなわちマスターボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントと関わるとき、ユーザ入力はマスターボットによって受信される。次に、マスターボットは、ユーザ入力発話の意味を判断するための処理を実行する。次に、マスターボットは、ユーザが発話で要求したタスクがマスターボット自体で処理できるかどうかを判断し、そうでなければ、マスターボットは、ユーザのリクエストを処理するのに適したスキルボットを選択し、選択したスキルボットに会話をルーティングする。これにより、ユーザは、共通の単一インターフェイスを介してデジタルアシスタントと会話することができ、かつ、特定のタスクを実行するように構成された複数のスキルボットを使用する能力を提供することができる。たとえば、企業向けに開発されたデジタルアシスタントの場合、デジタルアシスタントのマスターボットは、顧客関係管理(CRM)に関する機能を実行するためのCRMボット、企業資源計画(ERP)に関する機能を実行するためのERPボット、人材管理(HCM)に関する機能を実行するためのHCMボットなど、特定の機能を有するスキルボットとインターフェイス接続を行うことが可能である。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通のマスターボットインターフェイスを介してデジタルアシスタントにアクセスする方法だけを知っていればよく、舞台裏では、ユーザのリクエストを処理するために複数のスキルボットが提供されている。
【0046】
特定の実施形態では、マスターボット/子ボットインフラストラクチャにおいて、マスターボットは、スキルボットの利用可能なリストを認識するように構成されている。マスターボットは、さまざまな利用可能なスキルボットを特定するメタデータ、およびスキルボットごとに、スキルボットによって実行可能なタスクを含むスキルボットの能力にアクセス可能である。発話の形態でユーザリクエストを受信すると、マスターボットは、複数の利用可能なスキルボットから、ユーザリクエストを最もよく満たすまたはユーザリクエストに最もよく対応できる特定のスキルボットを識別または予測するように構成されている。その後、マスターボットは、発話(または発話の一部)をこの特定のスキルボットに転送し、さらに処理させる。このように、制御はマスターボットからスキルボットに流れる。マスターボットは、複数の入出力チャネルをサポートすることができる。
【0047】
図1の実施形態では、マスターボット114とスキルボット116-1,116-2および116-3とを含むデジタルアシスタント106を示しているが、これは限定的であることを意図していない。デジタルアシスタントは、デジタルアシスタントの機能を提供するさまざまな他のコンポーネント(たとえば、他のシステムおよびサブシステム)を含み得る。これらのシステムおよびサブシステムは、ソフトウェア(たとえば、コード、コンピュータ読取可能媒体に格納され、1つ以上のプロセッサによって実行可能な命令)のみで、ハードウェアのみで、またはソフトウェアとハードウェアとの組合わせを使用する実現例で実現され得る。
【0048】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられた1つまたは複数のスキルボットを含むデジタルアシスタントを作成することを可能にするインフラストラクチャならびにさまざまなサービスおよび機能を提供する。いくつかの事例では、スキルボットは、既存のスキルボットのクローニング、たとえば、スキルストアによって提供されるスキルボットのクローニングによって作成することができる。上述したように、DABP102は、さまざまなタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットのクローンを作成することができる。必要に応じて、クローンを作成したスキルボットに修正またはカスタマイズを行うことができる。いくつかの他の事例では、DABP102のユーザは、DABP102が提供するツールおよびサービスを使用して、ゼロからスキルボットを作成した。上述したように、DABP102が提供するスキルストアまたはスキルカタログは、さまざまなタスクを実行するための複数のスキルボットを提供してもよい。
【0049】
特定の実施形態では、高いレベルで、スキルボットの作成またはカスタマイズは、以下のステップを含む。
【0050】
(1)新しいスキルボットの設定を行う。
(2)スキルボットに1つ以上のインテントを設定する。
【0051】
(3)1つ以上のインテントに、1つまたは複数のエンティティを設定する。
(4)スキルボットを訓練する。
【0052】
(5)スキルボットのダイアログフローを作成する。
(6)必要に応じて、スキルボットにカスタムコンポーネントを追加する。
【0053】
(7)スキルボットのテストおよび展開を行う。
上記の各ステップについて、以下に簡単に説明する。
【0054】
(1)新しいスキルボットの設定―スキルボットにさまざまな設定を行うことができる。たとえば、スキルボットの設計者は、作成されているスキルボットに1つ以上の呼出し名を指定することができる。これらの呼出し名を用いて、デジタルアシスタントのユーザは、スキルボットを明示的に呼出すことができる。たとえば、ユーザは、対応するスキルボットを明示的に呼出すために、ユーザの発話内の呼出し名を入力することができる。
【0055】
(2)スキルボットの1つ以上のインテントおよび関連する発話例の設定―スキルボット設計者は、作成されているスキルボットの1つ以上のインテント(ボットインテントともいう)を指定する。その後、スキルボットは、これらの指定されたインテントに基づいて学習される。これらのインテントは、スキルボットが入力された音声を推測するために訓練されるカテゴリまたはクラスを表す。発話を受信すると、訓練されたスキルボットは、その発話のインテントを推測し、推測されるインテントは、スキルボットの訓練に使用されたインテントの事前に定義されたセットから選択される。そして、スキルボットは、発話について推測されたインテントに基づいて、当該発話に対応する適切なアクションを実行する。事例によっては、スキルボットのインテントは、スキルボットがデジタルアシスタントのユーザに対して行うことができるタスクを表す。各インテントには、インテント識別子またはインテント名が付与されている。たとえば、銀行用に訓練されたスキルボットの場合、スキルボットについて指定されたインテントは、「CheckBalance」、「TransferMoney」および「DepositCheck」などを含み得る。
【0056】
スキルボットに定義されたインテントごとに、スキルボットの設計者は、そのインテントを表し、説明する1つ以上の発話例を提供することもできる。これらの発話例は、ユーザがインテントについてスキルボットに入力することが可能な発話を表すことを意味している。たとえば、CheckBalanceインテントの場合、発話例は、「私の普通預金口座の残高はいくらですか。」、「私の当座預金口座にはいくらありますか。」および「私の口座にはいくらお金がありますか。」などを含み得る。したがって、典型的なユーザ発話のさまざまな順列を、インテントの発話例として指定してもよい。
【0057】
インテントおよびそれらに関連する発話例は、スキルボットを訓練するための訓練データとして使用される。さまざまな異なる学習手法を用いてもよい。この訓練の結果として、発話を入力とし、予測モデルによって発話について推定されたインテントを出力するように構成された予測モデルが生成される。事例によっては、入力発話は、入力発話のインテントを予測または推論するために訓練されたモデルを使用するように構成されたインテント分析エンジンに提供される。スキルボットはその後、推測されたインテントに基づいて、1つまたは複数のアクションをとることができる。
【0058】
(3)スキルボットの1つ以上のインテントに対するエンティティの設定―スキルボットがユーザの発話に適切に応答できるようにするためには、追加のコンテキストが必要になる事例がある。たとえば、ユーザ入力の発話がスキルボットの同じインテントに解決される状況がある。たとえば、上記の例では、「私の普通預金の残高はいくらですか。」と「私の当座預金にいくらありますか。」との両方の発話が同じCheckBalanceインテントに解決されるが、これらの発話は、異なる事を求める異なるリクエストである。このようなリクエストを明確にするために、1つ以上のエンティティがインテントに追加される。銀行業務スキルボットの例を用いると、「checking」と「saving」という値を定義するAccountTypeというエンティティを追加することによって、スキルボットがユーザリクエストを構文解析し、適切に応答できるようになる。上記の例では、これらの発話は同じインテントに解決しているが、AccountTypeエンティティに関連付けられた値は、2つの発話で異なっている。これにより、スキルボットは、2つの発話が同じインテントに解決されるにもかかわらず、これらの発話に対して、おそらく異なるアクションを実行することができる。スキルボット用に設定された特定のインテントには、1つまたは複数のエンティティを指定することができる。これによって、エンティティは、インテント自体にコンテキストを追加するために使用される。エンティティは、インテントをより完全に記述するのに役立ち、スキルボットがユーザリクエストを完了するのを可能にする。
【0059】
特定の実施形態では、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定することができるカスタムエンティティ、の2種類のエンティティが存在する。組込みエンティティは、多種多様なボットを用いて使用することができる汎用エンティティである。組込みエンティティの例としては、時間、日付、住所、番号、電子メールアドレス、期間、定期的な期間、通貨、電話番号およびURLなどに関するエンティティが挙げられるが、これらに限定されない。カスタムエンティティは、よりカスタマイズされたアプリケーションのために使用される。たとえば、銀行業務スキルの場合、スキルボット設計者によってAccountTypeエンティティが定義され、これによって、小切手、貯金およびクレジットカードなどのキーワードについてユーザ入力をチェックすることによって、さまざまな銀行取引が可能になる。
【0060】
(4)スキルボットの訓練―スキルボットは、発話形式のユーザ入力を受信し、受信した入力を構文解析またはその他の態様では処理し、受信したユーザ入力に関連するインテントを特定または選択するように構成されている。上述したように、スキルボットをこのために訓練する必要がある。特定の実施形態では、スキルボットは、スキルボットのために構成されたインテントおよびインテントに関連付けられた発話の例(集合的に、訓練データ)に基づいて訓練されて、スキルボットが、ユーザ入力発話をその構成されたインテントの1つに解決可能になる。特定の実施形態では、スキルボットは、訓練データを使用して訓練された予測モデルを使用し、スキルボットがユーザの発言(または場合によっては、発言しようとしていること)を識別することを可能にする。DABP102は、スキルボット設計者がスキルボットを訓練するために使用することができる、さまざまな機械学習ベースの訓練技法、規則ベースの訓練技法、および/またはそれらの組合せを含む、さまざまな異なる訓練技法を提供する。特定の実施形態では、訓練データの一部(たとえば、80%)がスキルボットモデルを訓練するために使用され、別の一部(たとえば、残りの20%)がモデルをテストまたは検証するために使用される。いったん訓練されると、訓練されたモデル(訓練済みスキルボットと呼ばれることもある)は、次に、ユーザの発話を処理し、それらに応答するために使用することができる。特定の場合では、ユーザの発言は、単一の回答のみを必要とし、それ以上の会話を必要としない質問である場合がある。このような状況に対応するため、スキルボットにQ&A(質疑応答)インテントを定義してもよい。これにより、スキルボットは、ダイアログの定義を更新することなく、ユーザのリクエストに対して回答を出力することができる。Q&Aインテントは、通常のインテントと同様の方法で作成される。Q&Aインテントのダイアログフローは、通常のインテントのものと異なる場合がある。
【0061】
(5)スキルボットのダイアログフローの作成―スキルボットに指定するダイアログフローでは、スキルボットの異なるインテントが受信されるユーザ入力に応じて解決される際のスキルボットの反応について記述されている。ダイアログフローは、たとえば、スキルボットがユーザの発話にどのように反応するか、スキルボットが入力についてユーザをどのように促すか、スキルボットがデータをどのように戻すかなど、スキルボットが行う動作またはアクションを定義する。ダイアログフローは、スキルボットが追従するフローチャートのようなものである。スキルボットの設計者は、マークダウン言語などの言語を使用してダイアログフローを指定する。特定の実施形態では、OBotMLと呼ばれるYAMLのバージョンが、スキルボットのダイアログフローを指定するために使用される場合がある。スキルボットのためのダイアログフロー定義は、会話自体のモデルとして機能し、スキルボット設計者がスキルボットとスキルボットがサービスを提供するユーザとの間の対話を振付けることができるようにする。
【0062】
特定の実施形態では、スキルボットのためのダイアログフロー定義は、3つのセクションを含む。
【0063】
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション
コンテキストセクション―スキルボットの設計者は、会話フローで使用される変数をコンテキストセクションに定義することができる。コンテキストセクションで命名可能な他の変数には、エラー処理用の変数、組込みまたはカスタムエンティティ用の変数、およびスキルボットがユーザの好みを認識して保持できるようにするユーザ変数などが含まれるが、これらに限定されない。
【0064】
デフォルト遷移セクション―スキルボットの遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義された遷移はフォールバックとして機能し、状態内で適用可能な遷移が定義されていない場合、または状態遷移のトリガに必要な条件が満たされていない場合にトリガされる。デフォルト遷移セクションを使用して、スキルボットが予期しないユーザアクションを優雅に処理するためのルーティングを定義することができる。
【0065】
状態セクション―ダイアログフローとそれに関連する動作は、ダイアログフロー内のロジックを管理する一連の過渡的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログにおいてその時点で必要とされる機能を提供するコンポーネントに名前を付ける。このように、状態はコンポーネントの周りに構築される。状態は、コンポーネント固有のプロパティを含み、コンポーネントの実行後にトリガされる、他の状態への遷移を定義する。
【0066】
特殊なシナリオは、状態セクションを使用して処理可能である。たとえば、デジタルアシスタント内の第2のスキルで何かをするために、携わっている第1のスキルから一時的に離れるオプションをユーザに提供したい場合があるかもしれない。たとえば、ユーザがショッピングスキルと会話している場合(たとえば、ユーザはいくつか購入を選択している)、ユーザは銀行業務スキルにジャンプし(たとえば、ユーザは購入に十分なお金を持っているか確認したい)、その後ショッピングスキルに戻ってユーザの注文を完了したいと思う場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおける第2の異なるスキルとの対話を開始し、その後、元のフローに戻るように構成され得る。
【0067】
(6)スキルボットへのカスタムコンポーネントの追加―上述したように、スキルボットのダイアログフローで指定された状態は、それらの状態に応じて必要な機能を提供するコンポーネントに名前を付ける。コンポーネントは、スキルボットに機能を実行させることができる。特定の実施形態において、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボットの設計者は、これらの事前構成されたコンポーネントのうちの1つ以上を選択し、スキルボットのためのダイアログフロー内の状態と関連付けることができる。また、スキルボットの設計者は、DABP102が提供するツールを使用してカスタムコンポーネントまたは新規コンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフローの1つ以上の状態に関連付けることができる。
【0068】
(7)スキルボットのテストおよび展開―DABP102は、スキルボットの設計者が開発中のスキルボットをテストできるようにする複数の機能を提供する。その後、スキルボットを展開し、デジタルアシスタントに含めることができる。
【0069】
上記の説明では、スキルボットを作成する方法を説明したが、同様の技術は、デジタルアシスタント(またはマスターボット)を作成するために使用することもできる。マスターボットまたはデジタルアシスタントレベルでは、デジタルアシスタントに組込みシステムインテントを設定することができる。これらの組込みシステムインテントは、デジタルアシスタントに関連付けられたスキルボットを呼出すことなく、デジタルアシスタント自体(すなわち、マスターボット)が処理できる一般的なタスクを特定するために使用される。マスターボットに定義されるシステムインテントの例には、以下が含まれる。(1)Exit:ユーザがデジタルアシスタントの現在の会話またはコンテキストから退出したいとい合図すると適用される、(2)Help:ユーザがヘルプまたはオリエンテーションを求めると適用される、および(3)UnresolvedIntent:退出およびヘルプイントントとうまく一致しないユーザ入力に適用される。また、デジタルアシスタントは、デジタルアシスタントに関連付けられた1つ以上のスキルボットに関する情報を格納する。この情報により、マスターボットは、発話を処理するための特定のスキルボットを選択することが可能になる。
【0070】
マスターボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントにフレーズまたは発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断するための処理を実行するように構成されている。デジタルアシスタントは、規則ベース、AIベース、またはそれらの組合せでもよいルーティングモデルを使用して、この判断を行う。デジタルアシスタントは、ルーティングモデルを使用して、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントもしくはマスターボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0071】
特定の実施形態では、この処理の一環として、デジタルアシスタントは、ユーザ入力発話がその呼出し名を用いてスキルボットを明示的に特定するかどうかを判断する。ユーザ入力に呼出し名が存在する場合、これは、その呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。このようなシナリオでは、デジタルアシスタントは、ユーザ入力を、明示的に呼出されたスキルボットに転送し、さらに処理することができる。特定のまたは明示的な呼出しがない場合、特定の実施形態では、デジタルアシスタントは、受信したユーザ入力発話を評価し、デジタルアシスタントに関連付けられたシステムインテントおよびスキルボットについての信頼度スコアを計算する。スキルボットもしくはシステムインテントについて計算されたスコアは、ユーザ入力が、スキルボットが実行するように構成されているタスクを表している、またはシステムインテントを表している可能性がどの程度高いかを表す。関連付けられ計算された信頼度スコアが閾値(たとえば、信頼度閾値ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらに他の評価のための候補として選択される。次に、デジタルアシスタントは、識別された候補の中から、ユーザ入力発話をさらに処理するための特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられたインテントが(スキルごとのインテントモデルに従って)評価され、インテントごとに信頼度スコアが判断される。一般に、信頼度スコアが閾値(たとえば、70%)を超えるインテントは、インテント候補として扱われる。特定のスキルボットが選択される場合、ユーザの発話はそのスキルボットにルーティングされ、さらに処理される。システムインテントが選択される場合、選択されたシステムインテントに従って、マスターボット自体によって1つ以上のアクションが実行される。
【0072】
図2は、特定の実施形態に係る、マスターボット(MB)システム200を示す簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組合せで実現することができる。MBシステム200は、前処理サブシステム210、多重インテントサブシステム(MIS)220、明示的呼出しサブシステム(EIS)230、スキルボット呼出し装置240、およびデータストア250を含む。図2に示されたMBシステム200は、マスターボットにおけるコンポーネントの配置の一例に過ぎない。当業者であれば、多くの可能な変形、代替案、および修正を認識するであろう。たとえば、いくつかの実現例において、MBシステム200は、図2に示されるものよりも多いもしくは少ない数のシステムまたは構成要素を有してもよい、2つ以上のサブシステムを組合せてもよい、またはサブシステムの異なる構成もしくは配置を有してもよい。
【0073】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出装置212および言語パーサ214を介して、発話を処理する。上述したように、発話は、音声またはテキストを含むさまざまな方法で提供することができる。発話202は、文の断片、完全な文、および複数の文などであり得る。発話202は、句読点を含み得る。たとえば、発話202が音声として提供される場合、前処理サブシステム210は、結果として得られるテキストに句読点、たとえばカンマ、セミコロン、ピリオドなどを挿入する音声-テキスト変換器(図示せず)を用いて、音声をテキストに変換してもよい。
【0074】
言語検出装置212は、発話202のテキストに基づいて、発話202の言語を検出する。各言語は独自の文法および意味論を有しているため、発言202の扱い方は言語によって異なる。言語間の違いは、発話の構文および構造を分析する際に考慮される。
【0075】
言語パーサ214は、発話202を構文解析して、発話202内の個々の言語単位(たとえば、単語)の品詞(POS)タグを抽出する。POSタグには、たとえば、名詞(NN)、代名詞(PN)および動詞(VB)などが含まれる。言語パーサ214はまた、発話202の言語単位をトークン化し(たとえば、各単語を個別のトークンに変換するために)、単語を見出し語化してもよい。見出しとは、辞書で表されるような主要な形式の単語の集合である(たとえば、「run」は、run,runs,ran,runningなどの見出しである)。言語パーサ214が実行できる他のタイプの前処理には、複合表現のチャンキング、たとえば、「credit」と「card」とを単一の表現「credit_card」に結合することが含まれる。言語パーサ214は、発話202内の単語間の関係も特定することができる。たとえば、いくつかの実施形態では、言語パーサ214は、発話のどの部分(たとえば、特定の名詞)が直接目的語であるか、および発話のどの部分が前置詞であるか、などを示す依存関係ツリーを生成する。言語パーサ214によって実行された処理の結果は、抽出された情報205を形成し、発話202自体と共にMIS220への入力として提供される。
【0076】
上述したように、発話202は2つ以上の文章を含み得る。複数のインテントおよび明示的な呼出しを検出する目的で、発話202は、複数の文を含んでいても、単一のユニットとして扱うことができる。しかしながら、特定の実施形態では、たとえば、前処理サブシステム210によって、複数インテント分析および明示的呼出し分析のために複数の文のうちで単一の文を識別するように、前処理を行うことができる。一般に、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文からなる単一のユニットとして処理されるかにかかわらず、実質的に同じである。
【0077】
MIS220は、発話202が複数のインテントを表しているか否かを判定する。MIS220は、発話202における複数のインテントの存在を検出することができるが、MIS220によって実行される処理は、発話202のインテントがボット用に設定された任意のインテントに一致するか否かを判定することを伴わない。その代わりに、発話202のインテントがボットのインテントに一致するかどうかを判断する処理は、MBシステム200のインテント分類器242によって、または(たとえば、図3の実施形態に示すような)スキルボットのインテント分類器によって実行することが可能である。MIS220によって実行される処理は、発話202を処理することができるボット(たとえば、特定のスキルボットまたはマスターボット自体)の存在を前提とする。したがって、MIS220によって実行される処理は、チャットボットシステムにどのようなボットが存在するか(たとえば、マスターボットに登録されたスキルボットのアイデンティティ)についての知識、または特定のボットのためにどのようなインテントが設定されているかについての知識を必要としない。
【0078】
発話202が複数のインテントを含むと判断するために、MIS220は、データストア250内の規則セット252から1つまたは複数の規則を適用する。発話202に適用される規則は、発話202の言語に依存し、複数のインテントの存在を示す文型を含み得る。たとえば、文型は、文の2つの部分(たとえば、合接詞)を結合する等位接続詞を含んでもよく、両方の部分が別々のインテントに対応する。発話202が文型に一致する場合、発話202は複数のインテントを表すと推論することができる。なお、複数のインテントを有する発話は、必ずしも異なるインテント(たとえば、異なるボットに向けられたインテントまたは同じボット内の異なるインテント)を有するとは限らない。代わりに、発話は、同じインテントの別々の事例を有し得る。たとえば、「支払い口座Xを使用してピザを注文し、次に支払い口座Yを使用してピザを注文する。」などである。
【0079】
発話202が複数のインテントを表していると判断する一環として、MIS220は、発話202のどの部分が各インテントと関連付けられているかも判断する。MIS220は、複数のインテントを含む発話で表されるインテントごとに、元の発話の代わりに別処理用の新しい発話、たとえば図2に示されているように、発話「B」206および発話「C」208を構築する。このように、元の発話202は、一度に1つずつ処理される2つ以上の別々の発話に分割することができる。MIS220は、抽出された情報205を使用して、および/または発話202自体の分析から、2つ以上の発話のうちのどれが最初に処理されるべきかを判断する。たとえば、MIS220は、発話202が、特定のインテントを最初に処理すべきことを示すマーカーワードを含むと判断することができる。この特定のインテントに対応する新たに形成された発話(たとえば、発話206または発話208のうちの1つ)は、EIS230によるさらに他の処理のために最初に送信されることになる。最初の発話によってトリガされた会話が終了した(または一時的に中断された)後で、次に優先順位の高い発話(たとえば、発話206または発話208の他方)が、EIS230に送信されて処理され得る。
【0080】
EIS230は、受信する発話(たとえば、発話206または発話208)がスキルボットの呼出し名を含むか否かを判断する。特定の実施形態では、チャットボットシステム内の各スキルボットには、チャットボットシステム内の他のスキルボットからスキルボットを区別するための一意の呼出し名が割当てられる。呼出し名のリストは、データストア250内のスキルボット情報254の一部として維持することができる。発話は、発話が呼出し名と一致する単語を含む場合、明示的な呼出しであるとみなされる。ボットが明示的に呼出されない場合、EIS230によって受信された発話は、非明示的な呼出しの発話234とみなされ、マスターボットのインテント分類器(たとえば、インテント分類器242)に入力されて、発話の処理に使用すべきボットが判断される。いくつかの事例では、インテント分類器242は、マスターボットが非明示的に呼出された発話を処理すべきであると判断することになる。他の事例では、インテント分類器242は、取り扱いのために発話をルーティングするスキルボットを判断する。
【0081】
EIS230が提供する明示的な呼出し機能には、いくつかの利点がある。マスターボットが実行しなければならない処理量を削減することができる。たとえば、明示的な呼出しがある場合、マスターボットは、(たとえば、インテント分類器242を使用して)インテント分類分析を行わなくてもよい場合がある、または、スキルボットを選択するための低減されたインテント分類分析を行わなければならない場合がある。したがって、明示的な呼出し分析は、インテント分類分析に頼ることなく、特定のスキルボットの選択を可能にし得る。
【0082】
また、複数のスキルボットの間で機能が重複している場合もある。これは、たとえば2つのスキルボットが扱うインテントが重複している、または非常に近い場合に起こり得る。このような状況では、マスターボットが、インテント分類分析のみに基づいて、複数のスキルボットのうちいずれを選択すべきかを特定することが困難となる場合がある。このような事例では、明示的な呼出しによって、使用する特定のスキルボットが明確になる。
【0083】
発話が明示的な呼出しであると判断することに加えて、EIS230は、発話のどの部分が明示的に呼出されているスキルボットの入力として使用されるべきかどうかを判断する責任を負う。特に、EIS230は、発話の一部が呼出しに関連付けられていないかどうかを判断することができる。EIS230は、発話の分析および/または抽出された情報205の分析を通じて、この判断を行うことができる。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼出しに関連付けられていない発話の一部を呼出されたスキルボットに送信することができる。事例によっては、呼出されたスキルボットへの入力は、呼出しに関連付けられた発話の任意の部分をただ単に削除することによって形成される。たとえば、「ピザボットを使ってピザを注文したい」は、「ピザボットを使って」はピザボットの呼出しに関連するが、ピザボットによって実行される任意の処理には無関係であるので、「ピザを注文したい」に短縮することが可能である。事例によっては、EIS230は、たとえば、完全な文を形成するために、呼出されたボットに送信される部分を再フォーマットしてもよい。このように、EIS230は、明示的な呼出しがあることのみならず、明示的な呼出しがある場合にスキルボットに何を送信するかも判断する。事例によっては、呼出されているボットに入力すべきテキストがないこともある。たとえば、発話が「ピザボット」であった場合、EIS230は、ピザボットが呼出されていると判断できるが、ピザボットが処理すべきテキストは存在しない。このようなシナリオでは、EIS230は、スキルボット呼出し装置240に、送信するものが何もないと示してもよい。
【0084】
スキルボット呼出し装置240は、さまざまな方法でスキルボットを呼出す。たとえば、スキルボット呼出し装置240は、明示的な呼出しの結果として特定のスキルボットが選択されたという表示235を受信することに応答して、ボットを呼出すことができる。表示235は、明示的に呼出されたスキルボットについての入力と共にEIS230によって送信され得る。このシナリオでは、スキルボット呼出し装置240は、会話の制御を明示的に呼出されたスキルボットに引き渡すことになる。明示的に呼出されたスキルボットは、EIS230からの入力を独立した発話として扱うことによって、この入力に対する適切な応答を判断する。たとえば、応答は、特定のアクションを実行すること、または特定の状態で新しい会話を開始することであり得、新しい会話の初期状態は、EIS230から送信された入力によって決まる。
【0085】
スキルボット呼出し装置240がスキルボットを呼出すことができる別の方法は、インテント分類器242を用いた暗黙の呼出しによるものである。インテント分類器242は、機械学習および/または規則に基づく訓練技術を使用して、発話が特定のスキルボットが実行するように構成されるタスクを表す可能性を判断するために訓練可能である。インテント分類器242は、異なるクラスについて、スキルボットごとに1つのクラスについて訓練される。たとえば、新しいスキルボットがマスターボットに登録されるときはいつでも、新しいスキルボットに関連付けられた発話例のリストを使用して、特定の発話が新しいスキルボットが実行できるタスクを表す可能性を判断するように、インテント分類器242を訓練することが可能である。この訓練の結果として生成されるパラメータ(たとえば、機械学習モデルの重みおよび偏りの値のセット)を、スキルボット情報254の一部として格納することができる。
【0086】
特定の実施形態では、インテント分類器242は、本明細書でさらに詳細に説明するように、機械学習モデルを使用して実現される。機械学習モデルの訓練は、機械学習モデルの出力として、どのボットが任意の特定の訓練用発話を処理するための正しいボットであるかについての推論を生成するために、さまざまなスキルボットに関連付けられた発話例から少なくとも発話のサブセットを入力することを含み得る。訓練用発話ごとに、その訓練用発話に使用する正しいボットの指示が、グラウンドトゥルース情報として提供され得る。その後、機械学習モデルの動作を(たとえば、バックプロパゲーションによって)適応させて、生成された推論とグラウンドトゥルース情報との差を最小化することができる。
【0087】
特定の実施形態では、インテント分類器242は、マスターボットに登録されたスキルボットごとに、スキルボットが発話(たとえば、EIS230から受信した非明示的に呼出す発話234)を処理できる可能性を示す信頼度スコアを判断する。インテント分類器242はまた、構成されたシステムレベルインテント(たとえば、help,exit)ごとに信頼度スコアを判断してもよい。特定の信頼度スコアが1つまたは複数の条件を満たす場合、スキルボット呼出し装置240は、特定の信頼度スコアに関連するボットを呼出すことになる。たとえば、閾値信頼度スコア値が満たされる必要な場合がある。したがって、インテント分類器242の出力245は、システムインテントの識別または特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼度スコア値を満たすことに加えて、信頼度スコアは、次に高い信頼度スコアを一定の獲得マージンだけ超えなければならない。そのような条件を課すことは、複数のスキルボットの信頼度スコアの各々が閾値信頼度スコア値を超える場合に、特定のスキルボットへのルーティングを可能にする。
【0088】
信頼度スコアの評価に基づいてボットを特定した後、スキルボット呼出し装置240は、特定したボットに処理を引き継ぐ。システムインテントの場合、特定されたボットは、マスターボットである。そうでない場合、特定されたボットは、スキルボットである。さらに、スキルボット呼出し装置240は、特定されたボットについて入力247として何を提供するかを判断する。上述したように、明示的な呼出しの場合、入力247は、呼出しに関連付けられていない発話の一部に基づいてもよい、または入力247は何もなくてもよい(たとえば、空文字列)。暗黙的な呼出しの場合、入力247は発話全体であり得る。
【0089】
データストア250は、マスターボットシステム200のさまざまなサブシステムによって使用されるデータを格納する1つ以上のコンピューティングデバイスからなる。上述したように、データストア250は、規則252およびスキルボット情報254を含む。規則252は、たとえば、MIS220によって、発話が複数のインテントを表すとき、および複数のインテントを表す発話をどのように分割するかを判断するための規則を含む。規則252はさらに、EIS230によって、スキルボットを明示的に呼出す発話のどの部分をスキルボットに送信するかを判断するための規則を含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼出し名、たとえば、特定のマスターボットに登録されている全てのスキルボットの呼出し名のリストを含む。スキルボット情報254は、チャットボットシステム内のスキルボットごとの信頼度スコアを判断するためにインテント分類器242が使用する情報、たとえば、機械学習モデルのパラメータも含み得る。
【0090】
図3は、特定の実施形態に係る、スキルボットシステム300を示す簡略化されたブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組合せで実現され得るコンピューティングシステムである。図1に示された実施形態などの特定の実施形態では、スキルボットシステム300は、デジタルアシスタント内に1つまたは複数のスキルボットを実現するために使用され得る。
【0091】
スキルボットシステム300は、MIS310と、インテント分類器320と、会話マネージャ330とを含む。MIS310は、図2のMIS220に類似しており、データストア350内の規則352を使用して、(1)発話が複数のインテントを表すかどうか、および、そうである場合、(2)発話を複数のインテントのインテントごとに別々の発話に分割する態様、を判断するように動作可能であることを含む類似の機能を提供する。特定の実施形態では、複数のインテントを検出するために、および発話を分割するためにMIS310が適用する規則は、MIS220が適用する規則と同じである。MIS310は、発話302と抽出された情報304とを受信する。抽出された情報304は、図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを用いて生成することができる。
【0092】
インテント分類器320は、図2の実施形態に関連して上述したインテント分類器242と同様の態様で、本明細書でさらに詳細に説明するように、訓練することができる。たとえば、特定の実施形態では、インテント分類器320は、機械学習モデルを用いて実現される。インテント分類器320の機械学習モデルは、特定のスキルボットについて、少なくともその特定のスキルボットに関連付けられた発話例のサブセットを訓練用発話として用いて訓練される。訓練用発話ごとのグラウンドトゥルースは、訓練用発話に関連付けられた特定のボットインテントであろう。
【0093】
発話302は、ユーザから直接受信、または、マスターボットを介して供給可能である。発話302がマスターボットを介して供給される場合、たとえば、図2に示された実施形態におけるMIS220およびEIS230を介した処理の結果として、MIS220によって既に行われた処理を繰り返さないように、MIS310をバイパス可能である。しかしながら、発話302がユーザから直接受信される場合、たとえば、スキルボットへのルーティング後に発生する会話の間に、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。そうである場合、MIS310は、1つ以上の規則を適用して、発話302をインテントごとの別個の発話、たとえば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表していない場合、MIS310は、インテント分類のために、発話302を分割することなくインテント分類器320に転送する。
【0094】
インテント分類器320は、受信した発話(たとえば、発話306または308)をスキルボットシステム300に関連付けられたインテントに照合するように構成されている。上記で説明したように、スキルボットは、1つ以上のインテントを用いて構成することができ、各インテントは、インテントに関連付けられ、分類器を訓練するために使用される少なくとも1つの発話例を含む。図2の実施形態では、マスターボットシステム200のインテント分類器242は、個々のスキルボットの信頼度スコアおよびシステムインテントの信頼度スコアを判断するように訓練される。同様に、インテント分類器320は、スキルボットシステム300に関連付けられたインテントごとに信頼度スコアを判断するように訓練され得る。インテント分類器242によって実行される分類がボットレベルであるのに対し、インテント分類器320によって実行される分類はインテントレベルであり、したがって、よりきめ細かい。インテント分類器320は、インテント情報354にアクセスすることができる。インテント情報354は、スキルボットシステム300に関連付けられたインテントごとに、そのインテントの意味を表し、その意味を説明し、典型的にはそのインテントによって実行されるタスクに関連付けられた発話のリストを含む。インテント情報354はさらに、この発話のリストに対する訓練の結果として生成されたパラメータを含むことができる。
【0095】
会話マネージャ330は、インテント分類器320の出力として、インテント分類器320に入力された発話に最もよく一致するとインテント分類器320によって識別された、特定のインテントの表示322を受信する。事例によっては、インテント分類器320は、どの一致も判断することができない。たとえば、発話がシステムインテントまたは異なるスキルボットのインテントに向けられている場合、インテント分類器320によって計算された信頼度スコアは、閾値信頼度スコア値を下回る可能性がある。これが発生すると、スキルボットシステム300は、たとえば、異なるスキルボットにルーティングするために、発話を処理用のマスターボットに委ねてもよい。しかしながら、インテント分類器320がスキルボット内のインテントの特定に成功した場合、会話マネージャ330は、ユーザとの会話を開始することになる。
【0096】
会話マネージャ330によって開始される会話は、インテント分類器320によって特定されたインテントに固有の会話である。たとえば、会話マネージャ330は、特定されたインテントのためのダイアログフローを実行するように構成された状態マシンを用いて実現されてもよい。状態マシンは、デフォルトの開始状態(たとえば、インテントが追加の入力なしに呼出されるときのための)および1つ以上の追加の状態を含み得、各状態は、スキルボットによって実行されるべきアクション(たとえば、購入取引の実行)および/またはユーザに提示されるべきダイアログ(たとえば、質問、応答)を関連付けている。したがって、会話マネージャ330は、インテントを特定する指示322を受信するとアクション/ダイアログ335を判断することができ、会話中に受信された後続の発話に応答して、追加のアクションまたはダイアログを判断することができる。
【0097】
データストア350は、スキルボットシステム300のさまざまなサブシステムによって使用されるデータを格納する1つ以上のコンピューティングデバイスからなる。図3に示されているように、データストア350は、規則352およびインテント情報354を含む。特定の実施形態では、データストア350は、マスターボットまたはデジタルアシスタントのデータストア、たとえば、図2のデータストア250に統合することができる。
【0098】
ストップワードデータ拡張
チャットボットは、ユーザの発話に基づいてユーザのインテントを判断するように訓練されてもよい。訓練データが適切でない場合、チャットボットは、より頻繁に誤ったインテントを判断する可能性がある。たとえば、インテントの未解決クラスに関連付けられた訓練データが適切でない場合、訓練済みチャットボットは、特定の発話をインテントの肯定クラスまたは否定クラスとして誤って識別する可能性がある。一例として、「会員に関する情報が必要」というインテントについての訓練データが、「会員になりたいかどうかが分かるように1日券を有しているか」、「会員に関する高齢者割引を有しているか」、「免税ショッピング資格を有しているか」を含む場合、訓練済みチャットボットは、「有しているか」を含む任意のユーザ発話を、高い信頼度で「会員に関する情報が必要」というインテントと関連していると誤って分類するかもしれない。既存の選択肢の1つは、これらの高頻出単語または特定のドメインについて選択された単語のリスト(以下、ストップワードと呼ぶ)を、訓練サンプルから除去することである。しかしながら、訓練用発話からストップワードを除去すること、またはストップワードをあまり強調しないことによって、インテントに関連付けられた特徴および文脈を学習する機械学習モデルの能力が限定される。
【0099】
この問題および他の問題を克服するために、さまざまな実施形態は、インテント分類の精度を向上させるために、ストップワード(たとえば、非ストップワードまたは非ストップワードのフレーズは、1つ以上のストップワードまたはストップワードの1つ以上のフレーズでランダムに置換されてもよい)で訓練データを拡張する技術に向けられている。ストップワードは通常、言語内の最も一般的な単語を指すが、すべての自然言語処理ツールによって使用されるストップワードの単一の普遍的なリストは存在しない。ストップワードは、特定のドメインもしくはインテントについての単語のリストを含み得る、または、高頻出単語もしくは任意のユーザ選択単語(たとえば、英語だけでなく、任意の言語で一般的に使用される単語のセット)を含み得る。
【0100】
いくつかの実施形態によれば、インドメインでありインテントのポジティブクラスに関連付けられた訓練サンプルからアウトドメイン(OOD)訓練サンプル(たとえば、文)を生成し、インテントの未解決のクラスに関連付けられた訓練サンプルとして使用する。より具体的には、ストップワード拡張技術(SWAT)は、既存のインドメイン訓練サンプルを用いて、未解決のインテントに関連付けられたOOD訓練サンプルを自動的にポピュレートする。ここで、既存のインドメイン訓練サンプル内の既存のストップワードパターンは維持されるが、非ストップワードまたは非ストップワードのフレーズは、1つ以上のストップワードまたはストップワードの1つ以上のフレーズにランダムに置換される。たとえば、訓練文「do you offer a one day trial membership?(1日会員権はありますか。)」は、未解決のインテントに関連付けられた訓練サンプル「do you to a one say a likely」に変換される可能性がある。このように、元のストップワード「do you...a one...」は保存され、非ストップワード「offer...day trial membership」は、特定のドメインまたはインテントについての単語のリストから選択されたランダムなストップワード「to...say a likely」に置換される、または高頻頻出単語もしくは任意のユーザ選択単語を含む。
【0101】
拡張テキストデータで訓練された機械学習モデルは、図1図2および図3に関して説明したように、チャットボットシステムにおいて実現されてもよい。有利には、多くの発話が20~50%のストップワードを含むことがあり、機械学習モデルが上述のようにこれらのストップワードパターンを誤って取上げることがあるので、これらのモデルおよびチャットボットは、SWATを使用してより良い精度を達成する。SWATを使用して生成されたOOD文を追加することにより、機械学習モデルがストップワードパターンを取上げることを防止することができる。また、SWATは、インテントの境界を定義するのに役立つ場合がある。他の利点は、未解決のインテントについて多数の発話があることで、機械学習モデルがOOD文に対してより良いパフォーマンスを発揮できる可能性があることである。発話にストップワードを保持することにより、機械学習モデルが類似の発話を区別しやすくなる可能性がある。そのため、より高い精度および信頼度スコアが達成される可能性がある。訓練用発話からストップワードを削除する、または強調しないようにすると、上記の利点が得られない場合がある。
【0102】
図4は、テキストデータ405に基づいて分類器(たとえば、図2および図3に関して説明したインテント分類器242または320)を訓練し利用するように構成されたチャットボットシステム400の態様を示すブロック図である。図4に示すように、本例においてチャットボットシステム400によって行われるテキスト分類は、予測モデル訓練段階410、発話が特定のスキルボットが実行するように構成されているタスクを表している可能性を判断するためのスキルボット呼出し段階415、および発話を一つ以上のインテントとして分類するためのインテント予測段階420という、さまざまな段階を含む。予測モデル訓練段階410は、他の段階によって使用される1つ以上の予測モデル425a~425n(「n」は任意の自然数を表す)を構築し訓練する(本明細書では、個別に予測モデル425と呼ぶこともあり、集合的に予測モデル425と呼ぶこともある)。たとえば、予測モデル425は、発話が特定のスキルボットが実行するように構成されているタスクを表している可能性を判断するためのモデル、第1のタイプのスキルボットについての発話からインテントを予測するための他のモデル、および第2のタイプのスキルボットについての発話からインテントを予測するための他のモデルを含み得る。さらに他のタイプの予測モデルは、本開示に係る他の例で実現されてもよい。
【0103】
予測モデル425は、畳み込みニューラルネットワーク(「CNN」)、たとえば、インセプションニューラルネットワーク、残差ニューラルネットワーク(「Resnet」)、またはリカレントニューラルネットワーク、たとえば、長短記憶(「LSTM」)モデル、またはゲート付き回帰型ユニット(「GRU」)モデル、ディープニューラルネットワーク(「DNN」)の他の変種(たとえば、単一インテント分類のためのマルチラベルnバイナリDNN分類器またはマルチクラスDNN分類器)などの機械学習(「ML」)モデルであり得る。予測モデル425はまた、ナイーブベイズ分類器、線形分類器、サポートベクターマシン、ランダムフォレストモデルなどのバギングモデル、ブースティングモデル、シャローニューラルネットワーク、またはそのような技術の1つ以上の組合せ―たとえば、CNN-HMMもしくはマルチスケール畳み込みニューラルネットワーク(MCNN)などの、自然言語処理用に訓練された任意の他の適切なMLモデルであり得る。チャットボットシステム400は、特定のスキルボットが実行するように構成されるタスクの可能性を判断するために、第1のタイプのスキルボット用の発話からインテントを予測するために、および第2のタイプのスキルボット用の発話からインテントを予測するために、同じタイプの予測モデルまたは異なるタイプの予測モデルを採用してもよい。さらに他のタイプの予測モデルは、本開示に係る他の例において実現されてもよい。
【0104】
さまざまな予測モデル425を訓練するために、訓練段階410は、データセット準備430、特徴エンジニアリング435、およびモデル訓練440の3つの主要コンポーネントで構成されている。データセット準備430は、データアセット445をロードし、システムが予測モデル425を訓練およびテストできるように、データアセット445を訓練および検証セット445a~nに分割し、かつ基本的な前処理を実行するプロセスを含む。データアセット445は、さまざまなスキルボットに関連付けられた発話例からの少なくともインドメイン発話のサブセットを含み得る。上述したように、発話は、音声またはテキストを含むさまざまな方法で提供することができる。発話は、文の断片、完全な文、および複数の文などであり得る。たとえば、発話が音声として提供される場合、データ準備430は、結果として得られるテキストに句読点、たとえばカンマ、セミコロン、ピリオドなどを挿入する音声-テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。事例によっては、発話例は、クライアントまたは顧客によって提供される。他の事例では、発話例は、発話の先行ライブラリから自動的に生成される(たとえば、チャットボットが学習すべきスキルに特有の発話をライブラリから特定する)。予測モデル425のデータアセット445は、入力テキストまたは音声(またはテキストもしくは音声フレームの入力特徴)と、入力テキストまたは音声(もしくは入力特徴)に対応するラベル450とを、値の行列または表として含み得る。たとえば、訓練用発話ごとに、その訓練用発話に使用する正しいボットの表示が、ラベル450のグラウンドトゥルース情報として提供されてもよい。その後、予測モデル425の動作は、生成された推論とグラウンドトゥルース情報との差を最小化するように(たとえば、バックプロパゲーションを介して)適応させることができる。代替的に、予測モデル425は、特定のスキルボットについて、その特定のスキルボットに関連付けられた発話例の少なくともサブセットを訓練用発話として用いて訓練されてもよい。訓練用発話ごとのラベル450についてのグラウンドトゥルース情報は、訓練用発話に関連付けられた特定のボットのインテントであろう。
【0105】
さまざまな実施形態において、データ準備430は、予測モデル425がストップワードパターンを取上げることを防ぎ、インテント予測の精度を向上させるために、発話のセットの少なくとも1つの非ストップワードを少なくとも1つのストップワードで置換する(たとえば、元のデータ中の非ストップワードをストップワードで置換する)ことを含むように、ストップワード拡張455させることを備える。データアセット445を非ストップワードに置き換わるストップワードで拡張することにより、予測モデル425は、例をそれらのクラスに結びつける、例の最も重要な部分に焦点を合わせることがより良好になる。拡張455は、データアセット445の原文にストップワードを組込むためのSWATを使用して実施される。SWATは一般に、(i)単語のリスト、テキストコーパス(たとえば、テキストの大規模かつ構造化されたセット)、出版物、またはデータアセット445の原文からストップワードテキストを取得する、および(ii)事前に定義された拡張率または比率(すなわち、データアセット445の原文内の既存の発話が、拡張された発話に変換される割合)で原文に対してデータアセット445内のストップワードテキストを組込む複数の動作から構成される。たとえば、各既存の訓練サンプル内のストップワードは保存されてもよいが、既存の訓練サンプル内の非ストップワード(複数可)または非ストップワードパターン(複数可)(たとえば、非ストップワードのみを含むフレーズ)は、たとえば既存の発話と拡張発話とが1:0.1または1:0.5などの、1:0.05~1:1の拡張率で、1つ以上のランダムなストップワードまたはストップワードパターンで置換されてもよい。拡張率は、所望の数の拡張されたサンプルを生成するために変更することができる。
【0106】
いくつかの実施形態において、SWATは、インテントについてのポジティブクラスまたはネガティブクラスに関連付けられた既存の訓練サンプルを用いて、未解決のインテントに関連付けられた訓練サンプルを生成する。より具体的には、インテントについてのポジティブクラスまたはネガティブクラスに関連付けられた各既存の訓練サンプル中のストップワードは保存されるが、既存の訓練サンプル中の各非ストップワードまたは非ストップワードパターンは、1つもしくは複数のランダムなストップワードまたはストップワードパターンに置換される。たとえば、「do you ...」を含む訓練文は、拡張訓練文に変換されてもよい。
【0107】
-do you not what will be on with the empty after ours
-do you 've a into front
-Do you to a one say a likely
-do you ‘ll a thereupon to anyway a she from the made
-do you have a yet always so we can see if we would like a nothing
-do you have a ye n’t against on off
-do you have a few whoever thereupon for me
等である。このようにして生成された新たな拡張された訓練文は、インテントの未解決クラスに関連付けられた訓練データとして使用されてもよい。ストップワードは、特定のドメインについて選択された単語のセット、いくつかの高頻出単語、いくつかの「非内容」もしくは「無意味」な単語、またはユーザが選択した単語などを含み得る。拡張率(たとえば、既存の発話が変換される割合)は、所望の数の拡張されたサンプルを生成するために変更されてもよい。
【0108】
いくつかの実施形態では、未解決のインテントに関連付けられた追加の訓練サンプルは、既存の発話の冒頭の最も長い連続ストップワードを検索することによって生成される。たとえば、発話「How do I get the refund?(どうすれば返金されますか。)」から、開始パターン「how do i」を抽出し、未解決のインテントに関連付けられた訓練サンプルの少なくとも一部として用いてもよい。他の実施形態では、未解決のインテントに関連付けられた追加の訓練サンプルは、既存の発話の任意の場所で最大でn個の連続するストップワード(n-gramパターンと呼ばれる)を検索することによって生成されてもよい。たとえば、発話「How do I get the refund?(どうすれば返金されますか。)」において、n=5のn-gramパターンは、「how」、「do」、「i」、「how do」、「do i」、「how do i」、および「the」を含み得る。n-gramパターンは、未解決のインテントに関連付けられた訓練サンプルの少なくとも一部として使用されてもよい。
【0109】
SWATの導入により、予測モデル425は、一般的なストップワードパターンを有する発話および(多くのストップワードを有さない)通常の発話でより良いパフォーマンスを発揮するが、これは、予測モデル425がさらに、発話の重要部分に焦点を合わせることができるようになったからである。さらに、SWATは合成にとらわれない方法で自動的に適用されるため、顧客またはクライアントは、訓練データにストップワードを追加することを気にする必要はない。表1に示すように、UMフラワースキルに関連付けられたインテントの場合、ストップワードパターンが誤って学習されていた。しかしながら、SWATが既存のインドメイン訓練サンプルから生成されたストップワード発話を使用して、未解決のインテントに関連付けられたOOD訓練サンプルを自動的にポピュレートすると、予測モデル425による期待通りの信頼度数が達成された。
【0110】
【表1-1】
【0111】
【表1-2】
【0112】
事例によっては、データアセット445(ストップワード拡張あり)に追加の拡張が適用されてもよい。たとえば、テキスト分類タスクの性能を高めるために、EDA(Easy Data Augmentation)技術が使用されてもよい。EDAは、同義語置換、ランサム挿入、ランダムスワップ、およびランダム削除の4つの動作を含み、これらの動作は、オーバーフィットを防止し、より堅牢なモデルの訓練を支援する。ストップワード拡張とは対照的に、EDAの動作は一般的に以下の通りである。(i)原文から単語を取得し、(ii)原文に対して各データアセット445内に単語を組み入れる。たとえば、同義語置換動作には、ストップワードでない原文(たとえば、発話)からn個の単語をランダムに選択し、これらの単語の各々をランダムに選択されたその同義語の1つと置換することが含まれる。ランダム挿入動作には、-n回-ストップワードでない原文のランダムな単語のランダムな同義語を見つけ、その同義語を文中のランダムな位置に挿入することが含まれる。ランダムスワップ動作には、-n回-文中の2つの単語をランダムに選択し、それらの位置を入れ替えることが含まれる。ランダム削除動作には、文中の各単語を確率pでランダムに削除することが含まれる。
【0113】
さまざまな実施形態において、特徴エンジニアリング435は、データアセット445(ストップワード拡張あり)を特徴ベクトルに変換すること、および/またはデータアセット445(ストップワード拡張あり)を用いて新しい特徴を作成することを含む。特徴ベクトルは、特徴としてのカウントベクトル、単語レベル、n-gramレベルまたは文字レベルなどの特徴としてのTF-IDF(term frequency―inverse document frequency)ベクトル、特徴としての単語埋込み、特徴としてのテキスト/NLP、特徴としてのトピックモデル、またはそれらの組合せを含み得る。回数ベクトルは、データアセット445の行列表記であり、各行が発話を、各列が発話の用語を、各セルが発話内の特定の用語の頻度カウントを表す。TF-IDFスコアは、発話中の用語の相対的な重要度を表す。単語埋込みは、単語および発話を密なベクトル表現で表す形式である。ベクトル空間内での単語の位置は、テキストから学習され、その単語の使用時にその単語を囲んでいる単語に基づく。テキスト/NLPに基づく特徴としては、発話中の単語数、発話中の文字数、平均単語密度、句読点数、大文字数、タイトル単語数、品詞タグ(名詞および動詞など)の頻度分布、またはそれらの組合せを含み得る。トピックモデリングは、発話の集合から、その集合の中で最も優れた情報を含む単語のグループ(トピックと呼ばれる)を特定する技術である。
【0114】
さまざまな実施形態において、モデル訓練440は、特徴エンジニアリング435において作成された特徴ベクトルおよび/または新たな特徴を用いて、分類器を訓練することを含む。事例によっては、訓練プロセスは、予測モデル425の損失またはエラー関数を最小化する予測モデル425のパラメータのセットを見つけるための反復演算を含む。各反復は、パラメータのセットを使用する損失またはエラー関数の値が、以前の反復におけるパラメータの別のセットを使用する損失またはエラー関数の値より小さくなるように、予測モデル425についてのパラメータのセットを見つけることを含み得る。損失または誤差関数は、予測モデル425を使用して予測された出力と、データアセット445に含まれるラベル450との差を測定するように構築することができる。ひとたびパラメータのセットが特定されると、予測モデル425は訓練されており、設計通りに予測に利用することができる。
【0115】
データアセット445、ラベル450、特徴ベクトルおよび/または新たな特徴に加えて、予測モデル425の訓練プロセスを洗練するために、他の技術および情報も採用することが可能である。たとえば、特徴ベクトルおよび/または新たな特徴は、分類器またはモデルの精度を向上させるのに役立つように組合わせてもよい。さらにまたは代替的に、ハイパーパラメータを調整または最適化してもよく、たとえば、木の長さ、葉、ネットワークパラメータなどの多数のパラメータを微調整して、最良の適合モデルを得ることができる。本明細書で説明した訓練メカニズムは、主に予測モデル425を訓練することに焦点を合わせているが、これらの訓練メカニズムは、他のデータアセットから訓練された既存の予測モデル425を微調整するために利用することも可能である。たとえば、場合によっては、予測モデル425は、別のスキルボットに特有の発話を使用して事前に訓練されている可能性がある。そのような場合、予測モデル425は、本明細書で論じるように、データアセット445(ストップワード拡張あり)を使用して再訓練することができる。
【0116】
予測モデル訓練段階410は、タスク予測モデル460およびインテント予測モデル465を含む訓練済み予測モデル425を出力する。タスク予測モデル460は、発話が特定のスキルボットが実行するように構成されているタスクを表す可能性を判断するために、スキルボット呼出し段階415で使用されてもよく(470)、インテント予測モデル465は、発話を1つ以上のインテント475として分類するために、インテント予測段階420で使用されてもよい。事例によっては、スキルボット呼出し段階415およびインテント予測段階420は、例によっては別個のモデルを用いて独立して進行してもよい。たとえば、訓練済みのインテント予測モデル465は、スキルボット呼出し段階415においてスキルボットを最初に特定することなく、スキルボットについてのインテントを予測するためにインテント予測段階420において使用されてもよい。同様に、タスク予測モデル460は、スキルボット呼出し段階415において、インテント予測段階420において発話のインテントを特定することなく、発話についての使用されるべきタスクまたはスキルボットを予測するために使用されてもよい。
【0117】
代替的に、スキルボット呼出し段階415およびインテント予測段階420は、一方の段階が他方の出力を入力として使用し、または一方の段階が他方の出力に基づいて特定のスキルボットについて特定の方法で呼出される状態で、順次実施されてもよい。たとえば、所与のテキストデータ405について、スキルボット呼出し元は、スキルボット呼出し段階415およびタスク予測モデル460を用いた暗黙の呼出しによって、スキルボットを呼出すことができる。タスク予測モデル460は、機械学習および/または規則ベースの訓練技術を使用して、発話が特定のスキルボット470が実行するように構成されているタスクを表す可能性を判断するために、訓練することができる。次に、識別されたまたは呼出されたスキルボットおよび所与のテキストデータ405について、インテント予測段階420およびインテント予測モデル465を使用して、受信した発話(たとえば、所与のデータアセット445内の発話)を、スキルボットに関連付けられたインテント475に一致させることができる。本明細書で説明するように、スキルボットは、1つ以上のインテントを用いて構成することができ、各インテントは、インテントに関連付けられ、分類器を訓練するために使用される少なくとも1つの発話例を含む。いくつかの実施形態では、マスターボットシステムで使用されるスキルボット呼出し段階415およびタスク予測モデル460は、個々のスキルボットの信頼度スコアおよびシステムインテントの信頼度スコアを判断するために訓練される。同様に、インテント予測段階420およびインテント予測モデル465は、スキルボットシステムに関連付けられたインテントごとに信頼度スコアを判断するように訓練され得る。スキルボット呼出し段階415およびタスク予測モデル460によって実行される分類がボットレベルであるのに対し、インテント予測段階420およびインテント予測モデル465によって実行される分類はインテントレベルであり、したがって、よりきめ細かい。
【0118】
ストップワードデータ拡張および発話分類のための技術
図5は、特定の実施形態に係る、訓練データセットをストップワードで拡張するためのプロセス500を示すフローチャートである。図5に示された処理は、それぞれのシステム、ハードウェア、またはそれらの組合せの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)で実現されてもよい。ソフトウェアは、非一時的なストレージ媒体(たとえば、メモリデバイス)に格納されてもよい。図5に示され、以下に説明される方法は、例示的かつ非限定的であることを意図している。図5は、特定のシーケンスまたは順序で発生するさまざまな処理ステップを描いているが、これは限定的であることを意図していない。特定の代替的な実施形態では、ステップは、何らかの異なる順序で実行されてもよい、または、いくつかのステップは、並行して実行されてもよい。図1図4に示された実施形態のような特定の実施形態では、図5に示された処理は、前処理サブシステム(たとえば、前処理サブシステム210または予測モデル訓練段階410)によって実行されて、1つまたは複数の予測モデル(たとえば、インテント分類器242もしくは320または予測モデル425)による訓練のためのストップワード拡張データセットを生成してもよい。
【0119】
505において、発話の訓練セットを受信する。発話の訓練セットは、インドメイン発話からなり、1つ以上の発話から1つ以上のインテントを特定するように、インテント分類器を訓練するために受信される。インドメイン発話は、分類器によって特定されるべき1つ以上のインテントに関連する発話である。たとえば、レストラン注文スキルのピザ注文インテントについてのインドメイン発話は、「ピザを注文したい。」でもよい。発話の訓練セットは、データ処理システム、(たとえば、図4に関して説明したチャットボットシステム400)によって受信され、予測モデル425などのインテント分類器は、図1図2および図3に関して説明したように、チャットボットシステムなど、1つまたは複数のコンピューティングシステムにおいて実現される。
【0120】
510において、発話の訓練セットは、データ処理システムによってストップワードで拡張されて、未解決のインテントに対応する未解決のインテントカテゴリについて、アウトドメイン発話の拡張された訓練セットを生成する。さまざまな実施形態において、拡張することは、(i)発話の訓練セットから1つ以上の発話を選択すること、ならびに(ii)選択された発話ごとに、発話内の既存のストップワードおよび/またはストップワードフレーズを保存し、発話内の少なくとも1つの非ストップワードを、ストップワードのリストから選択されるストップワードまたはストップワードフレーズ(フレーズを作成するために組合せた2つ以上のストップワード)に置換して、アウトドメイン発話を生成することを含む。アウトドメイン発話とは、分類器によって特定されるべき1つ以上のインテントに無関係な発話である。たとえば、レストラン注文スキルの同じピザ注文インテントについてのアウトドメイン発話は、「What’s the weather like today?(今日の天気はどうですか)」であるかもしれない。ユーザの発話またはメッセージが発話の訓練セットと明らかに異なるため、分類器は容易にそれを分類できない場合を区別できるが、分類器をそれでも、そのような発話を未解決のインテントに分類するように学習する必要がある。未解決のインテントは、分類器によってスキルのどのインテントにも解決されるべきではないアウトドメイン発話を含む発話について定義される。
【0121】
事例によっては、選択された発話ごとに、その発話内の既存のストップワードは保存され、その発言内のすべての非ストップワードは、ストップワードのリストから選択されるストップワードまたはストップワードフレーズで置換される。他の事例では、少なくとも1つの非ストップワードは、発話内の非ストップワードの1つ、2つ、3つ、4つ、または5つである。他の事例では、選択された発話ごとに、発話内の既存のストップワードは保存され、発話内の非ストップワードの少なくとも1つは、ストップワードのリストから選択されるストップワードまたはストップワードフレーズにランダムに置換される。ストップワードのリストは、一般的な単語のリスト、テキストコーパス、出版物、発話の訓練セットからの原文、またはそれらの任意の組合せから生成されてもよい。
【0122】
理解されるべきであるが、事例の訓練セットからの1つ以上の発話は、未解決のインテントに対応する未解決インテントカテゴリ用のアウトドメイン発話の追加の「拡張」訓練セットを構築しつつ1つ以上の発話から1つ以上のインテントを特定するように、インテント分類器を訓練するための発話の訓練セットを維持するように保存される。さらに、1つ以上の発話を選択し、処理して(すなわち、ストップワードの保存、および/または非ストップワードの置換)、事前に定義された拡張率に基づいて、アウトドメイン発話の拡張された訓練セットを生成する。これは、(i)発話の訓練セットから1つ以上の発話を反復的に選択し、各発話を1回処理して、事前に定義された拡張率に基づいて、対応する単一のアウトドメイン発話を生成すること、(ii)発話の訓練セットから1つ以上の発話を選択し、1つ以上の発話を複数回処理して、事前に定義された拡張率に基づいて、各発話から複数のアウトドメイン発話を生成すること、または(iii)それらの任意の組合せを含み得る。事前に定義された拡張率は、1:0.05~1:1(元の発話:拡張された発話)である。
【0123】
いくつかの実施形態では、発話を選択することは、発話の訓練セットから反復的またはランダムに発話を選択することを含む。いくつかの実施形態では、発話を選択することは、発話の訓練セット内の発話の冒頭の連続したストップワード(すなわち、連続して組合わされた2つ以上のストップワード)を検索し、発話の訓練セット内の発話の冒頭の最も長い連続したストップワードを有する発話を選択することを含む。いくつかの実施形態では、発話を選択することは、発話の訓練セット内の発話の任意の場所でn個の連続するストップワードを検索することと、発話の任意の場所でn個の連続するストップワードを有する発話を選択することとを含む。発話内の少なくとも1つの非ストップワードをストップワードのリストから選択されるストップワードもしくはストップワードフレーズで置換することに加えて、またはそれに代えて、発話の冒頭の最も長い連続ストップワードおよび/または発話の任意の場所のn個の連続ストップワードを抽出し、それら自体をアウトドメイン発話として用いてもよい。
【0124】
515において、予測モデルは、発話がスキルボットが実行するように構成されているタスクを表す可能性を判断するため、または発話をスキルボットに関連付けられたインテントに一致させるために、発話の拡張された訓練セットを使用して訓練される。その後、520において、訓練された予測モデルは、チャットボットシステム内に(たとえば、スキルボットの一部として)展開されて、発話がスキルボットが実行するように構成されているタスクを表す可能性を判断してもよい、または発話をスキルボットに関連付けられたインテントに一致させてもよい。たとえば、発話を受信し、その発話を分析して、その発話にスキルボットの呼出し名が含まれているかどうかを判断してもよい。呼出し名が見つからない場合、発話は非明示的な呼出しであるとみなされ、訓練済みモデルなどのインテント分類器で処理が進められる。呼出し名があると判断される場合、発話は明示的な呼出しとみなされ、プロセスは発話のどの部分が呼出し名と関連付けられているかを判断するために進められる。
【0125】
訓練されたモデルが呼出される事例では、受信された発話全体がインテント分類器への入力として提供される。発話を受信するインテント分類器は、マスターボットのインテント分類器(たとえば、図2のインテント分類器242)であり得る。インテント分類器は、発話のインテントがシステムインテント(たとえば、退出、ヘルプ)または特定のスキルボットに一致するかどうかを判断するために、ストップワード拡張データで訓練された機械学習ベースの、または規則ベースの分類器であり得る。本明細書で説明するように、マスターボットによって実行されるインテント分析は、特定のスキルボット内のどのインテントが発話に最も一致するかを判断することなく、特定のスキルボットへの一致に限定される場合がある。したがって、発話を受信するインテント分類器は、呼出すべき特定のスキルボットを特定してもよい。代替的に、発話が特定のシステムインテントを表す(たとえば、発話が「退出」または「ヘルプ」という単語を含む)場合、発話を受信するインテント分類器は、特定のシステムインテントを特定して、この特定のシステムインテント用に構成されたダイアログフローに基づいて、マスターボットとユーザとの間の会話をトリガしてもよい。
【0126】
呼出し名がある事例では、1つ以上の明示的な呼出し規則を適用して、発話のどの部分が呼出し名と関連するかを判断する。この判断は、品詞タグ、依存関係情報、および/または発話とともに受信された他の抽出情報を使用した発話の文構造の分析に基づき得る。たとえば、呼出し名と関連付けられた部分は、呼出し名を含む名詞フレーズ、または呼出し名に対応する前置詞付き目的語であり得る。処理に基づいて判断された、呼出し名に関連付けられた部分は、削除される。発話の意味を伝えるのに必要でない発話の他の部分(たとえば、前置詞の単語)も削除され得る。発話の特定の部分の除去は、呼出し名に関連付けられたスキルボットのための入力を生成する。受信した発話の一部分が削除後に残っている場合、残りの部分は、スキルボットに入力するための新しい発話を、たとえば、テキスト文字列として形成する。そうでなければ、受信した発話が完全に除去される場合、入力は空の文字列でもよい。
【0127】
その後、呼出し名と関連付けられたスキルボットが呼出され、スキルボットに生成された入力が提供される。生成された入力を受信すると、呼出されたスキルボットは、たとえば、ストップワード拡張データを用いて訓練されたスキルボットのインテント分類器を用いて、インテント分析を行って入力を処理して、入力に表されたユーザインテントに一致するボットインテントを特定する。一致するボットインテントを特定することにより、一致するボットインテントに関連付けられたダイアログフローに従って、スキルボットが特定のアクションを実行する、またはユーザとの会話を開始することが可能になる。たとえば、入力が空文字列である場合、ダイアログフローに定義されたデフォルト状態(たとえば、歓迎メッセージ)で会話が開始される可能性がある。代替的に、入力が空文字列でない場合、会話は、たとえば、入力がエンティティの値、または入力の一部として受信したことによりスキルボットがもはやユーザに尋ねる必要のない他の情報を含むため、何らかの中間状態で開始され得る。他の例として、スキルボットは、入力を処理できないと判断してもよい(たとえば、スキルボットに設定されたすべてのボットインテントの信頼度スコアが特定の閾値未満であるため)。この状況では、スキルボットは、マスターボットに入力を戻して処理(たとえば、マスターボットのインテント分類器を用いたインテント分析)してもよい、または、スキルボットはユーザに説明を促してもよい。
【0128】
さまざまな実施形態において、チャットボットシステム内でのインテント分類器の展開および使用は、チャットボットシステムが、チャットボットシステムと対話するユーザによって生成された発話を受信することと、チャットボットシステム内に展開されたインテント分類器を用いて、発話を、解決済みのインテントに対応する解決済みインテントカテゴリ、または未解決のインテントに対応する未解決インテントカテゴリに分類することと、分類に基づき、インテント分類器を用いて、解決済みインテントまたは未解決インテントを出力することとを含む。インテント分類器は、訓練データを用いて特定された複数のモデルパラメータを含み、訓練データは、インテント分類器を、1つ以上の発話について1つまたは複数の解決済みインテントを特定するように訓練するための発話の訓練セットと、インテント分類器を、1つ以上の発話について1つ以上の未解決インテントを特定するように訓練するためのアウトドメイン発話の拡張された訓練セットとを含み、アウトドメイン発話の拡張された訓練セットは、発話の訓練セットから、発話内の既存のストップワードパターンが保存され、かつ、発話の各々における少なくとも1つの非ストップワードがストップワードとランダムに置換される音声を含むように、人工的に生成されている。複数のモデルパラメータは、損失関数の最小化に基づいて、訓練データを用いて特定される。
【0129】
説明的なシステム
図6は、分散システム600を示す簡略図である。示された例では、分散システム600は、1つ以上の通信ネットワーク610を介してサーバ612に結合された1つ以上のクライアントコンピューティングデバイス602,604,606および608を含む。クライアントコンピューティングデバイス602,604,606および608は、1つまたは複数のアプリケーションを実行するように構成されてもよい。
【0130】
さまざまな例において、サーバ612は、本開示で説明する1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。特定の例では、サーバ612は、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供してもよい。例によっては、これらのサービスは、クライアントコンピューティング装置602,604,606および/または608のユーザに対して、SaaS(Software as a Service)モデル下など、ウェブベースのサービスまたはクラウドサービスとして提供されてもよい。そこで、クライアントコンピューティングデバイス602,604,606および/または608を操作するユーザは、これらのコンポーネントによって提供されるサービスを利用するために、サーバ612と対話する1つまたは複数のクライアントアプリケーションを利用してもよい。
【0131】
図6に示された構成において、サーバ612は、サーバ612によって実行される機能を実現する1つまたは複数のコンポーネント618,620および622を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合せによって実行され得るソフトウェアコンポーネントを含み得る。分散システム600と異なり得るさまざまな異なるシステム構成が可能であることを理解されたい。したがって、図6に示す例は、システムの例を実現するための分散システムの一例であり、限定的であることを意図していない。
【0132】
ユーザは、クライアントコンピューティングデバイス602,604,606および/または608を使用して、1つ以上のアプリケーション、モデルまたはチャットボットを実行してもよく、これらは、その後本開示の教示に従って実現またはサービスされ得る1つ以上のイベントまたはモデルを生成してもよい。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスと対話することを可能にするインターフェイスを提供してもよい。また、クライアントデバイスは、このインターフェイスを介して、ユーザに情報を出力してもよい。図6は、4つのクライアントコンピューティングデバイスのみを描写しているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。
【0133】
クライアントデバイスは、携帯型ハンドヘルドデバイス、パーソナルコンピュータおよびラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、およびセンサまたは他のセンシングデバイスなど、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまなモバイルオペレーティングシステム(たとえば、Microsoft Windows(登録商標)Mobile(登録商標),iOS(登録商標),Windows Phone(登録商標),Android(商標),BlackBerry(登録商標),Palm OS(登録商標))を含むさまざまな種類およびバージョンのソフトウェアアプリケーションならびにオペレーティングシステム(たとえば、Microsoft Windows、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIXライクなオペレーティングシステム、Linux(登録商標)またはGoogle Chrome(商標)OSなどのLinuxライクなオペレーティングシステムなど)を実行してもよい。携帯型ハンドヘルドデバイスは、携帯電話、スマートフォン(たとえば、iPhone(登録商標))、タブレット(たとえば、iPad(登録商標))、およびパーソナルデジタルアシスタント(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよび他のデバイスを含み得る。ゲームシステムは、各種携帯ゲームデバイス、インターネット対応ゲームデバイス(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを有するまたは有さないMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、およびNintendo(登録商標)が提供する各種ゲームシステムなど)等を含み得る。クライアントデバイスは、各種インターネット関連アプリ、通信アプリケーション(たとえば、電子メールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)等の各種異なるアプリケーションを実行可能でもよく、各種通信プロトコルを使用してもよい。
【0134】
ネットワーク(複数可)610は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、およびAppleTalk(登録商標)などを含むがこれらに限定されない、多様な利用可能プロトコルのいずれかを使用してデータ通信をサポートし得る当業者にとって、なじみのある任意のタイプのネットワークであり得る。単なる例として、ネットワーク(複数可)610は、ローカルエリアネットワーク(LAN)、イーサネット(登録商標)、トークンリングに基づくネットワーク、広域ネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、プロトコルのIEEE(Institute of Electrical and Electronics)1002.11スーツ、Bluetooth(登録商標)、および/または他の無線プロトコルのいずれかで動作するネットワーク)、ならびに/またはこれらの組合せならびに/または他のネットワークでもよい。
【0135】
サーバ612は、1台以上の汎用コンピュータ、サーバ専用コンピュータ(例として、PC(パーソナルコンピュータ)サーバ、UNIXサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを備える)、サーバファーム、サーバクラスタ、または他の任意の適切な配置および/もしくは組合せで構成されてもよい。サーバ612は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、またはサーバ用の仮想ストレージデバイスを維持するために仮想化され得る論理ストレージデバイスの1つ以上の柔軟なプールなどの仮想化を伴う他のコンピューティングアーキテクチャを含み得る。さまざまな例において、サーバ612は、前述の開示において説明される機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。
【0136】
サーバ612のコンピューティングシステムは、上記で議論されたもののいずれかに加えて、任意の市販のサーバオペレーティングシステムを含む1つ以上のオペレーティングシステムを実行可能である。サーバ612はまた、HTTP(hypertext transport protocol)サーバ、FTP(file transfer protocol)サーバ、CGI(common gateway interface)サーバ、JAVA(登録商標)サーバ、およびデータベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのいずれかを実行してもよい。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(International Business Machines:登録商標)から市販されているものなどが挙げられるが、これらに限定されるわけではない。
【0137】
いくつかの実現例では、サーバ612は、クライアントコンピューティングデバイス602,604,606および608のユーザから受信したデータフィードおよび/またはイベント更新を分析および統合するための、1つまたは複数のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、これらに限定されないが、Twitter(登録商標)フィード、Facebook(登録商標)の更新、または1つ以上のサードパーティ情報源から受信したリアルタイムの更新、および連続的なデータストリームを含み、これらは、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、ならびに自動車トラフィック監視などに関連するリアルタイムイベントを含み得る。サーバ612は、クライアントコンピューティングデバイス602,604,606および608の1つ以上の表示デバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するための、1つまたは複数のアプリケーションも含み得る。
【0138】
また、分散システム600は、1つ以上のデータリポジトリ614,616を含み得る。これらのデータリポジトリは、特定の例において、データおよび他の情報を格納するために使用されてもよい。たとえば、データリポジトリ614,616のうちの1つ以上は、さまざまな実施形態に従ってさまざまな機能を実行する際にサーバ612によって使用されるチャットボットが使用するための、チャットボットパフォーマンスまたは生成されたモデルに関する情報などの情報を格納するために使用されてもよい。データリポジトリ614,616は、さまざまな場所に存在してもよい。たとえば、サーバ612によって使用されるデータリポジトリは、サーバ612にローカルでもよい、またはサーバ612からリモートで、ネットワークベースまたは専用の接続を介して、サーバ612と通信していてもよい。データリポジトリ614,616は、異なるタイプでもよい。特定の例では、サーバ612によって使用されるデータリポジトリは、データベース、たとえば、オラクル・コーポレイションおよび他のベンダーによって提供されるデータベースなどのリレーショナルデータベースでもよい。これらのデータベースのうちの1つまたは複数は、SQフォーマットのコマンドに応答して、データベースとの間でデータの格納、更新、および取得を可能にするように適合され得る。
【0139】
特定の例では、データリポジトリ614,616のうちの1つまたは複数は、アプリケーションデータを格納するためにアプリケーションによって使用されることもある。アプリケーションによって使用されるデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的なストレージリポジトリなどの異なるタイプでもよい。
【0140】
特定の例では、本開示で説明した機能は、クラウド環境を介してサービスとして提供されてもよい。図7は、特定の例に従ってさまざまなサービスがクラウドサービスとして提供され得る、クラウドベースのシステム環境の簡略化されたブロック図である。図7に示された例では、クラウドインフラストラクチャシステム702は、1つまたは複数のクライアントコンピューティングデバイス704,706および708を使用して、ユーザによって要求され得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、サーバ612について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバから構成されてもよい。クラウドインフラストラクチャシステム702のコンピュータは、汎用コンピュータ、特殊サーバコンピュータ、サーバファーム、サーバクラスタ、または任意の他の適切な配置および/もしくは組合せとして編成されてもよい。
【0141】
ネットワーク(複数可)710は、クライアント704,706および708とクラウドインフラストラクチャシステム702との間の通信およびデータの交換を容易にし得る。ネットワーク(複数可)710は、1つ以上のネットワークを含み得る。ネットワークは、同じタイプでもよい、または異なるタイプでもよい。ネットワーク(複数可)710は、通信を容易にするために、有線および/または無線プロトコルを含む1つ以上の通信プロトコルをサポートしてもよい。
【0142】
図7に示された例は、クラウドインフラストラクチャシステムの一例に過ぎず、限定的であることを意図していない。いくつかの他の例において、クラウドインフラストラクチャシステム702は、図7に示されたものよりも多いまたは少ない数のコンポーネントを有してもよい、2つ以上のコンポーネントを組合せてもよい、またはコンポーネントの異なる構成もしくは配置を有してもよいことを理解されたい。たとえば、図7は3つのクライアントコンピューティングデバイスを描いているが、代替例では任意の数のクライアントコンピューティングデバイスがサポートされてもよい。
【0143】
通常、クラウドサービスという用語は、サービスプロバイダのシステム(たとえば、クラウドインフラストラクチャシステム702)により、オンデマンドで、インターネットなどの通信ネットワークを介してユーザが利用可能なサービスを指すために用いられる。一般に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自体のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダが管理する。そのため、顧客は、クラウドサービスプロバイダが提供するクラウドサービスを、ライセンス、サポート、またはハードウェアおよびソフトウェアのリソースをサービスのために別途購入することなく、利用することができる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、アプリケーションを実行するためのインフラストラクチャリソースを購入する必要がなく、インターネットを介してオンデマンドで、アプリケーションを注文し、使用することができる。クラウドサービスは、アプリケーション、リソースおよびサービスへの容易で拡張性のあるアクセスを提供するように設計されている。いくつかのプロバイダがクラウドサービスを提供している。たとえば、カリフォルニア州レッドウッドショアーズのオラクル・コーポレーションが提供しているいくつかのクラウドサービスは、ミドルウェアサービス、データベースサービス、およびJavaクラウドサービスなどである。
【0144】
特定の例では、クラウドインフラストラクチャシステム702は、ハイブリッドサービスモデルを含む、SaaS(Software as a Service)モデル、PaaS(Platform as a Service)モデル、およびIaaS(Infrastructure as a Service)モデルなどの異なるモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム702は、さまざまなクラウドサービスの提供を可能にするアプリケーション、ミドルウェア、データベース、および他のリソースのスーツを含み得る。
【0145】
SaaSモデルは、顧客が基礎となるアプリケーション用のハードウェアまたはソフトウェアを購入する必要がなく、インターネットなどの通信ネットワークを介して、アプリケーションまたはソフトウェアをサービスとして顧客に提供することを可能にする。たとえば、SaaSモデルは、クラウドインフラストラクチャシステム702によってホストされるオンデマンドアプリケーションへのアクセスを顧客に提供するために使用され得る。オラクル・コーポレイションにより提供されるSaaSサービスの例には、人事/資本管理、顧客関係管理(CRM)、企業資源計画(ERP)、サプライチェーン管理(SCM)、企業業績管理(EPM)、分析サービス、およびソーシャルアプリケーションなどの各種サービスが含まれるが、これらに限定されない。
【0146】
IaaSモデルは一般に、インフラストラクチャリソース(サーバ、ストレージ、ハードウェアおよびネットワーキングリソースなど)をクラウドサービスとして顧客に提供して、柔軟な計算およびストレージの機能を提供するために使用される。オラクル・コーポレーションによって、さまざまなIaaSサービスが提供されている。
【0147】
PaaSモデルは一般に、顧客がアプリケーションおよびサービスを開発、実行、ならびに管理するためのプラットフォームおよび環境リソースを、顧客がそのようなリソースを調達、構築、または維持することなく、サービスとして提供するために使用される。オラクル・コーポレーションが提供するPaaSサービスの例には、JCS(Oracle Java Cloud Service)、DBCS(Oracle Database Cloud Service)、データ管理クラウドサービス、および各種アプリケーション開発ソリューションサービス等が含まれるが、これらに限定されるわけではない。
【0148】
クラウドサービスは一般に、オンデマンドセルフサービスベースで、予約ベースで、柔軟にスケーラブルで、信頼性があり、可用性があり、かつ安全性の高い方法で提供される。たとえば、顧客は、予約注文を介して、クラウドインフラストラクチャシステム702によって提供される1つ以上のサービスを注文することができる。次に、クラウドインフラストラクチャシステム702は、顧客の予約注文で要求されたサービスを提供するための処理を実行する。たとえば、ユーザは、上述のように、クラウドインフラストラクチャシステムに特定のアクション(たとえば、インテント)を取るように要求するために発話を使用してもよい、および/または、本明細書に記載されるようにチャットボットシステムのためにサービスを提供してもよい。クラウドインフラストラクチャシステム702は、1つまたはさらには複数のクラウドサービスを提供するように構成されてもよい。
【0149】
クラウドインフラストラクチャシステム702は、異なる展開モデルを介してクラウドサービスを提供してもよい。パブリッククラウドモデルでは、クラウドインフラストラクチャシステム702は、サードパーティ・クラウドサービスプロバイダによって所有されてもよく、クラウドサービスは、任意の一般公衆顧客に提供され、顧客は個人または企業でもよい。特定の他の例では、プライベートクラウドモデルの下で、クラウドインフラストラクチャシステム702は、組織内(たとえば、企業組織内)で運用されてもよく、サービスは、組織内の顧客に提供されてもよい。たとえば、顧客は、人事部、給与部などの企業のさまざまな部署でもよい、またはさらには企業内の個人でもよい。特定の他の例では、コミュニティクラウドモデルの下で、クラウドインフラストラクチャシステム702および提供されるサービスは、関連するコミュニティ内の複数の組織によって共有されてもよい。また、上述したモデルのハイブリッドなど、他のさまざまなモデルが使用されてもよい。
【0150】
クライアントコンピューティングデバイス704,706および708は、異なるタイプ(図6に示されたクライアントコンピューティングデバイス602,604,606および608など)でもよく、1つまたは複数のクライアントアプリケーションを操作可能でもよい。ユーザは、クラウドインフラストラクチャシステム702によって提供されるサービスを要求するなど、クライアントデバイスを使用して、クラウドインフラストラクチャシステム702と対話してもよい。たとえば、ユーザは、クライアントデバイスを使用して、本開示で説明するように、チャットボットに情報またはアクションを要求してもよい。
【0151】
例によっては、サービスを提供するためにクラウドインフラストラクチャシステム702によって実行される処理は、モデルの訓練および展開を含み得る。この分析は、1つまたは複数のモデルを訓練および展開するために、データセットの使用、分析、および操作を行うことを含み得る。この分析は、1つ以上のプロセッサによって行われてもよく、場合によっては、データを並行して処理し、データを使用してシミュレーションを実行することなどによって行われてもよい。たとえば、チャットボットシステム用の1つ以上のモデルを生成および訓練するために、クラウドインフラストラクチャシステム702によってビッグデータ分析が実行されてもよい。この分析に使用されるデータは、構造化データ(たとえば、データベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえば、データブロブ(バイナリラージオブジェクト))を含み得る。
【0152】
図7の例に示されているように、クラウドインフラストラクチャシステム702は、クラウドインフラストラクチャシステム702によって提供されるさまざまなクラウドサービスの提供を容易にするために利用されるインフラストラクチャリソース730を含み得る。インフラストラクチャリソース730は、たとえば、処理リソース、ストレージまたはメモリリソース、およびネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージをサービスするために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム702の一部でもよい。他の例では、ストレージ仮想マシンは、異なるシステムの一部でもよい。
【0153】
特定の例では、異なる顧客のためにクラウドインフラストラクチャシステム702によって提供されるさまざまなクラウドサービスをサポートするためのこれらのリソースの効率的なプロビジョニングを容易にするように、リソースは、リソースまたはリソースモジュール(「ポッド」とも呼ばれる)のセットにまとめられてもよい。各リソースモジュールまたはポッドは、1つ以上のタイプのリソースの事前に統合され最適化された組合せで構成されてもよい。特定の例では、異なるポッドは、異なるタイプのクラウドサービスについて事前にプロビジョニングされてもよい。たとえば、ポッドの第1のセットは、データベースサービス用にプロビジョニングされてもよく、ポッドの第1のセット内のポッドと異なるリソースの組合せを含み得るポッドの第2のセットは、Javaサービス用にプロビジョニングされてもよい、等である。サービスによっては、サービスをプロビジョニングするために割当てられたリソースが、サービス間で共有される場合がある。
【0154】
クラウドインフラストラクチャシステム702は、それ自体、クラウドインフラストラクチャシステム702の異なるコンポーネントによって共有され、かつ、クラウドインフラストラクチャシステム702によるサービスのプロビジョニングを容易にするサービス732を内部で使用してもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、およびファイル転送サービスなどを含み得るが、これらに限定されない。
【0155】
クラウドインフラストラクチャシステム702は、複数のサブシステムから構成されてもよい。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組合せで実現されてもよい。図7に示されているように、サブシステムは、クラウドインフラストラクチャシステム702のユーザまたは顧客がクラウドインフラストラクチャシステム702と対話することを可能にするユーザインターフェイスサブシステム712を含み得る。ユーザインターフェイスサブシステム712は、ウェブインターフェイス714、クラウドインフラストラクチャシステム702によって提供されるクラウドサービスが広告され、消費者によって購入可能であるオンラインストアインターフェイス716、および他のインターフェイス718などのさまざまな異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを使用して、インターフェイス714,716および718のうちの1つ以上を使用して、クラウドインフラストラクチャシステム702によって提供される1つ以上のサービスを要求(サービスリクエスト734)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム702によって提供されるクラウドサービスを閲覧し、顧客が加入を希望する、クラウドインフラストラクチャシステム702によって提供される1つ以上のサービスに対する加入注文を行うことができる。サービスリクエストは、顧客を識別する情報、および顧客が加入を希望する1つ以上のサービスを含み得る。たとえば、顧客は、クラウドインフラストラクチャシステム702によって提供されるサービスの予約注文を行うことができる。注文の一環として、顧客は、サービスが提供されるチャットボットシステムを特定する情報、およびオプションとしてチャットボットシステムのための1つまたは複数のクレデンシャルを提供してもよい。
【0156】
図7に示された例などの特定の例では、クラウドインフラストラクチャシステム702は、新規注文を処理するように構成された注文管理サブシステム(OMS)720を含み得る。この処理の一環として、OMS720は、まだ行われていない場合、顧客のアカウントを作成する、要求されたサービスを顧客に提供する目的で顧客に請求するために使用される、顧客からの請求および/または会計情報を受信する、顧客情報を検証する、検証時に、顧客の注文を予約する、および注文をプロビジョニングするためのさまざまなワークフローを調整するように構成されてもよい。
【0157】
適切に検証されると、OMS720は次に、処理、メモリおよびネットワーキングリソースを含む注文のためのリソースをプロビジョニングするように構成された注文プロビジョニングサブシステム(OPS)724を呼出してもよい。プロビジョニングは、注文のためのリソースを割当てること、および顧客の注文によって要求されたサービスを容易にするためにリソースを構成することを含み得る。リソースを注文のためにプロビジョニングする方法およびプロビジョニングされるリソースの種類は、顧客によって注文されたクラウドサービスの種類によって決まり得る。たとえば、あるワークフローに従って、OPS724は、要求されている特定のクラウドサービスを判断し、その特定のクラウドサービス用に事前に設定されている可能性があるポッドの数を特定するように構成されてもよい。注文について割当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲によって決まり得る。たとえば、割当てられるポッドの数は、サービスによってサポートされるユーザの数、およびサービスが要求されている期間などに基づいて判断されてもよい。そして、割当てられたポッドは、要求されたサービスを提供するために、特定の要求している顧客用にカスタマイズされてもよい。
【0158】
特定の例では、上述のようなセットアップ段階の処理は、プロビジョニングプロセスの一環として、クラウドインフラストラクチャシステム702によって実行されてもよい。クラウドインフラストラクチャシステム702は、アプリケーションIDを生成し、クラウドインフラストラクチャシステム702自体によって提供されるストレージ仮想マシンから、またはクラウドインフラストラクチャシステム702以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択してもよい。
【0159】
クラウドインフラストラクチャシステム702は、要求しているサービスが使用できるようになった時を示すために、要求している顧客に応答または通知744を送信してもよい。事例によっては、顧客が要求されたサービスの使用および利点の利用を開始することを可能にする情報(たとえば、リンク)が、顧客に送信されてもよい。特定の例では、サービスを要求している顧客に対して、応答は、クラウドインフラストラクチャシステム702によって生成されたチャットボットシステムアイデンティティと、チャットボットシステムアイデンティティに対応するチャットボットシステムについてクラウドインフラストラクチャシステム702によって選択されたチャットボットシステムを識別する情報とを含み得る。
【0160】
クラウドインフラストラクチャシステム702は、複数の顧客にサービスを提供してもよい。顧客ごとに、クラウドインフラストラクチャシステム702は、顧客から受信した1つまたは複数の予約注文に関連する情報の管理、注文に関連する顧客データの維持、および要求されたサービスの顧客への提供を担当する。クラウドインフラストラクチャシステム702は、顧客の予約したサービスの使用に関する使用統計を収集してもよい。たとえば、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量等について、統計が収集されてもよい。この使用情報は、顧客に請求するために使用されてもよい。請求は、たとえば毎月のサイクルで行われてもよい。
【0161】
クラウドインフラストラクチャシステム702は、複数の顧客に対して並行してサービスを提供し得る。クラウドインフラストラクチャシステム702は、これらの顧客のための情報(場合によっては専有情報を含む)を格納してもよい。特定の例では、クラウドインフラストラクチャシステム702は、顧客情報を管理し、ある顧客に関連する情報が他の顧客によってアクセスされないように、管理された情報の分離を提供するように構成されるID管理サブシステム(IMS)728を含む。IMS728は、情報アクセス管理などのIDサービス、認証および認可サービス、顧客のIDおよび役割ならびに関連機能を管理するためのサービス等のさまざまなセキュリティ関連サービスを提供するように構成されてもよい。
【0162】
図8は、コンピュータシステム800の例を示す図である。例によっては、コンピュータシステム800は、分散環境内のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上述したさまざまなサーバおよびコンピュータシステムを実現するために使用されてもよい。図8に示すように、コンピュータシステム800は、バスサブシステム802を介して多数の他のサブシステムと通信する処理サブシステム804を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット806、入出力サブシステム808、ストレージサブシステム818、および通信サブシステム824を含み得る。ストレージサブシステム818は、ストレージ媒体822およびシステムメモリ810を含む非一時的なコンピュータ読取可能ストレージ媒体を含み得る。
【0163】
バスサブシステム802は、コンピュータシステム800のさまざまな構成要素およびサブシステムを意図した通りに互いに通信させるためのメカニズムを提供する。バスサブシステム802は、単一のバスとして概略的に示されているが、バスサブシステムの代替例は、複数のバスを利用することができる。バスサブシステム802は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスなどを含む、いくつかのタイプのバス構造のいずれでもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子標準協会(VESA)ローカルバス、およびIEEE P1386.1規格に合わせて製造されたメザニンバスとして実現されてもよい周辺コンポーネント相互接続(PCI)バスなどを含み得る。
【0164】
処理サブシステム804は、コンピュータシステム800の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)で構成され得る。プロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含み得る。コンピュータシステム800の処理リソースは、1つ以上の処理ユニット832,834などに編成されてもよい。処理ユニットは、1つ以上のプロセッサ、同一もしくは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組合せ、またはコアとプロセッサとの他の組合せを含み得る。例によっては、処理サブシステム804は、グラフィックスプロセッサまたはデジタル信号プロセッサ(DSP)等の1つ以上の特殊目的コプロセッサを含み得る。例によっては、処理サブシステム804の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズ回路を使用して実現されてもよい。
【0165】
例によっては、処理サブシステム804の処理ユニットは、システムメモリ810またはコンピュータ読取可能ストレージ媒体822に格納された命令を実行し得る。さまざまな例において、処理ユニットは、さまざまなプログラムまたはコード命令を実行してもよく、複数の同時に実行するプログラムまたはプロセスを維持してもよい。任意の時点で、実行されるプログラムコードの一部または全部は、システムメモリ810および/または1つ以上のストレージデバイス上に潜在的に含まれるコンピュータ読取可能ストレージ媒体822上に存在していてもよい。適切なプログラミングを通じて、処理サブシステム804は、上述したさまざまな機能を提供してもよい。コンピュータシステム800が1つ以上の仮想マシンを実行している事例では、1つ以上の処理ユニットが各仮想マシンに割当てられてもよい。
【0166】
特定の例では、処理加速ユニット806は、コンピュータシステム800によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するため、または処理サブシステム804によって実行される処理の一部をオフロードするために、任意に提供されてもよい。
【0167】
入出力サブシステム808は、コンピュータシステム800に情報を入力するため、および/またはコンピュータシステム800からもしくはコンピュータシステム800を介して情報を出力するためのデバイスおよびメカニズムを含み得る。一般に、入力デバイスという用語の使用は、コンピュータシステム800に情報を入力するためのすべての可能なタイプの装置およびメカニズムを含むことを意図している。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム有する音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含み得る。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを用いて制御および対話が可能になるMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbot(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いて入力を受信するためのインターフェイスを提供するデバイス等のモーションセンシングおよび/またはジェスチャー認識デバイスも含み得る。また、ユーザインターフェイス入力デバイスは、ユーザの目の動き(たとえば、写真撮影時および/またはメニュー選択時の「まばたき」)を検出し、入力デバイス(たとえば、Google Glassへの入力としてアイジェスチャを変換するGoogle Glassまばたき検出器などのアイジェスチャ認識デバイスも含み得る。さらに、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえば、Siriナビゲータ)と対話することを可能にする音声認識検知デバイスを含み得る。
【0168】
ユーザインターフェイス入力デバイスの他の例としては、これらに限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、携帯メディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および注視追跡デバイスなどのオーディオ/視覚デバイスが含まれる。さらに、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影装置、磁気共鳴画像装置、位置放射断層撮影装置、および医療用超音波診断装置などの医療用画像入力デバイスを含み得る。また、ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、およびデジタル楽器などの音声入力デバイスを含み得る。
【0169】
一般に、出力デバイスという用語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するためのすべての可能なタイプの装置およびメカニズムを含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非視覚ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを用いたもの等のフラットパネル装置、投影装置、およびタッチスクリーンなどでもよい。たとえば、ユーザインターフェイス出力デバイスは、これらに限定されないが、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車用ナビゲーションシステム、プロッタ、音声出力デバイス、およびモデムなどのテキスト、グラフィックス、ならびにオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得る。
【0170】
ストレージサブシステム818は、コンピュータシステム800によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム818は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ読取可能ストレージ媒体を提供する。ストレージサブシステム818は、処理サブシステム804によって実行されると、上述した機能を提供するソフトウェア(たとえば、プログラム、コードモジュール、命令)を格納してもよい。ソフトウェアは、処理サブシステム804の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム818はまた、本開示の教示に従って、認証を提供してもよい。
【0171】
ストレージサブシステム818は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的なメモリデバイスを含み得る。図8に示すように、ストレージサブシステム818は、システムメモリ810と、コンピュータ読取可能ストレージ媒体822とを含む。システムメモリ810は、プログラム実行中の命令およびデータを格納するための揮発性メインランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取専用メモリ(ROM)またはフラッシュメモリとを含む多数のメモリを含み得る。いくつかの実現例では、起動時など、コンピュータシステム800内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)が、典型的にはROMに格納されてもよい。RAMは、典型的には、処理サブシステム804によって現在操作され実行されているデータおよび/またはプログラムモジュールを含む。実現例によっては、システムメモリ810は、静的ランダムアクセスメモリ(SRAM)および動的ランダムアクセスメモリ(DRAM)等の、複数の異なるタイプのメモリを含み得る。
【0172】
限定ではなく例として、図8に示されているように、システムメモリ810は、Webブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのさまざまなアプリケーションを含み得る、実行中のアプリケーションプログラム812、プログラムデータ814、およびオペレーティングシステム816をロードし得る。例として、オペレーティングシステム816は、Microsoft Windows、Apple Macintosh、および/またはLinuxオペレーティングシステムのさまざまなバージョン、種々の市販されているUNIX、またはUNIXライクなオペレーティングシステム(各種GNU/Linuxオペレーティングシステム、およびGoogle Chrome(登録商標)などを含むがこれらに限定されない)、ならびに/またはiOS、Windows Phone、Android(登録商標)OS、BlackBerry OS、Palm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0173】
コンピュータ読取可能ストレージ媒体822は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納し得る。コンピュータ読取可能媒体822は、コンピュータシステム800のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータのストレージを提供してもよい。処理サブシステム804によって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム818に格納されてもよい。例として、コンピュータ読取可能ストレージ媒体822は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスク等の光ディスクドライブなどの不揮発性メモリ、または他の光学媒体を含み得る。コンピュータ読取可能ストレージ媒体822には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、およびデジタルビデオテープなどが含まれるが、これらに限定されるわけではない。コンピュータ読取可能ストレージ媒体822はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組合せを用いるハイブリッドSSDなども含み得る。
【0174】
特定の例では、ストレージサブシステム818は、コンピュータ読取可能ストレージ媒体822にさらに接続されてもよいコンピュータ読取可能ストレージ媒体リーダ820を含み得る。リーダ820は、ディスク、フラッシュドライブなどのメモリデバイスからデータを受信し、読取るように構成されてもよい。
【0175】
特定の例では、コンピュータシステム800は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートしてもよい。たとえば、コンピュータシステム800は、1つまたは複数の仮想マシンを実行するためのサポートを提供してもよい。特定の例では、コンピュータシステム800は、仮想マシンの構成および管理を容易にしたハイパーバイザーなどのプログラムを実行してもよい。各仮想マシンは、メモリ、計算(たとえば、プロセッサ、コア)、入出力、およびネットワーキングリソースを割当てられてもよい。各仮想マシンは、一般に、他の仮想マシンから独立して動作する。仮想マシンは、一般に、独自のオペレーティングシステムを実行し、このオペレーティングシステムは、コンピュータシステム800によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じでもよい、またはこれと異なってもよい。したがって、複数のオペレーティングシステムは、場合によっては、コンピュータシステム800によって同時に実行され得る。
【0176】
通信サブシステム824は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム824は、コンピュータシステム800からデータを受信し、他のシステムへデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム824は、コンピュータシステム800が、クライアントデバイスとの間で情報を送受信するために、インターネットを介して1つまたは複数のクライアントデバイスに対して通信チャネルを確立することを可能にし得る。たとえば、コンピュータシステム800が、図1に示されたボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用されてもよい。
【0177】
通信サブシステム824は、有線および/または無線通信プロトコルの両方をサポートし得る。特定の例では、通信サブシステム824は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(enhanced data rates for global evolution)などの高度データネットワーク技術、WiFi(IEEE 802.XX family standards、もしくは他のモバイル通信技術、もしくはそれらの任意の組合せを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバコンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。例によっては、通信サブシステム824は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続性(たとえば、イーサネット)を提供してもよい。
【0178】
通信サブシステム824は、さまざまな形態でデータを送受信し得る。例によっては、他の形態に加えて、通信サブシステム824は、構造化および/または非構造化データフィード826、イベントストリーム828、イベント更新830などの形態で入力通信を受信してもよい。たとえば、通信サブシステム824は、ソーシャルメディアネットワークおよび/もしくは他の通信サービスのユーザからリアルタイムで、Twitterフィード、Facebookの更新、リッチサイトサマリー(RSS)フィードなどのウェブフィード等のデータフィード826を受信(または送信)するように、ならびに/または、1つ以上のサードパーティ情報源からリアルタイムの更新を受信(または送信)するように構成されてもよい。
【0179】
特定の例では、通信サブシステム824は、リアルタイムイベントおよび/またはイベント更新830のイベントストリーム828を含み得る連続データストリームの形態でデータを受信するように構成されてもよく、これは、明示的に終了しない連続または無限定の性質であり得る。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、および自動車トラフィック監視などを挙げることができる。
【0180】
通信サブシステム824はまた、コンピュータシステム800から他のコンピュータシステムまたはネットワークにデータを通信するように構成され得る。データは、構造化および/または非構造化データフィード826、イベントストリーム828、ならびにびイベント更新830などのさまざまな異なる形態で、コンピュータシステム800に結合された1つまたは複数のストリーミングデータソースコンピュータと通信可能な1つまたは複数のデータベースと通信されてもよい。
【0181】
コンピュータシステム800は、ハンドヘルド携帯デバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glassヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含むさまざまなタイプであり得る。コンピュータおよびネットワークの常に変化する性質のため、図8に示されたコンピュータシステム800の説明は、特定の例としてのみ意図されている。図8に示されたシステムよりも多いまたは少ない数の構成要素を有する多くの他の構成が可能である。なお、本明細書で提供される開示および教示に基づいて、さまざまな例を実施する他の手段および/または方法がある。
【0182】
特定の例を説明したが、さまざまな修正、変更、代替構造、および等価物が可能である。例は、ある特定のデータ処理環境内での動作に限定されるわけではなく、複数のデータ処理環境内で自由に動作することが可能である。さらに、特定の例は、特定の一連のトランザクションおよびステップを用いて説明されてきたが、これが限定を意図するものではないことは、当業者には明らかであろう。いくつかのフローチャートは、動作を連続的なプロセスとして記述しているが、これらの動作の多くを、並列してまたは同時に実行してもよい。さらに、動作の順序を入れ替えてもよい。工程は、図に含まれない追加のステップを有してもよい。上述した例のさまざまな特徴および態様を、単独でまたは共同で用いてもよい。
【0183】
さらに、特定の例は、ハードウェアとソフトウェアとの特定の組合せを用いて説明されたが、ハードウェアとソフトウェアとの他の組合せも可能であることを認識されたい。ある例は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組合せを用いて実施されてもよい。本明細書で説明したさまざまな処理は、同じプロセッサで実現されてもよい、または異なるプロセッサで任意の組合せで実施されてもよい。
【0184】
デバイス、システム、コンポーネントまたはモジュールが、特定の動作または機能を実行するように構成されていると説明されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することによって、コンピュータ命令もしくはコード、または非一時的ストレージ媒体に格納されたコードもしくは命令を実行するようにプログラムされたプロセッサまたはコアを実行することなど、(マイクロプロセッサなどの)プログラム可能な電子回路を動作を行うようにプログラムすること、またはそれらの任意の組合わせによって、達成されてもよい。プロセスは、プロセス間通信のための従来の技術を含むがこれらに限定されないさまざまな技術を使用して通信してもよく、プロセスの異なるペアは異なる技術を使用してもよい、またはプロセスの同じペアは異なる時間に異なる技術を使用してもよい。
【0185】
本開示では、例を十分に理解するために、具体的な詳細を示している。しかしながら、例は、これらの具体的な詳細がなくても実施可能である。たとえば、周知の回路、プロセス、アルゴリズム、構造および技術は、例を不明瞭にしないために、不必要な詳細がない状態で示されている。本説明は、例を提供するのみであり、他の例の範囲、適用性、または構成を限定することを意図していない。むしろ、例の上述した説明は、当業者に、さまざまな例を実現するための有効な説明を提供する。要素の機能および配置にさまざまな変更が加えられてもよい。
【0186】
したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で捉えられるべきである。しかしながら、特許請求の範囲で説明されたより広い精神および範囲から逸脱することなく、追加、減算、削除、ならびに他の修正および変更がなされ得ることは明らかであろう。それゆえ、特定の例が記載されているが、これらは限定的であることを意図していない。さまざまな修正および等価物は、以下の特許請求の範囲内にある。
【0187】
前述の明細書において、本開示の態様は、その具体例を参照して説明されているが、当業者であれば、本開示がこれらに限定されないことを認識するであろう。上述した本開示のさまざまな特徴および態様は、個別にまたは共同で使用可能である。さらに、例は、本明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されたものを超える任意の数の環境および用途で利用されてもよい。したがって、本明細書および図面は、限定的ではなく例示的であるとみなされるべきである。
【0188】
前述の説明では、例示のために、方法は特定の順序で記述された。代替の例では、方法は、説明されたものとは異なる順序で実行されてもよいことを理解されたい。また、上述した方法は、ハードウェアコンポーネントによって実行されてもよく、または、機械によって実行可能な命令のシーケンスで具体化されてもよく、それらの命令を用いてプログラムされた汎用もしくは特殊用途プロセッサまたは論理回路などの機械に、方法を実行させるために使用されてもよいことを理解されたい。これらの機械によって実行可能な命令は、CD-ROMまたは他のタイプの光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光カード、フラッシュメモリ、または電子命令の格納に適した他のタイプの機械読取可能媒体のような1つ以上の機械読取可能媒体に格納することができる。または、本方法は、ハードウェアとソフトウェアとの組合せによって実行されてもよい。
【0189】
構成要素が特定の動作を行うように構成されていると説明されている場合、そのような構成は、たとえば、動作を行うように電子回路もしくは他のハードウェアを設計することによって、動作を行うようにプログラム可能な電子回路(たとえば、マイクロプロセッサ、もしくは他の適切な電子回路)をプログラムすることによって、またはそれらの任意の組合せによって、達成されてもよい。
【0190】
本明細書では、本出願の例示的な例を詳細に説明したが、本発明の概念は、他の態様でさまざまに具体化され、採用されてもよく、添付の請求項は、従来技術によって限定される場合を除き、そのような変形を含むように解釈されることが意図されると理解されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8