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

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

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

特表2024-503517自然言語処理のための多因子モデリング
<>
  • 特表-自然言語処理のための多因子モデリング 図1
  • 特表-自然言語処理のための多因子モデリング 図2
  • 特表-自然言語処理のための多因子モデリング 図3
  • 特表-自然言語処理のための多因子モデリング 図4
  • 特表-自然言語処理のための多因子モデリング 図5
  • 特表-自然言語処理のための多因子モデリング 図6A
  • 特表-自然言語処理のための多因子モデリング 図6B
  • 特表-自然言語処理のための多因子モデリング 図7A
  • 特表-自然言語処理のための多因子モデリング 図7B
  • 特表-自然言語処理のための多因子モデリング 図8
  • 特表-自然言語処理のための多因子モデリング 図9
  • 特表-自然言語処理のための多因子モデリング 図10
  • 特表-自然言語処理のための多因子モデリング 図11
  • 特表-自然言語処理のための多因子モデリング 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-25
(54)【発明の名称】自然言語処理のための多因子モデリング
(51)【国際特許分類】
   G06F 16/90 20190101AFI20240118BHJP
【FI】
G06F16/90 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023543398
(86)(22)【出願日】2022-01-19
(85)【翻訳文提出日】2023-09-07
(86)【国際出願番号】 US2022012936
(87)【国際公開番号】W WO2022159461
(87)【国際公開日】2022-07-28
(31)【優先権主張番号】63/139,693
(32)【優先日】2021-01-20
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/578,170
(32)【優先日】2022-01-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ジャラルッディン,エリアス・ルクマン
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】ジョンソン,マーク・エドワード
(72)【発明者】
【氏名】ドゥオング,タン・ロング
(72)【発明者】
【氏名】シュ,イン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
5B175FA03
5B175GC03
5B175HA01
5B175HB03
(57)【要約】
自然言語処理のためにチャットボットシステムをトレーニングおよび利用するための多因子モデリングのための技術を含むシステムのための技術が開示される。一実施形態では、ある方法は、自然言語ベースのクエリに対応する発話データのセットを受信することと、チャットボットについて1つ以上のインテントを決定することとを含み、1つ以上のインテントは、自然言語ベースのクエリについて考えられ得るコンテキストに対応し、チャットボットのために、あるスキルに関連付けられ、本方法はさらに、1つ以上のインテント分類データセットを生成することを含み、各インテント分類データセットは、自然言語クエリが1つ以上のインテントのうちのあるインテントに対応する確率に関連づけられ、本方法はさらに、1つ以上のスキルのうちのあるスキルに各々が対応する、1つ以上の変換されたデータセットを生成することと、1つ以上の変換されたデータセットに基づいて1つ以上のスキルから第1のスキルを決定することと、決定された第1のスキルに基づいて、発話データのセットを処理して、自然言語ベースのクエリを解決することとを含む。
【特許請求の範囲】
【請求項1】
方法であって、
コンピューティングデバイスが、チャットボットによって解釈可能な自然言語ベースのクエリに対応する発話データのセットを受信することと、
前記コンピューティングデバイスが、前記チャットボットのために1つ以上のインテントを決定することとを含み、前記1つ以上のインテントの各々は、前記自然言語ベースのクエリについての考えられ得るコンテキストに対応し、前記チャットボットのための1つ以上のスキルのうちのあるスキルに関連付けられ、前記方法はさらに、
前記コンピューティングデバイスが、インテント分類器モデルを使用して、前記1つ以上のインテントに基づいて1つ以上のインテント分類データセットを生成することを含み、各インテント分類データセットは、前記自然言語クエリが前記1つ以上のインテントのうちのあるインテントに対応する確率と関連付けられ、前記方法はさらに、
前記コンピューティングデバイスが、変換マスクモデルを使用して、前記1つ以上のインテント分類データセットに基づいて、1つ以上の変換されたデータセットを生成することを含み、前記1つ以上の変換されたデータセットの各々は、前記1つ以上のスキルのうちのあるスキルに対応し、前記方法はさらに、
前記コンピューティングデバイスが、前記1つ以上の変換されたデータセットに基づいて、前記1つ以上のスキルから第1のスキルを決定することと、
前記決定された第1のスキルに基づいて、前記発話データのセットを処理して、前記自然言語ベースのクエリを解決することとを含む、方法。
【請求項2】
前記発話データのセットは、前記コンピュータデバイスと通信する自動化されたデジタルアシスタントと対話するクライアントデバイスから受信される、請求項1に記載の方法。
【請求項3】
前記変換マスクモデルは、1つ以上の変換値を含み、各変換値は、少なくとも1つのインテントと少なくとも1つのスキルとの比に対応する、請求項1に記載の方法。
【請求項4】
前記発話データのセットは、少なくとも、前記1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、
前記方法はさらに、
前記コンピューティングデバイスが、前記グラウンドトゥルーススキルを前記第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、
前記コンピューティングデバイスが、前記トレーニング損失値に基づいて前記1つ以上の変換値を変更することとを含む、請求項3に記載の方法。
【請求項5】
前記インテント分類器モデルは、入力として前記発話データのセットを受信し、前記1つ以上のインテント分類データセットを出力するよう構成された機械学習モデルであり、
前記発話データのセットは、少なくとも、前記1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、
前記方法はさらに、
前記コンピューティングデバイスが、前記グラウンドトゥルーススキルを前記第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、
前記コンピューティングデバイスが、前記1つ以上のトレーニング損失値を用いて、前記トレーニング損失値に基づいて前記機械学習モデルの構造を変更することにより、前記機械学習モデルをトレーニングすることとを含む、請求項1に記載の方法。
【請求項6】
前記方法はさらに、
前記コンピューティングデバイスが、スキル分類器モデルを使用して第2のスキルデータを生成することをさらに含み、前記スキル分類器モデルは、入力として前記発話データのセットを受信し、前記1つ以上のスキルから、予測されるスキルを出力するよう構成された機械学習モデルであり、前記方法はさらに、
前記コンピューティングデバイスが、前記第1のスキルと前記第2のスキルとを比較して1つ以上のトレーニング損失値を生成することを含み、前記1つ以上のトレーニング損失値は、前記第1のスキルと前記第2のスキルとの間の1つ以上の差に対応し、前記方法はさらに、
前記コンピューティングデバイスが、前記1つ以上のトレーニング損失値を用いて、前記トレーニング損失値に基づいて前記機械学習モデルの構造を変更することにより、前記機械学習モデルをトレーニングすることを含む、請求項1に記載の方法。
【請求項7】
前記方法はさらに、
前記決定された第1のスキルに基づいて、前記発話データのセットを処理して、前記自然言語ベースのクエリに対する自然言語ベースの応答を生成することと、
前記自然言語ベースの応答をクライアントデバイスに送信することとを含む、請求項1に記載の方法。
【請求項8】
前記コンピューティングデバイスが、前記発話データを処理して、精緻化された発話データを、前記インテント分類器モデルに入力するために、あるフォーマットで生成することをさらに含み、前記精緻化された発話データは、前記1つ以上のインテント分類データセットを生成させるために前記インテント分類器モデルに入力される、請求項1に記載の方法。
【請求項9】
前記1つ以上の変換されたデータセットの各変換されたデータセットは、前記発話データが前記1つ以上のスキルのうちのあるスキルに対応する尤度に対応する確率値を含み、
前記第1のスキルを決定することは、1つ以上の確率値のセットの中から最も高い確率値を有する変換されたデータセットに対応するスキルを選択することを含む、請求項1に記載の方法。
【請求項10】
前記第1のスキルを決定することは、前記インテント分類データセットに関連付けられる確率値に基づいてスキルごとに1つ以上の平均確率値を生成することと、前記1つ以上の平均確率値の中から最も高い平均確率値に関連付けられるスキルを選択することとを含む、請求項1に記載の方法。
【請求項11】
統合されたコンピューティングシステムを備えるシステムであって、前記統合されたコンピューティングシステムは、1つ以上のプロセッサと、命令が記憶された非一時的な機械可読記憶媒体とを含み、前記命令は、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
コンピューティングデバイスが、チャットボットによって解釈可能な自然言語ベースのクエリに対応する発話データのセットを受信することと、
前記コンピューティングデバイスが、前記チャットボットのために1つ以上のインテントを決定することとを実行させ、前記1つ以上のインテントの各々は、前記自然言語ベースのクエリについての考えられ得るコンテキストに対応し、前記チャットボットのための1つ以上のスキルのうちのあるスキルに関連付けられ、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、インテント分類器モデルを使用して、前記1つ以上のインテントに基づいて1つ以上のインテント分類データセットを生成することを実行させ、各インテント分類データセットは、前記自然言語クエリが前記1つ以上のインテントのうちのあるインテントに対応する確率と関連付けられ、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、変換マスクモデルを使用して、前記1つ以上のインテント分類データセットに基づいて、1つ以上の変換されたデータセットを生成することを実行させ、前記1つ以上の変換されたデータセットの各々は、前記1つ以上のスキルのうちのあるスキルに対応し、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、前記1つ以上の変換されたデータセットに基づいて、前記1つ以上のスキルから第1のスキルを決定することと、
前記決定された第1のスキルに基づいて、前記発話データのセットを処理して、前記自然言語ベースのクエリを解決することとを実行させる、システム。
【請求項12】
前記発話データのセットは、前記コンピュータデバイスと通信する自動化されたデジタルアシスタントと対話するクライアントデバイスから受信される、請求項11に記載のシステム。
【請求項13】
前記変換マスクモデルは、1つ以上の変換値を含み、各変換値は、少なくとも1つのインテントと少なくとも1つのスキルとの比に対応する、請求項11に記載のシステム。
【請求項14】
前記発話データのセットは、少なくとも、前記1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、
前記方法はさらに、
前記コンピューティングデバイスが、前記グラウンドトゥルーススキルを前記第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、
前記コンピューティングデバイスが、前記トレーニング損失値に基づいて前記1つ以上の変換値を変更することとを含む、請求項13に記載のシステム。
【請求項15】
前記インテント分類器モデルは、入力として前記発話データのセットを受信し、前記1つ以上のインテント分類データセットを出力するよう構成された機械学習モデルであり、
前記発話データのセットは、少なくとも、前記1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、
前記方法はさらに、
前記コンピューティングデバイスが、前記グラウンドトゥルーススキルを前記第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、
前記コンピューティングデバイスが、前記1つ以上のトレーニング損失値を用いて、前記トレーニング損失値に基づいて前記機械学習モデルの構造を変更することにより、前記機械学習モデルをトレーニングすることとを含む、請求項11に記載のシステム。
【請求項16】
前記コンピューティングデバイスが、スキル分類器モデルを使用して第2のスキルデータを生成することをさらに含み、前記スキル分類器モデルは、入力として前記発話データのセットを受信し、前記1つ以上のスキルから、予測されるスキルを出力するよう構成された機械学習モデルであり、さらに、
前記コンピューティングデバイスが、前記第1のスキルと前記第2のスキルとを比較して1つ以上のトレーニング損失値を生成することを含み、前記1つ以上のトレーニング損失値は、前記第1のスキルと前記第2のスキルとの間の1つ以上の差に対応し、さらに、
前記コンピューティングデバイスが、前記1つ以上のトレーニング損失値を用いて、前記トレーニング損失値に基づいて前記機械学習モデルの構造を変更することにより、前記機械学習モデルをトレーニングすることを含む、請求項11に記載のシステム。
【請求項17】
命令が記憶される非一時的な機械可読記憶媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
コンピューティングデバイスが、チャットボットによって解釈可能な自然言語ベースのクエリに対応する発話データのセットを受信することと、
前記コンピューティングデバイスが、前記チャットボットのために1つ以上のインテントを決定することとを実行させ、前記1つ以上のインテントの各々は、前記自然言語ベースのクエリについての考えられ得るコンテキストに対応し、前記チャットボットのための1つ以上のスキルのうちのあるスキルに関連付けられ、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、インテント分類器モデルを使用して、前記1つ以上のインテントに基づいて1つ以上のインテント分類データセットを生成することを実行させ、各インテント分類データセットは、前記自然言語クエリが前記1つ以上のインテントのうちのあるインテントに対応する確率と関連付けられ、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、変換マスクモデルを使用して、前記1つ以上のインテント分類データセットに基づいて、1つ以上の変換されたデータセットを生成することを実行させ、前記1つ以上の変換されたデータセットの各々は、前記1つ以上のスキルのうちのあるスキルに対応し、前記命令は、さらに、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに、
前記コンピューティングデバイスが、前記1つ以上の変換されたデータセットに基づいて、前記1つ以上のスキルから第1のスキルを決定することと、
前記決定された第1のスキルに基づいて、前記発話データのセットを処理して、前記自然言語ベースのクエリを解決することとを実行させる、非一時的な機械可読記憶媒体。
【請求項18】
前記1つ以上のプロセッサはさらに、
前記決定された第1のスキルに基づいて、前記発話データのセットを処理して、前記自然言語ベースのクエリに対する自然言語ベースの応答を生成することと、
前記自然言語ベースの応答をクライアントデバイスに送信することとを実行する、請求項17に記載の非一時的な機械可読記憶媒体。
【請求項19】
前記1つ以上のプロセッサはさらに、前記コンピューティングデバイスによって、前記発話データを処理して、精緻化された発話データを、前記インテント分類器モデルに入力するために、あるフォーマットで生成することを実行し、前記精緻化された発話データは、前記1つ以上のインテント分類データセットを生成させるために前記インテント分類器モデルに入力される、請求項17に記載の非一時的な機械可読記憶媒体。
【請求項20】
前記1つ以上の変換されたデータセットの各変換されたデータセットは、前記発話データが前記1つ以上のスキルのうちのあるスキルに対応する尤度に対応する確率値を含み、
前記第1のスキルを決定することは、1つ以上の確率値のセットの中から最も高い確率値を有する変換されたデータセットに対応するスキルを選択することを含む、請求項17に記載の非一時的な機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本出願は、2021年1月20日に提出された米国特許仮出願63/139,693の利益および優先権を主張して2022年1月18日に提出された米国特許非仮出願17/578,170の利益および優先権を主張し、それは、あらゆる目的のために、その全体が参照によりここに組み込まれる。
【0002】
発明の分野
本開示は、概してチャットボットシステムに関し、より詳細には、自然言語処理におけるチャットボットシステムのための多因子モデルトレーニングのための技術に関する。
【背景技術】
【0003】
背景
インスタントメッセージング機能および自動化されたチャットプラットフォームは、現代の顧客サービス問題に対する効率的な解決策である。組織は、これらの実施を活用して、個々のユーザ問い合わせに貴重な人的資本を投入することなく、顧客にサービスをタイムリーかつ俊敏に提供することができる。現代の自動化されたチャットプラットフォームは、親「チャットボット」を利用して、顧客サービス要求を処理し得る。親チャットボットは、より特殊化されたタスクを委任された複数の子チャットボットと協調し得る。しかしながら、タスクが委任されるべき正しいチャットボットを選択することは、困難で潜在的に費用のかかる決定である。特定のチャットボットは、特定の範囲の問合せのみを処理するよう設計されており、特定のチャットボットは、別のチャットボットよりも、はるかに低い効率で、特殊化されたタスクを処理する場合がある。顧客問合せに答えるために最も効率的なチャットボットを選択できないことは、性能の低下、非効率的なリソース利用、および顧客ベースのフラストレーションをもたらし得る。
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、いくつかのチャットボットは、チャットボットがクエリを処理し、クエリに応答するのを支援する、いくつかの「スキル」クラスを含んでもよい。これらのクエリは、テキストの会話または要求をシミュレートする自然言語ベースのフォーマットの「発話」の形態をとり得る。発話は、発話を解決し、クエリに応答するために、チャットボットが採用すべきである最も適当なスキルを決定するよう、処理される。例えば、「私にピザを注文して」という自然言語クエリにチャットボットが応答するために、「ピザを注文する」スキルクラスが選択される。
【0005】
顧客問合せの文脈、抑揚、綴字、語気、および/または設定におけるわずかな差異は、特定のタスクに対する誤ったチャットボット/スキルの選択を引き起こし得る。組織が毎日何百または何千もの自動化された問い合わせ応答を実行する場合、チャットボットを選択する際のエラーは急速に悪化し得る。特定のチャットボットに対する単語の1対1マッピングといった、チャットボットを選択する単純な方法は、適切な文脈的解析を考慮に入れないことがあり、会話の複雑さを考慮に入れない。
【0006】
スキルの選択を支援するために、チャットボットは、機械学習モデルを使用して、発話を処理し、発話に対する応答のために最も適当なスキルを出力し得る。問合せに回答するのを支援するスキルの選択は、組織に与えられる問合せの文脈的および語彙論的解析に基づくことができる。したがって、あるチャットボットは、入力発話を所与としてスキルを選択するために、単因子選択機械学習技術を使用してトレーニングされる。単因子モデルは、入力を所望の出力に直接マッピングし、例えば、受信された発話を、発話を処理するための予測されるスキルにマッピングする。単因子機械学習技術は、入力発話からスキルを予測する際に、より時間効率的であるが、そのような単因子モデルは、発話の重要な文脈、抑揚、綴字、語気、または意図を考慮に入れない。例えば、「I ordered a pizza and it didn't arrive(私はピザを注文したが、届かなかった)」という発話は、顧客サービスチャットボットスキルを対象として意図されるが、その代わりに、「ordered a pizza(ピザを注文した)」という部分的な語句に基づいて、ピザ注文チャットボットスキルに向けられるかもしれない。その結果、直接的なスキル選択など、より文脈に依存しない方法を使用して機械学習モデルをトレーニングすることは、効率的なチャットボットモデルに必要とされる適切なレベルの文脈的学習を提供しない。したがって、発話を解決するために適当なスキルクラスを直接決定する標準的な機械学習技術は、多くの場合、不充分である。
【0007】
概要
自然言語処理のためにチャットボットシステムをトレーニングおよび利用するための多因子モデリングのための技術が開示される。
【課題を解決するための手段】
【0008】
一実施形態では、コンピュータにより実現される、ある方法は、コンピューティングデバイスが、チャットボットによって解釈可能な自然言語ベースのクエリに対応する発話データのセットを受信することと、コンピューティングデバイスが、チャットボットのために1つ以上のインテントを決定することとを含み、1つ以上のインテントの各々は、自然言語ベースのクエリについての考えられ得るコンテキストに対応し、チャットボットのための1つ以上のスキルのうちのあるスキルに関連付けられ、本方法はさらに、コンピューティングデバイスが、インテント分類器モデルを使用して、1つ以上のインテントに基づいて1つ以上のインテント分類データセットを生成することを含み、各インテント分類データセットは、自然言語クエリが1つ以上のインテントのうちのあるインテントに対応する確率と関連付けられ、本方法はさらに、コンピューティングデバイスが、変換マスクモデルを使用して、1つ以上のインテント分類データセットに基づいて、1つ以上の変換されたデータセットを生成することを含み、1つ以上の変換されたデータセットの各々は、1つ以上のスキルのうちのあるスキルに対応し、本方法はさらに、コンピューティングデバイスが、1つ以上の変換されたデータセットに基づいて、1つ以上のスキルから第1のスキルを決定することと、決定された第1のスキルに基づいて、発話データのセットを処理して、自然言語ベースのクエリを解決することとを含む。
【0009】
一実施形態では、発話データのセットは、コンピュータデバイスと通信する自動化されたデジタルアシスタントと対話するクライアントデバイスから受信される。
【0010】
一実施形態では、変換マスクモデルは、1つ以上の変換値を含み、各変換値は、少なくとも1つのインテントと少なくとも1つのスキルとの比に対応する。追加の実施形態では、発話データのセットは、少なくとも、1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、本方法は、さらに、コンピューティングデバイスが、グラウンドトゥルーススキルを第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、コンピューティングデバイスが、トレーニング損失値に基づいて1つ以上の変換値を変更することとを含む。
【0011】
一実施形態では、インテント分類器モデルは、入力として発話データのセットを受信し、1つ以上のインテント分類データセットを出力するよう構成された機械学習モデルであり、発話データのセットは、少なくとも、1つ以上のスキルのうちのグラウンドトゥルーススキルの指示を含み、本方法はさらに、コンピューティングデバイスが、グラウンドトゥルーススキルを第1のスキルと比較して、1つ以上のトレーニング損失値を生成することと、コンピューティングデバイスが、1つ以上のトレーニング損失値を用いて、トレーニング損失値に基づいて機械学習モデルの構造を変更することにより、機械学習モデルをトレーニングすることとを含む。
【0012】
一実施形態では、本方法は、コンピューティングデバイスが、スキル分類器モデルを使用して第2のスキルデータを生成することをさらに含み、スキル分類器モデルは、入力として発話データのセットを受信し、1つ以上のスキルから、予測されるスキルを出力するよう構成された機械学習モデルであり、本方法はさらに、コンピューティングデバイスが、第1のスキルと第2のスキルとを比較して1つ以上のトレーニング損失値を生成することを含み、1つ以上のトレーニング損失値は、第1のスキルと第2のスキルとの間の1つ以上の差に対応し、本方法はさらに、コンピューティングデバイスが、1つ以上のトレーニング損失値を用いて、トレーニング損失値に基づいて機械学習モデルの構造を変更することにより、機械学習モデルをトレーニングすることを含む。
【0013】
一実施形態では、本方法は、決定された第1のスキルに基づいて、発話データのセットを処理して、自然言語ベースのクエリに対する自然言語ベースの応答を生成することと、自然言語ベースの応答をクライアントデバイスに送信することとを含む。
【0014】
一実施形態では、本方法は、コンピューティングデバイスが、発話データを処理して、精緻化された発話データを、インテント分類器モデルに入力するために、あるフォーマットで生成することをさらに含み、精緻化された発話データは、1つ以上のインテント分類データセットを生成させるためにインテント分類器モデルに入力される。
【0015】
一実施形態では、1つ以上の変換されたデータセットの各変換されたデータセットは、発話データが1つ以上のスキルのうちのあるスキルに対応する尤度に対応する確率値を含み、第1のスキルを決定することは、1つ以上の確率値のセットの中から最も高い確率値を有する変換されたデータセットに対応するスキルを選択することを含む。
【0016】
一実施形態では、第1のスキルは、インテント分類データセットに関連付けられる確率値に基づいてスキルごとに1つ以上の平均確率値を生成することと、1つ以上の平均確率値の中から最も高い平均確率値に関連付けられるスキルを選択することとを含む。
【0017】
本開示のいくつかの実施形態は、非一時的な機械可読記憶媒体において有形に具現化され、1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部またはすべてを実行させるように構成された命令を含むコンピュータプログラム製品を含む。
【0018】
本開示のいくつかの実施形態は、1つ以上のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、1つ以上のデータプロセッサ上で実行されると1つ以上のデータプロセッサにここで開示される1つ以上の方法の一部もしくはすべて、および/または1つ以上のプロセスの一部もしくはすべてを実行させる命令を含む、非一時的コンピュータ可読記憶媒体を含む。
【0019】
上記および以下で説明する技術は、いくつかの方法で、およびいくつかの状況で実現され得る。いくつかの例示的な実現例および状況が、以下でより詳細に説明されるように、以下の図面を参照して提供される。しかしながら、以下の実現例および状況は、多くのうちの少数にすぎない。
【図面の簡単な説明】
【0020】
図1】例示的な実施形態を組み込んだ分散環境の簡略ブロック図である。
図2】いくつかの実施形態による親ボット(MB)システムの簡略ブロック図である。
図3】ある実施形態によるスキルボットシステムの簡略ブロック図である。
図4】ある実施形態による、発話データ処理システムを実現するコンピューティングシステムの簡略化ブロック図である。
図5】ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。
図6A】ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。
図6B】ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。
図7A】ある実施形態による、人工ニューラルネットワークとして構成されるインテント分類器の簡略化ブロック図である。
図7B】ある実施形態による、人工ニューラルネットワークとして構成されるスキル分類器の簡略化ブロック図である。
図8】様々な実施形態による、発話に応答するために変換モデルを使用してコンテキストクラスを選択するためのプロセスフローを示す図である。
図9】ある実施形態による、インテント分類技術によるスキルボットの例示的選択の簡略ブロック図である。
図10】様々な実施形態を実現するための分散システムの簡略図を示す。
図11】様々な実施形態による、実施形態のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供される、システム環境の1つ以上のコンポーネントの簡略ブロック図である。
図12】様々な実施形態を実現するために用いられる例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【0021】
詳細な説明
以下の説明では、説明の目的のために、特定の詳細が、特定の実施形態の完全な理解を促すために記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実施されることは明らかであろう。図および記載は、限定することを意図したものではない。「例示的」という用語は、ここでは、「例、事例、または例示として供される」ことを意味するために用いられる。「例示的」としてここに記載される任意の実施形態または設計は、必ずしも、他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0022】
チャットボットの特定のスキルは、特定の範囲の発話のみを処理し、それに応答するよう設計されており、特定のスキルは、別のスキルが解決できない特殊化されたタスクのみを解決し得る。例えば、チャットボットのいくつかのスキルは、いくらか類似するタスク(例えば、ピザ屋の自動化されたシステムを操作する)に関連し得るが、各タスクは、特定のタイプの発話(例えば、新たなピザ注文を開始すること、既存の注文を修正すること、顧客サポートを提供すること、営業取引および営業時間に関する情報を提供することなど)を処理し、それに応答するのに適するようにされる。顧客問合せに回答するために最も効率的なスキルを選択できないことは、性能の低下、非効率的なリソース利用、および顧客ベースのフラストレーションをもたらし得る。
【0023】
上述のように、顧客問合せの文脈、抑揚、綴字、語気、および/または設定などの自然言語の固有要素は、特定のタスクに対する誤ったチャットボット/スキルの選択を引き起こす可能性がある。最も適当なスキルを選択するのを支援するために、チャットボットは、機械学習モデルを用いて、発話を処理し、発話に応答するための、最も適当なスキルを出力し得る。問合せに回答するのを支援するスキルの選択は、デジタルアシスタントに与えられる問合せの文脈的および語彙論的解析に基づくことができる。例えば、発話は、機械学習技術を使用して発話を解析して発話を解決するための特定のスキルを決定するために「スキル分類器」に送られる。スキルを選択するための単因子モデリング技術は、自然言語発話などの入力を、発話を解決するための予測されるスキルに直接マッピングする。単因子モデリングは、自動化されたデジタルアシスタントを利用する顧客に応答するときに優先的である、スキルの迅速な予測を可能にし得るため、有用な技術である。しかしながら、発話の処理に基づいてスキルを選択するための単因子機械学習技術は、発話の重要な文脈、抑揚、綴字、語気、または意図を考慮に入れない場合がある。例えば、「I ordered a pizza and it didn't arrive(私はピザを注文したが、届かなかった)」という発話は、顧客サービスチャットボットを対象として意図されるが、その代わりに、「ordered a pizza(ピザを注文した)」という語句に基づいて、ピザ注文チャットボットスキルに向けられるかもしれない。
【0024】
発話を考えられ得るスキルに直接マッピングすることに基づいてスキルを選択するようにチャットボットモデルをトレーニングすることは、充分な精度でスキルを選択するよう充分に効果的に発話の文脈および抑揚を処理するように適切にチャットボットモデルをトレーニングしないかもしれない。単因子スキルベースの選択が不十分であることは、チャットボットシステムのトレーニング段階および予測段階の両方において明らかである。例えば、発話に応答するために入力発話から直接スキルを選択し決定する、チャットボットシステムの機械学習モデルのためのトレーニングは、適切な分類モデルを構築するのに充分な文脈的詳細を欠いている。単因子モデリングを利用する、充分にトレーニングされていないチャットボットは、その場合、実際のクライアント/顧客と対話するときに発話を解決するのに不適切なスキルを選択するよう進むかもしれない。
【0025】
自然言語ベースのクエリを処理し、それに応答するために、チャットボット/スキルをトレーニングおよび展開するよう、自然言語処理のための多因子モデリングのための技術が、ここで説明される。多因子モデリング技術は、発話データなどの入力データの、改善されたトレーニングおよび処理を可能にして、発話を処理するためのスキルをより良く予測し、それを行うためにスキル分類器モデルをトレーニングする。多因子モデルはまた、スキル分類器などの単因子モデルをトレーニングすること、または顧客/クライアントの問合せに応答するために文脈的に複雑な発話を処理することのために、より正確な出力データを提供するよう、トレーニングされ得る。
【0026】
ここで説明されるような多因子モデリング技術は、各チャットボットに対するスキルのセットと、各スキルに対するインテントのセットとを含む、チャットボットシステムの構造的クラス階層を利用する。スキルおよびインテントは、図1図3を参照して以下で説明される。多因子機械学習モデルを用いて、自然言語クエリを処理して、発話のインテント分類を表す中間コンテキストデータセットを出力する。次いで、中間インテント分類は、発話を処理するためのスキルを決定するために、またはチャットボットシステムのスキル分類のトレーニングをさらに改善するために利用されてもよい。したがって、多因子モデリング技術は、発話を処理するためのチャットボットスキルの最終選択に考慮される、文脈的に決定されたインテントデータの導入を可能にする。発話を処理するための最終スキルの選択に先立って、様々な変換が中間インテント分類に適用されてもよい。例えば、変換「マスク」を中間インテント分類データに適用して、インテント分類を対応するスキル分類にマッピングする。したがって、多因子モデリング技術によって生成されるスキル分類は、発話からの直接スキル予測などの単因子モデリング技術と比較して、元の発話の、より文脈的に関連した処理を含む。
【0027】
ここで説明される技術は、さらに、顧客との対話のために展開され得る単因子モデルのトレーニングおよび最適化を改善する。上述のように、単因子モデル単独では、自然言語における低粒度の文脈的言語運用および抑揚を処理するには不充分である。基本的な教師あり機械学習技術を用いてこれらの単因子モデルを精緻化することを試みることは、スキルを予測する際の単因子モデルの精度をいくらか増加させ得るが、文脈ベースのトレーニングを可能にしない。発話データのセットから、より文脈的に正確なスキルを選択するための多因子モデルの使用、およびその文脈的に予測されるスキルと単因子モデルからの予測されるスキルとの比較は、単一の教師あり学習ができない態様で単因子モデルを再トレーニングするために使用される文脈ベースの損失データを産み出すことになる。したがって、多因子モデリングは、自然言語クエリを処理するときに、より正確な予測を生成するだけでなく、入力発話データのセットを所与として、スキルをより良く予測するよう、時間効率の良い単因子モデルをトレーニングすることにもなる。
【0028】
ここで説明されるように、「発話データ」は、自動化されたチャットボットシステムによる解決のために顧客またはクライアントによって与えられる自然言語ベースのクエリに関連するデータを含み得る。例えば、発話は、自然言語ベースのクエリ「I would like to order a pizza.(私はピザを注文したい)」を含み得る。
【0029】
ここで説明するように、「コンテキストクラス」は、チャットボットによって発話を解決するための応答カテゴリおよび/またはサブルーチンに関するチャットボット「スキル」である。コンテキストスキルクラスは、自然言語ベースのフォーマットで発話を処理し、それに応答するための命令、構成、または他の機能性を含み得る。例えば、チャットボットは、「ピザ注文スキル」などのスキルを含み得る。各チャットボットは、発話を解決し、発話に応答するために、複数の「スキル」を含んでもよい。
【0030】
ここで説明するように、「コンテキストサブクラス」は、チャットボットによって特定のスキルを通して発話を解決するための応答サブカテゴリおよび/またはサブルーチンに関するチャットボット「インテント」である。コンテキストインテントクラスは、インテントが属するスキルに従って自然言語ベースのフォーマットで発話を処理し、それに応答するための命令、構成、または他の機能性を含み得る。例えば、チャットボットは、「ピザ注文スキル」などのスキルを含んでもよく、このスキルはさらに、「顧客から新たな注文を出す」などのインテントを含んでもよい。各スキルは、発話を解決し、発話に応答するための複数の「インテント」を含むか、またはそれらに対応し得、各インテントは、異なるサブタスク/コンテキストに対応し得る。
【0031】
ここで説明するように、「変換モデル」は、チャットボットモデルの1つ以上のインテントと1つ以上のスキルとの間の対応関係を表す変換データのセットである。例えば、変換モデルは、機械学習モデルによって出力されるインテントスコア値の「コンテキストデータセット」を、自然言語ベースのクエリに応答するスキルを選択するためのスキルスコアの「変換された」データセットに対応させるための、動的にトレーニングされたマッピングデータのセットである。マッピングデータは、行列の形態をとってもよく、行列の行および列は、それぞれスキルおよびインテントに対応し、逆もまた同様である。
【0032】
例示的なチャットボットシステム
ボット(スキル、チャットボット、チャターボット、またはトークボットとも称される)は、エンドユーザとの会話を実行することができるコンピュータプログラムである。ボットは一般に、自然言語メッセージを用いるメッセージングアプリケーションを通じて自然言語メッセージ(例えば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを用いて、メッセージングアプリケーションを通じてエンドユーザと通信し得る。メッセージングアプリケーションは、チャネルと呼ばれ、エンドユーザが既にインストールし、慣れ親しんでいる、エンドユーザの好みのメッセージングアプリケーションである。したがって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードおよびインストールする必要がない。メッセージングアプリケーションは、例えば、オーバーザトップ(OTT)メッセージングチャネル(例えば、Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack,またはSMS)、バーチャルプライベートアシスタント(例えば、Amazon Dot, Echo,またはShow, Google(登録商標) Home, Apple HomePodなど)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリ拡張、または音声ベースの入力(例えば、Siri, Cortana, Google Voice、または対話のための他の音声入力を用いるインターフェイスを有するデバイスもしくはアプリ)を含むことができる。
【0033】
いくつかの例では、ボットシステムは、統一資源識別子(URI)に関連付けられる。URIは、文字列を用いてボットシステムを識別することができる。URIは、1つ以上のメッセージングアプリケーションシステムのためのウェブフックとして用いられる。URIは、例えば、統一資源位置指定子(URL)または統一資源名(URN)を含むことができる。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(例えば、ハイパーテキスト転送プロトコル(HTTP)ポストコールメッセージ)を受信するように設計される。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられる。いくつかの実施形態では、メッセージはHTTPポストコールメッセージとは異なる。例えば、ボットシステムは、ショートメッセージサービス(SMS)からメッセージを受信し得る。ここにおける議論は、ボットシステムがメッセージとして受信する通信に言及し得るが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間の任意の他のタイプの通信であることを理解されたい。
【0034】
エンドユーザは、人々間の対話のように、会話による対話(会話によるユーザインターフェイス(UI)と呼ばれることもある)を通じてボットシステムと対話することができる。場合によっては、対話は、エンドユーザがボットに「Hello(こんにちは)」と言い、ボットが「Hi(やあ)」と応答し、エンドユーザをどのように支援できるかをエンドユーザに問い合わせることを含んでもよい。場合によっては、対話はまた、例えば、ある口座から別の口座へ送金するなど、銀行ボットとの取引対話;たとえば、バケーションバランスのチェックなど、HRボットとの情報対話;または、例えば、購入した商品を返品するもしくは技術的サポートを求める議論など、小売店ボットとの対話であってもよい。
【0035】
いくつかの実施形態では、ボットシステムは、ボットシステムの管理者または開発者との対話なしにエンドユーザ対話を知的に扱うことができる。例えば、エンドユーザは、所望の目標を達成するために、ボットシステムに1つ以上のメッセージを送信してもよい。メッセージは、テキスト、絵文字、オーディオ、画像、ビデオ、またはメッセージを伝達する他の方法など、あるコンテンツを含み得る。いくつかの実施形態では、ボットシステムは、コンテンツを標準化された形式(例えば、適切なパラメータを有する企業サービスに対するrepresentational state transfer(REST)コール)に変換し、自然言語応答を生成することができる。ボットシステムはまた、追加の入力パラメータをエンドユーザに促すか、または他の追加の情報を要求することもできる。いくつかの実施形態では、ボットシステムはまた、エンドユーザ発話に受動的に応答するのではなく、エンドユーザとの通信を開始してもよい。ここでは、ボットシステムの明示的な呼出しを識別し、呼び出されるボットシステムに対する入力を決定するための様々な技術が説明される。ある実施形態では、明示的な呼出し分析は、発話における呼出し名の検出に基づいて、親ボットによって実行される。呼出し名の検出に応答して、発話は、呼出し名に関連付けられるスキルボットへの入力のために精緻化される。
【0036】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。フローは、入力に基づいて次に起こるものを定義することができる。いくつかの実施形態では、ユーザが定義した状態(例えば、エンドユーザのインテント)と、状態において、または状態から状態にとるべきアクションとを含む状態機械を用いて、ボットシステムを実現する。会話は、エンドユーザ入力に基づいて異なる経路をとることができ、これは、ボットがフローについて行う決定に影響を及ぼし得る。例えば、各状態において、エンドユーザ入力または発話に基づいて、ボットは、エンドユーザのインテントを判断して、次にとるべき適切なアクションを決定することができる。ここにおいて、および発話の文脈において、「インテント」という語は、発話を与えたユーザのインテントを指す。例えば、ユーザは、ピザを注文するために会話でボットに関わるつもりであり、ユーザのインテントは、「ピザを注文して」という発話によって表現されてもよい。ユーザのインテントは、ユーザがユーザに代わってチャットボットに実行して欲しい特定のタスクに向けられ得る。したがって、発話は、ユーザのインテントを反映する質問、コマンド、要求などとして表現することができる。インテントは、エンドユーザが達成することを望む目標を含むことができる。
【0037】
チャットの構成の文脈において、「インテント」という語は、ここでは、ユーザの発話を、チャットボットが実行できる特定のタスク/アクションまたはタスク/アクションのカテゴリにマッピングするための設定情報を指すために用いられる。発話のインテント(すなわち、ユーザのインテント)とチャットボットのインテントとを区別するために、後者をここでは「ボットインテント」と呼ぶことがある。ボットインテントは、そのインテントに関連付けられる1つ以上発話のセットを含んでもよい。例えば、ピザを注文することに対するインテントは、ピザの注文を行う要望を表す発話の様々な順列を有することができる。これらの関連付けられた発話は、チャットボットのインテント分類器をトレーニングするために用いられ得、インテント分類器が、その後、ユーザからの入力発話がピザ注文インテントと一致するかどうかを判断することを可能にする。ボットインテントは、ユーザとある状態において会話を開始するための1つ以上のダイアログフローに関連付けられる。例えば、ピザ注文インテントに関する第1のメッセージは、「どの種類のピザがよろしいですか?」という質問であり得る。関連付けられた発話に加えて、ボットインテントは、さらに、そのインテントに関連する指名されたエンティティを含み得る。例えば、ピザ注文インテントは、ピザを注文するタスクを実行するために用いられる変数またはパラメータ、例えば、トッピング1、トッピング2、ピザの種類、ピザサイズ、ピザ数量などを含み得る。エンティティの値は、典型的には、ユーザとの会話を通じて取得される。
【0038】
図1は、特定の実施形態によるチャットボットシステムを組み込んだ環境100の簡略ブロック図である。環境100は、デジタルアシスタントビルダプラットフォーム(DABP)102を含み、DABP102のユーザがデジタルアシスタントまたはチャットボットシステムを作成および展開することを可能にする。DABP102は、1つ以上のデジタルアシスタント(またはDA)またはチャットボットシステムを作成するために使用することができる。例えば、図1に示すように、特定の企業を表すユーザ104は、DABP102を使用して、特定の企業のユーザ用のデジタルアシスタント106を作成および展開することができる。例えば、銀行が、DABP102を使用して、銀行の顧客による使用のために1つ以上のデジタルアシスタントを作成することができる。複数の企業が、同じDABP102プラットフォームを使用して、デジタルアシスタントを作成することができる。別の例として、レストラン(例えば、ピザショップ)の所有者は、DABP102を用いて、レストランの顧客が食べ物を注文すること(例えば、ピザを注文すること)を可能にするデジタルアシスタントを作成および展開することができる。
【0039】
本開示の目的のために、「デジタルアシスタント」は、デジタルアシスタントのユーザが自然言語会話を通じて様々なタスクを達成するのに役立つエンティティである。デジタルアシスタントは、ソフトウェア(たとえば、デジタルアシスタントは、1つ以上のプロセッサによって実行可能なプログラム、コード、または命令を用いて実現されるデジタルエンティティである)のみを用いて、ハードウェアを用いて、またはハードウェアとソフトウェアとの組み合わせを用いて、実現されてもよい。デジタルアシスタントは、コンピュータ、携帯電話、腕時計、器具、車両など、様々な物理的システムもしくはデバイスにおいて具現化または実現されてもよい。デジタルアシスタントは、チャットボットシステムとも称されることもある。したがって、本開示の目的のために、デジタルアシスタントおよびチャットボットシステムという文言は交換可能である。
【0040】
DABP102を使用して構築されるデジタルアシスタント106等のデジタルアシスタントは、デジタルアシスタントとそのユーザ108との間の自然言語ベースの会話を介して、種々のタスクを行うために使用されることができる。会話の一部として、ユーザは、1つ以上のユーザ入力110をデジタルアシスタント106に提供し、デジタルアシスタント106から応答112を得てもよい。会話は、入力110および応答112のうちの1つ以上を含むことができる。これらの会話を介して、ユーザは、1つ以上のタスクがデジタルアシスタント106によって実行されるよう要求することができ、それに応答して、デジタルアシスタント106は、ユーザ要求タスクを実行し、ユーザに適切な応答で応答するよう構成される。
【0041】
ユーザ入力110は、概して自然言語形式であり、発話と呼ばれる。ユーザ発話110は、ユーザが文、質問、テキスト片、または単一の単語でさえタイプし、それを入力としてデジタルアシスタント106に提供するときなどの、テキスト形式であり得る。いくつかの実施形態では、ユーザ発話110は、ユーザがデジタルアシスタント106に入力として提供される何かを言うかまたは話すときなどの、音声入力または発話形式であり得る。発話は、典型的には、ユーザ108によって話される言語である。たとえば、発話は、英語または何らかの他の言語である。発話が音声形式である場合、音声入力はその特定の言語のテキスト形式の発話に変換され、次いで、テキスト発話はデジタルアシスタント106によって処理される。様々な音声-テキスト処理技術を用いて、音声または聴覚的入力をテキスト発話に変換し、テキスト発話は、その後、デジタルアシスタント106によって処理される。いくつかの実施形態では、音声からテキストへの変換は、デジタルアシスタント106自体によって行われる。
【0042】
テキスト発話または音声発話である発話は、断章、文、複数の文、1つ以上の単語、1つ以上の質問、前述のタイプの組合せなどであってもよい。デジタルアシスタント106は、ユーザ入力の意味を理解するために発話に自然言語理解(NLU)技術を適用するよう構成される。発話に対するNLU処理の一部として、デジタルアシスタント106は、発話の意味を理解するための処理を実行するように構成され、これは、発話に対応する1つ以上のインテントおよび1つ以上のエンティティを識別することを伴う。発話の意味を理解すると、デジタルアシスタント106は、理解された意味またはインテントに応答して1つ以上のアクションまたは動作を実行することができる。本開示の目的のために、発話は、デジタルアシスタント106のユーザ108によって直接提供されるテキスト発話であるか、または入力音声発話のテキスト形式への変換の結果であると仮定する。しかしながら、これは、いかなる態様においても限定的または制限的であることを意図するものではない。
【0043】
例えば、ユーザ108の入力は、「私はピザを注文したい」等の発話を提供することによって、ピザが注文されることを要求してもよい。そのような発話を受信すると、デジタルアシスタント106は、発話の意味を理解し、適切なアクションを取るよう構成される。適切なアクションは、例えば、ユーザが注文したいピザのタイプ、ピザのサイズ、ピザの任意のトッピングなどに関する、ユーザ入力を要求する質問で、ユーザに応答することを含んでもよい。デジタルアシスタント106によって提供される応答はまた、自然言語形式であってもよく、典型的には入力発話と同じ言語であってもよい。これらの応答を生成することの一部として、デジタルアシスタント106は、自然言語生成(NLG)を実行してもよい。ユーザがピザを注文するために、ユーザとデジタルアシスタント106との間の会話を介して、デジタルアシスタントは、ピザを注文するためのすべての必要な情報を提供するようにユーザを誘導してもよく、次いで、会話の終わりに、ピザを注文させてもよい。デジタルアシスタント106は、ピザが注文されたことを示す情報をユーザに出力することによって、会話を終了してもよい。
【0044】
概念レベルでは、デジタルアシスタント106は、ユーザから受信された発話に応答して、種々の処理を実行する。いくつかの実施形態では、この処理は、例えば、入力発話の意味を理解すること(自然言語理解(NLU)と呼ばれることもある)、発話に応答して実行されるべきアクションを決定すること、適切な場合にはアクションが実行されることを引き起こすこと、ユーザ発話に応答してユーザに出力されるべき応答を生成すること、応答をユーザに出力することなどを含む、一連の処理ステップまたは処理ステップのパイプラインを伴う。NLU処理は、受信した入力発話を構文解析して発話の構造および意味を理解することと、発話を精緻化および再構成して、発話について、よりよく理解可能な形式(例えば、論理形式)または構造を展開することとを含むことができる。応答を生成することは、NLG技術を使用することを含んでもよい。
【0045】
デジタルアシスタント106などのデジタルアシスタントによって実行されるNLU処理は、文解析(例えば、トークン化、並べ換え、文に対する品詞タグの識別、文における固有表現の識別、文構造を表すための依存関係ツリーの生成、文の節への分割、個々の節の分析、照応形の解決、チャンク化の実行など)などの様々なNLP関連処理を含み得る。ある実施形態では、NLU処理またはその一部は、デジタルアシスタント106自体によって実行される。いくつかの他の実施形態では、デジタルアシスタント106は、他のリソースを用いて、NLU処理の一部を実行することができる。例えば、入力発話文の構文および構造は、構文解析、品詞タグ付け、および/または固有表現認識を用いて文を処理することによって識別される。一実現例では、英語の場合、文構造および構文を解析するために、Stanford Natural Language Processing (NLP) Groupによって提供されるもののような、構文解析、品詞タグ付け、および固有表現認識が用いられる。これらは、Stanford CoreNLPツールキットの一部として提供される。
【0046】
本開示で提供される様々な例は英語の発話を示すが、これは単なる例として意味される。特定の実施形態では、デジタルアシスタント106は、英語以外の言語で発話を処理することもできる。デジタルアシスタント106は、異なる言語に対する処理を実行するよう構成されるサブシステム(例えば、NLU機能を実現するコンポーネント)を提供してもよい。これらのサブシステムは、NLUコアサーバからのサービスコールを用いて呼び出され得るプラグ可能ユニットとして実現される。これは、NLU処理を、異なる順序の処理を可能にすることを含めて、各言語に対して柔軟かつ拡張可能にする。言語パックが、個々の言語に対して提供され、言語パックは、NLUコアサーバからサービス提供され得るサブシステムのリストを登録することができる。
【0047】
図1に示されるデジタルアシスタント106等のデジタルアシスタントは、限定ではないが、あるアプリケーションを介して、ソーシャルメディアプラットフォームを介して、種々のメッセージングサービスおよびアプリケーションを介して、ならびに他のアプリケーションまたはチャネル等の種々の異なるチャネルを介して、そのユーザ108に利用可能またはアクセス可能にされることができる。単一のデジタルアシスタントは、それのためにいくつかのチャネルを構成することができるので、異なるサービス上で同時に実行され、異なるサービスによって同時にアクセスされることができる。
【0048】
デジタルアシスタントまたはチャットボットシステムは、一般に、1つ以上のスキルを含むか、または1つ以上のスキルに関連付けられる。ある実施形態では、これらのスキルは、ユーザと対話し、在庫の追跡、タイムカードの提出、経費報告の作成、食品の注文、銀行口座の確認、予約の作成、ウィジェットの購入などの特定の種類のタスクを満たすように構成された個々のチャットボット(スキルボットと呼ばれる)である。例えば、図1に示される実施形態では、デジタルアシスタントまたはチャットボットシステム106は、スキル116-1、116-2等を含む。本開示の目的のために、「スキル」という語は、「スキルボット」という語と同義的に用いられる。
【0049】
デジタルアシスタントに関連付けられる各スキルは、ユーザとの会話を通じて、デジタルアシスタントのユーザがタスクを完了するのを助け、会話は、ユーザによって提供されるテキストまたは聴覚的入力と、スキルボットによって提供される応答との組み合わせを含むことができる。これらの応答は、ユーザへのテキストメッセージもしくは聴覚メッセージの形態、および/またはユーザが選択を行うようユーザに提示される単純なユーザインターフェイス要素(たとえば、選択リスト)を用いる形態である。
【0050】
スキルまたはスキルボットをデジタルアシスタントに関連付けるかまたは追加することができる様々な方法がある。ある例では、スキルボットは企業によって開発され、次いでDABP102を用いてデジタルアシスタントに追加され得る。他の例では、スキルボットは、DABP102を用いて開発および作成され、次いで、DABP102を用いて作成されたデジタルアシスタントに追加され得る。さらに他の例では、DABP102は、広範囲のタスクに向けられた複数のスキルを提供するオンラインデジタルストア(「スキルストア」と呼ばれる)を提供する。スキルストアを通じて提供されるスキルも、様々なクラウドサービスを公開してもよい。DABP102を使用して生成されるデジタルアシスタントにスキルを追加するために、DABP102のユーザは、DABP102を介してスキルストアにアクセスし、所望のスキルを選択し、選択されたスキルがDABP102を使用して作成されるデジタルアシスタントに追加されることを示すことができる。スキルストアからのスキルは、そのまま、または修正された形態で、デジタルアシスタントに追加することができる(例えば、DABP102のユーザは、スキルストアによって提供される特定のスキルボットを選択してクローニングし、選択されたスキルボットをカスタマイズまたは修正し、次いで、修正されたスキルボットを、DABP102を用いて作成されたデジタルアシスタントに追加してもよい)。
【0051】
デジタルアシスタントまたはチャットボットシステムを実現するために、様々な異なるアーキテクチャが使用される。例えば、ある実施形態では、DABP102を用いて作成および展開されるデジタルアシスタントは、親ボット/子(もしくはサブ)ボットパラダイムまたはアーキテクチャを用いて実現される。このパラダイムによれば、デジタルアシスタントは、スキルボットである1つ以上の子ボットと対話する親ボットとして実現される。例えば、図1に示す実施形態では、デジタルアシスタント106は、親ボット114と、親ボット114の子ボットであるスキルボット116-1、116-2などとを含む。特定の実施形態では、デジタルアシスタント106自体が親ボットとして動作すると考えられる。
【0052】
親・子ボットアーキテクチャに従って実現されるデジタルアシスタントは、デジタルアシスタントのユーザが、統合されたユーザインターフェイスを介して、すなわち親ボットを介して、複数のスキルと対話することを可能にする。ユーザがデジタルアシスタントに関与すると、ユーザ入力は親ボットによって受信される。次いで、親ボットは、ユーザ入力発話の意味を判定するための処理を実行する。次いで、親ボットは、発話においてユーザによって要求されたタスクが親ボット自体によって処理され得るかどうかを判定し、そうでなければ、親ボットは、ユーザ要求を処理するために適切なスキルボットを選択し、会話を選択されたスキルボットにルーティングする。これにより、ユーザは共通の単一のインターフェイスを介してデジタルアシスタントと会話することができ、特定のタスクを実行するよう構成されるいくつかのスキルボットを使用する能力を依然として提供することができる。例えば、企業用に開発されたデジタルアシスタントの場合、デジタルアシスタントの親ボットは、顧客関係管理(CRM)に関連する機能を実行するためのCRMボット、企業資源計画(ERP)に関連する機能を実行するためのERPボット、人的資本管理(HCM)に関連する機能を実行するためのHCMボットなどの特定の機能を有するスキルボットとインターフェイスすることができる。このように、デジタルアシスタントのエンドユーザまたは消費者は、共通の親ボットインターフェイスを介してデジタルアシスタントにアクセスする方法を知るだけでよく、背後には、複数のスキルボットがユーザ要求を処理するために提供される。
【0053】
ある実施形態では、親ボット/子ボットインフラストラクチャにおいて、親ボットは、スキルボットの利用可能なリストを認識するよう構成される。親ボットは、様々な利用可能なスキルボット、および各スキルボットについて、各スキルボットによって実行され得るタスクを含む各スキルボットの能力を識別するメタデータへのアクセスを有してもよい。ユーザ要求を発話の形態で受信すると、親ボットは、複数の利用可能なスキルボットから、ユーザ要求に最も良く対応できるかもしくはユーザ要求をもっとも良く処理することができる特定のスキルボットを識別または予測するよう構成される。次いで、親ボットは、その発話(またはその発話の一部分)を、さらなる処理のために、その特定のスキルボットにルーティングする。従って、制御は親ボットからスキルボットに流れる。親ボットは、複数の入力および出力チャネルをサポートすることができる。
【0054】
図1の実施形態は、親ボット114ならびにスキルボット116-1、116-2、および116-3を備えるデジタルアシスタント106を示すが、これは限定を意図するものではない。デジタルアシスタントは、デジタルアシスタントの機能を提供する様々な他のコンポーネント(例えば、他のシステムおよびサブシステム)を含むことができる。これらのシステムおよびサブシステムは、ソフトウェア(例えば、コンピュータ可読媒体上に記憶され、1つ以上のプロセッサによって実行可能なコード、命令)のみ、ハードウェアのみ、またはソフトウェアとハードウェアとの組み合わせを用いる実現例において実現される。
【0055】
DABP102は、DABP102のユーザが、デジタルアシスタントに関連付けられる1つ以上のスキルボットを含むデジタルアシスタントを作成することを可能にする、インフラストラクチャならびに種々のサービスおよび特徴を提供する。場合によっては、スキルボットは、既存のスキルボットをクローニングすることによって、例えば、スキルストアによって提供されるスキルボットをクローニングすることによって、作成することができる。前述のように、DABP102は、様々なタスクを実行するための複数のスキルボットを提供するスキルストアまたはスキルカタログを提供する。DABP102のユーザは、スキルストアからスキルボットをクローニングすることができる。必要に応じて、クローニングされたスキルボットに修正またはカスタマイズが行われる。いくつかの他の事例では、DABP102のユーザは、DABP102によって提供されるツールおよびサービスを使用して、スキルボットをゼロから作成した。前述のように、DABP102によって提供されるスキルストアまたはスキルカタログは、様々なタスクを実行するための複数のスキルボットを提供してもよい。
【0056】
特定の実施形態では、ある高次レベルにおいて、スキルボットを作成またはカスタマイズすることは、以下のステップを含む:
(1)新たなスキルボットに対する設定を設定する
(2)スキルボットに対して1つ以上のインテントを設定する
(3)1つ以上のインテントに対して1つ以上のエンティティを設定する
(4)スキルボットをトレーニングする
(5)スキルボットのためのダイアログフローを作成する
(6)必要に応じてカスタムコンポーネントをスキルボットに追加する
(7)スキルボットをテストおよび展開する。
以下、各工程について簡単に説明する。
【0057】
(1)新たなスキルボットに対する設定を設定する-様々な設定がスキルボットのために設定される。例えば、スキルボット設計者は、作成されているスキルボットの1つ以上の呼出し名を指定することができる。これらの呼出し名は、次いで、スキルボットを明示的に呼び出すためにデジタルアシスタントのユーザによって使用されることができる。例えば、ユーザは、ユーザの発話に呼出し名を入力して、対応するスキルボットを明示的に呼び出すことができる。
【0058】
(2)スキルボットに対して1つ以上のインテントおよび関連付けられる例示的な発話を設定する-スキルボット設計者は、作成されているスキルボットに対して1つ以上のインテント(ボットインテントとも呼ばれる)を指定する。次いで、スキルボットは、これらの指定されたインテントに基づいてトレーニングされる。これらのインテントは、スキルボットが入力発話について推論するようにトレーニングされるカテゴリまたはクラスを表す。発話を受信すると、トレーニングされたスキルボットは、発話のインテントを推論し、推論されるインテントは、スキルボットをトレーニングするために使用されたインテントの事前定義されたセットから選択される。次いで、スキルボットは、発話に対して推論されたインテントに基づいて、その発話に応答する適切なアクションを取る。場合によっては、スキルボットのためのインテントは、スキルボットがデジタルアシスタントのユーザに対して実行することができるタスクを表す。各インテントには、インテント識別子またはインテント名が与えられる。例えば、銀行に対してトレーニングされたスキルボットの場合、そのスキルボットに対して指定されたインテントは、「CheckBalance(残高照会)」、「TransferMoney(送金)」、「DepositCheck(小切手を預け入れる)」などを含んでもよい。
【0059】
スキルボットに対して定義される各インテントについて、スキルボット設計者はまた、そのインテントを代表し示す1つ以上の例示的な発話も提供してもよい。これらの例示的な発話は、ユーザがそのインテントのためにスキルボットに入力してもよい発話を表すよう意味される。例えば、残高照会のインテントについては、例示的な発話は、「What's my savings account balance?(私の普通預金口座の残高は?)」、「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」、「How much money do I have in my account(私の口座にはいくらのお金がありますか?)」などを含んでもよい。したがって、典型的なユーザ発話の様々な順列が、インテントのための発話例として指定される。
【0060】
インテントおよびそれらの関連付けられる例示的発話は、スキルボットをトレーニングするためのトレーニングデータとして使用される。様々な異なるトレーニング技術が使用される。このトレーニングの結果として、予測モデルが生成され、それは、発話を入力として取り込み、予測モデルによって発話について推論されたインテントを出力するよう構成される。いくつかの事例では、入力発話は、トレーニングされたモデルを使用して入力発話に対するインテントを予測または推測するよう構成される、インテント分析エンジンに提供される。次いで、スキルボットは、推論されたインテントに基づいて1つ以上のアクションを取ってもよい。
【0061】
(3)1つ以上のインテントに対して1つ以上のエンティティを設定する-いくつかの例では、スキルボットがユーザ発話に適切に応答することを可能にするために追加のコンテキストが必要とされる。例えば、ユーザ入力発話が、スキルボットにおいて同じインテントに解決する状況がある。例えば、上記の例では、発話「What's my savings account balance?(私の普通預金口座の残高は?)」および「How much is in my checking account?(私の当座預金口座にはいくらありますか?)」は両方とも、同じ残高照会のインテントに解決しているが、これらの発話は、異なることを望む異なる要求である。そのような要求を明確にするために、1つ以上のエンティティがインテントに追加される。銀行業務スキルボットの例を用いると、「checking(当座)」および「saving(普通)」と呼ばれる値を定義するAccountType(口座種類)と呼ばれるエンティティは、スキルボットがユーザ要求を解析し、適切に応答することを可能にしてもよい。上記の例では、発話は同じインテントに解決するが、AccountTypeエンティティに関連付けられる値は、2つの発話について異なる。これにより、スキルボットは、2つの発話が同じインテントに解決するにもかかわらず、2つの発話に対して場合によっては異なるアクションを実行することができる。1つ以上のエンティティは、スキルボットに対して設定された特定のインテントのために指定され得る。したがって、エンティティは、コンテキストをインテント自体に追加するために用いられる。エンティティは、インテントをより充分に記述するのに役立ち、スキルボットがユーザ要求を完了できるようにする。
【0062】
ある実施形態では、2つのタイプのエンティティ、すなわち、(a)DABP102によって提供される組込みエンティティ、および(2)スキルボット設計者によって指定され得るカスタムエンティティがある。組込みエンティティは、多種多様なボットとともに用いることができる汎用エンティティである。組込みエンティティの例は、限定はしないが、時間、日付、アドレス、番号、電子メールアドレス、持続時間、循環期間、通貨、電話番号、URLなどに関連するエンティティを含む。カスタムエンティティは、よりカスタマイズされた用途に用いられる。例えば、銀行業務スキルについては、AccountTypeエンティティは、スキルボット設計者によって、当座、普通およびクレジットカードなどのようなキーワードについてユーザ入力をチェックすることによって様々な銀行取引を可能にするよう定義される。
【0063】
(4)スキルボットをトレーニングする-スキルボットは、ユーザ入力を発話の形態で受信し、受信した入力を解析またはその他の方法で処理し、受信したユーザ入力に関連するインテントを識別または選択するように構成される。上述のように、スキルボットは、このためにトレーニングされなければならない。ある実施形態では、スキルボットは、そのスキルボットに対して設定されたインテント、およびそのインテントに関連付けられる例示的な発話(集合的にトレーニングデータ)に基づいてトレーニングされ、それにより、スキルボットは、ユーザ入力発話を、スキルボットの設定されたインテントの1つに解決することができる。特定の実施形態では、スキルボットは、トレーニングデータを用いてトレーニングされ、ユーザが何を言っているか(または場合によっては、何を言おうとしているか)をスキルボットが識別することを可能にする予測モデルを使用する。DABP102は、様々な機械学習ベースのトレーニング技術、ルールベースのトレーニング技術、および/またはそれらの組み合わせを含む、スキルボットをトレーニングするためにスキルボット設計者によって用いられ得る様々な異なるトレーニング技術を提供する。ある実施形態では、トレーニングデータの一部分(例えば80%)は、スキルボットモデルをトレーニングするために用いられ、別の部分(例えば残りの20%)は、モデルをテストまたは検証するために用いられる。トレーニングされると、トレーニングされたモデル(トレーニングされたスキルボットと呼ばれることもある)は、次いで、ユーザ発話を処理し、それに応答するよう使用されることができる。ある場合には、ユーザの発話は、単一の回答だけを必要とし、さらなる会話を必要としない質問である。このような状況に対処するために、スキルボットに対してQ&A(質疑応答)インテントを定義する。これは、スキルボットがダイアログ定義を更新する必要なしにユーザ要求に対する返答を出力することを可能にする。Q&Aインテントは、通常のインテントと同様に生成される。Q&Aインテントについてのダイアログフローは、通常のインテントについてのダイアログフローとは異なり得る。
【0064】
(5)スキルボットのためにダイアログフローを作成する-スキルボットに対して指定されるダイアログフローは、受信されたユーザ入力に応答してスキルボットに対する異なるインテントが解決される際にスキルボットがどのように反応するかを記述する。ダイアログフローは、例えば、スキルボットがどのようにユーザ発話に応答するか、スキルボットがどのようにユーザに入力を促すか、スキルボットがどのようにデータを返すかといった、スキルボットがとる動作またはアクションを定義する。ダイアログフローは、スキルボットが辿るフローチャートのようなものである。スキルボット設計者は、マークダウン言語などの言語を用いてダイアログフローを指定する。ある実施形態では、OBotMLと呼ばれるYAMLのバージョンを用いて、スキルボットのためのダイアログフローを指定する。スキルボットのためのダイアログフロー定義は、スキルボット設計者に、スキルボットとスキルボットが対応するユーザとの間の対話のコレオグラフィを行わせる、会話自体のモデルとして働く。
【0065】
ある実施形態では、スキルボットのダイアログフロー定義は、3つのセクションを含む:
(a)コンテキストセクション
(b)デフォルト遷移セクション
(c)状態セクション。
【0066】
コンテキストセクション-スキルボット設計者は、コンテキストセクションにおいて、会話フローで用いられる変数を定義することができる。コンテキストセクションで指名される他の変数は、限定されないが、エラー処理のための変数、組込みエンティティまたはカスタムエンティティのための変数、スキルボットがユーザ選好を認識および持続することを可能にするユーザ変数などを含む。
【0067】
デフォルト遷移セクション-スキルボットのための遷移は、ダイアログフロー状態セクションまたはデフォルト遷移セクションで定義することができる。デフォルト遷移セクションで定義される遷移は、フォールバックとして作用し、状態内に定義される適用可能な遷移がない場合または状態遷移をトリガするために必要な条件を満たせない場合にトリガされる。デフォルト遷移セクションは、スキルボットが予想外のユーザアクションをそつなく処理することを可能にするルーティングを定義するために用いられ得る。
【0068】
状態セクション-ダイアログフローおよびその関連動作は、ダイアログフロー内の論理を管理する一連の一時的な状態として定義される。ダイアログフロー定義内の各状態ノードは、ダイアログのその点において必要とされる機能を提供するコンポーネントを指名する。このようにして、コンポーネントの周囲に状態を構築する。状態は、コンポーネント固有の特性を含み、コンポーネントが実行された後にトリガされる他の状態への遷移を定義する。
【0069】
特別なケースのシナリオは、状態セクションを用いて取り扱われる。例えば、ユーザが取りかかっている第1のスキルを一時的に出て、デジタルアシスタント内で第2のスキルにおいて何かを行うというオプションを、ユーザに与えたい場合があるかもしれない。例えば、ユーザがショッピングスキルとの会話に関わっている(例えば、ユーザは、購入のために何らかの選択を行った)場合、ユーザは、銀行業務スキルにジャンプし(例えば、ユーザは、その購入に十分な金額を有することを確かめたい場合がある)、その後、ユーザの注文を完了するためにショッピングスキルに戻ることを望む場合がある。これに対処するために、第1のスキルにおけるアクションは、同じデジタルアシスタントにおいて第2の異なるスキルとの対話を開始し、次いで元のフローに戻るように構成されることができる。
【0070】
(6)カスタムコンポーネントをスキルボットに追加する-上述のように、スキルボットのためにダイアログフローにおいて指定される状態は、その状態に対応する必要な機能を提供するコンポーネントを指名する。コンポーネントは、スキルボットが機能を実行することを可能にする。ある実施形態では、DABP102は、広範囲の機能を実行するための事前設定されたコンポーネントのセットを提供する。スキルボット設計者は、これらの事前設定されたコンポーネントのうちの1つ以上を選択し、それらをスキルボットのためのダイアログフロー内の状態と関連付けることができる。スキルボット設計者はまた、DABP102によって提供されるツールを用いてカスタムまたは新たなコンポーネントを作成し、カスタムコンポーネントをスキルボットのためのダイアログフロー内の1つ以上の状態と関連付けることができる。
【0071】
(7)スキルボットをテストおよび展開する-DABP102は、スキルボット設計者が開発中のスキルボットをテストすることを可能にするいくつかの特徴を提供する。次いで、スキルボットは、デジタルアシスタントにおいて展開され、それに含めることができる。
【0072】
上記の説明は、スキルボットをどのように作成するかについて説明しているが、同様の技術を用いて、デジタルアシスタント(または親ボット)を作成することもできる。親ボットまたはデジタルアシスタントレベルでは、デジタルアシスタントのために組込みシステムインテントを設定する。これらの組込みシステムインテントは、デジタルアシスタント自体(すなわち、親ボット)が、デジタルアシスタントに関連付けられるスキルボットを呼び出すことなく取り扱うことができる一般的なタスクを識別するために用いられる。親ボットに対して定義されるシステムインテントの例は、以下を含む:(1)退出:ユーザがデジタルアシスタントにおいて現在の会話またはコンテキストを終了したい旨を知らせる場合に当てはまる;(2)ヘルプ:ユーザがヘルプまたは方向付けを求める場合に当てはまる;(3)未解決のインテント(UnresolvedIntent):退出インテントおよびヘルプインテントとうまく一致しないユーザ入力に当てはまる。デジタルアシスタントはまた、デジタルアシスタントに関連付けられる1つ以上のスキルボットに関する情報を記憶する。この情報は、親ボットが、発話を処理するために、特定のスキルボットを選択することを可能にする。
【0073】
親ボットまたはデジタルアシスタントレベルでは、ユーザがデジタルアシスタントに句または発話を入力すると、デジタルアシスタントは、発話および関連する会話をどのようにルーティングするかを判断する処理を行うように構成される。デジタルアシスタントは、ルールベース、AIベース、またはそれらの組み合わせとすることができるルーティングモデルを用いて、これを判断する。デジタルアシスタントは、ルーティングモデルを用いて、ユーザ入力発話に対応する会話が、処理のために特定のスキルにルーティングされるべきか、組込みシステムインテントに従ってデジタルアシスタントまたは親ボット自体によって処理されるべきか、または現在の会話フローにおいて異なる状態として処理されるべきかを判断する。
【0074】
特定の実施形態では、この処理の一部として、デジタルアシスタントは、ユーザ入力発話が、スキルボットを、その呼出し名を用いて明示的に識別するかどうかを判断する。呼出し名がユーザ入力に存在する場合、それは、呼出し名に対応するスキルボットの明示的な呼出しとして扱われる。そのようなシナリオでは、デジタルアシスタントは、ユーザ入力を、さらなる処理のために、明示的に呼び出されたスキルボットにルーティングすることができる。特定の、または明示的な呼出しがない場合、ある実施形態では、デジタルアシスタントは、受信されたユーザ入力発話を評価し、デジタルアシスタントに関連付けられるシステムインテントおよびスキルボットについて信頼度スコアを計算する。スキルボットまたはシステムインテントについて計算されるスコアは、ユーザ入力が、スキルボットが実行するように構成されるタスクを表すかまたはシステムインテントを表す可能性を表す。関連付けられる計算された信頼度スコアが閾値(例えば、Confidence Threshold(信頼度閾値)ルーティングパラメータ)を超えるシステムインテントまたはスキルボットは、さらなる評価の候補として選択される。次いで、デジタルアシスタントは、識別された候補から、ユーザ入力発話のさらなる処理のために、特定のシステムインテントまたはスキルボットを選択する。特定の実施形態では、1つ以上のスキルボットが候補として識別された後、それらの候補スキルに関連付けられるインテントが(各スキルに対するインテントモデルに従って)評価され、信頼度スコアが各インテントについて判断される。一般に、閾値(例えば70%)を超える信頼度スコアを有するインテントは、候補インテントとして扱われる。特定のスキルボットが選択された場合、ユーザ発話は、さらなる処理のために、そのスキルボットにルーティングされる。システムインテントが選択された場合、選択されたシステムインテントに従って、親ボット自体によって、1つ以上のアクションが実行される。
【0075】
図2は、ある実施形態による、親ボット(MB)システム200の簡略化されたブロック図である。MBシステム200は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現することができる。MBシステム200は、前処理サブシステム210と、複数インテントサブシステム(MIS)220と、明示的呼出サブシステム(EIS)230と、スキルボット呼出部240と、データストア250とを含む。図2に示すMBシステム200は、親ボットにおける構成要素の構成の単なる例である。当業者は、多くの可能な変形、代替、および修正を認識するであろう。例えば、いくつかの実現例では、MBシステム200は、図2に示されるものより多いかもしくは少ないシステムもしくは構成要素を有してもよく、2つ以上のサブシステムを組み合わせてもよく、または異なる構成もしくは配置のサブシステムを有してもよい。
【0076】
前処理サブシステム210は、ユーザから発話「A」202を受信し、言語検出部212および言語パーサ214を通して発話を処理する。上述したように、発話は、音声またはテキストを含む様々な方法で提供され得る。発話202は、断章、完全な文、複数の文などであり得る。発話202は、句読点を含むことができる。例えば、発話202が音声として提供される場合、前処理サブシステム210は、結果として生じるテキストに句読点、例えば、カンマ、セミコロン、ピリオド等を挿入する、音声テキスト変換器(図示せず)を使用して、音声をテキストに変換してもよい。
【0077】
言語検出部212は、発話202のテキストに基づいて、発話202の言語を検出する。各言語は独自の文法および意味を有するので、発話202が処理される態様はその言語に依存する。言語の違いは、発話の構文および構造を解析する際に考慮される。
【0078】
言語パーサ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に入力として提供される。
【0079】
上述したように、発話202は、複数の文を含み得る。複数のインテントおよび明示的な呼出しを検出する目的で、発話202は、たとえそれが複数の文を含む場合であっても、単一の単位として扱われることができる。しかしながら、ある実施形態では、前処理は、例えば、前処理サブシステム210によって、複数インテント分析および明示的呼出し分析のために、複数の文の中で単一の文を識別するよう、実行されることができる。概して、MIS220およびEIS230によって生成される結果は、発話202が個々の文のレベルで処理されるか、または複数の文を含む単一の単位として処理されるかにかかわらず、実質的に同じである。
【0080】
MIS220は、発話202が複数のインテントを表すかどうかを判断する。MIS220は、発話202において複数のインテントの存在を検出することができるが、MIS220によって実行される処理は、発話202のインテントがボットのために構成された任意のインテントと一致するかどうかを判断することを伴わない。代わりに、発話202のインテントがボットインテントと一致するかどうかを判断するための処理は、(例えば、図3の実施形態に示すように、)MBシステム200のインテント分類器242によって、またはスキルボットのインテント分類器によって実行され得る。MIS220によって実行される処理は、発話202を処理することができるボット(例えば、特定のスキルボットまたは親ボット自体)が存在する、と仮定する。したがって、MIS220によって実行される処理は、どのようなボットがチャットボットシステム内にあるかについての知識(例えば、親ボットに登録されたスキルボットのアイデンティティ)または特定のボットに対してどのようなインテントが設定されているかについての知識を必要としない。
【0081】
発話202が複数のインテントを含む、と判断するために、MIS220は、データストア250内のルール252のセットから1つ以上のルールを適用する。発話202に適用されるルールは、発話202の言語に依存し、複数のインテントの存在を示す文パターンを含んでもよい。例えば、ある文パターンは、文の2つの部分(例えば等位項)を接続する接続詞を含んでもよく、両方の部分は別個のインテントに対応する。発話202が文パターンに一致する場合、発話202は複数のインテントを表す、と推測することができる。複数のインテントを有する発話は、必ずしも異なるインテント(例えば、異なるボットに向けられるインテント、または同じボット内の異なるインテント)を有するとは限らないことに留意されたい。代わりに、発話は、同じインテントの別々のインスタンス、例えば、「支払い口座Xを使用してピザを注文し、次いで支払い口座Yを使用してピザを注文する」、を有し得る。
【0082】
発話202が複数のインテントを表すと判断することの一部として、MIS220は、発話202のどのような部分が各インテントに関連付けられるかも判断する。MIS220は、複数のインテントを含む発話で表現される各インテントについて、図2に示すように、元の発話の代わりに別の処理のための新たな発話、例えば発話「B」206および発話「C」208を構築する。したがって、元の発話202は、一度に1つずつ取り扱われる2つ以上の別個の発話に分割することができる。MIS220は、抽出された情報205を使用して、および/または発話202自体の分析から、2つ以上の発話のうちのどれが最初に処理されるべきかを判断する。たとえば、MIS220は、発話202が、特定のインテントが最初に扱われるべきであることを示すマーカワードを含むと判断してもよい。この特定のインテントに対応する新たに形成された発話(例えば、発話206または発話208のうちの1つ)は、EIS230によるさらなる処理のために最初に送信されることになる。第1の発話によってトリガされた会話が終了した(または一時的に中断された)後、次に最も高い優先度の発話(例えば、発話206または発話208の他方)が、次いで、処理のためにEIS230に送られ得る。
【0083】
EIS230は、受信した発話(例えば、発話206または発話208)がスキルボットの呼出し名を含むかどうかを判断する。ある実施形態では、チャットボットシステム内の各スキルボットは、そのスキルボットをチャットボットシステム内の他のスキルボットから区別する固有の呼出し名を割り当てられる。呼出し名のリストは、データストア250内にスキルボット情報254の一部として維持することができる。発話が呼出し名に一致する単語を含むとき、発話は明示的な呼出しであると見なされる。ボットが明示的に呼び出されない場合、EIS230によって受信された発話は、非明示的に呼び出す発話234と見なされ、親ボットのインテント分類器(例えば、インテント分類器242)に入力されて、発話を処理するためにどのボットを使用するかが判断される。いくつかの例では、インテント分類器242は、親ボットが非明示的に呼び出す発話を処理すべきであると判断する。他の例では、インテント分類器242は、処理のために発話をルーティングするためのスキルボットを決定する。
【0084】
EIS230によって提供される明示的な呼出し機能は、いくつかの利点を有する。それは、親ボットが実行しなければならない処理の量を低減することができる。例えば、明示的な呼出しがある場合、親ボットは、(例えば、インテント分類器242を使用して)いかなるインテント分類分析も行わなくてもよく、またはスキルボットを選択するために、低減されたインテント分類分析を行わなければならなくてもよい。したがって、明示的な呼出し分析は、インテント分類分析に頼ることなく、特定のスキルボットの選択を可能にしてもよい。
【0085】
また、複数のスキルボット間で機能に重複がある状況もある。これは、例えば、2つのスキルボットによって取り扱われるインテントが重なり合うかまたは互いに非常に近い場合に起こり得る。そのような状況では、親ボットが、インテント分類分析のみに基づいて、複数のスキルボットのうちのどれを選択するかを識別することは、困難であり得る。このようなシナリオでは、明示的な呼出しは、使用されるべき特定のスキルボットの曖昧さを解消する。
【0086】
発話が明示的な呼出しであると判断することに加えて、EIS230は、発話の任意の部分が明示的に呼び出されるスキルボットへの入力として使用されるべきかどうかを判断することを担う。特に、EIS230は、発話の一部が呼出しに関連付けられていないかどうかを判断することができる。EIS230は、発話の分析および/または抽出された情報205の分析を通して、この判断を行うことができる。EIS230は、EIS230によって受信された発話全体を送信する代わりに、呼出しに関連付けられていない発話の部分を呼び出されたスキルボットに送信することができる。いくつかの例では、呼び出されたスキルボットへの入力は、単に、呼出しに関連付けられる発話の任意の部分を除去することによって、形成される。例えば、「Pizza Botを使用してピザを注文したい」は、「ピザを注文したい」に短縮することができ、なぜならば、「Pizza Botを使用して」は、ピザボットの呼出しに関係するが、ピザボットによって実行されるいかなる処理にも関係しないからである。いくつかの例では、EIS230は、たとえば完全な文を形成するために、呼び出されたボットに送られるべき部分を再フォーマットしてもよい。したがって、EIS230は、明示的な呼出しがあることだけでなく、明示的な呼出しがあるときに何をスキルボットに送るべきかも判断する。いくつかの例においては、呼び出されるボットに入力するテキストがない場合がある。例えば、発話が「Pizza Bot」であった場合、EIS230は、ピザボットが呼び出されているが、ピザボットによって処理されるテキストはないと判断し得る。そのようなシナリオでは、EIS230は、送信すべきものがないことをスキルボット呼出部240に示すことができる。
【0087】
スキルボット呼出部240は、様々な態様でスキルボットを呼び出す。例えば、スキルボット呼出部240は、特定のスキルボットが明示的な呼出しの結果として選択されたという指示235の受信に応答してボットを呼び出すことができる。指示235は、明示的に呼び出されたスキルボットに対する入力とともにEIS230によって送信され得る。このシナリオでは、スキルボット呼出部240は、明示的に呼び出されたスキルボットに会話の制御を引き継ぐ。明示的に呼び出されたスキルボットは、入力を独立した発話として扱うことによって、EIS230からの入力に対する適切な応答を判断する。たとえば、応答は、特定のアクションを実行すること、または特定の状態で新たな会話を開始することであり得、新たな会話の初期状態は、EIS230から送信された入力に依存する。
【0088】
スキルボット呼出部240がスキルボットを呼び出すことができる別の態様は、インテント分類器242を使用する暗黙的な呼出しによるものである。インテント分類器242は、機械学習および/またはルールベースのトレーニング技術を使用してトレーニングされて、ある発話が、ある特定のスキルボットが実行するよう構成されるあるタスクを表す尤度を判断することができる。インテント分類器242は、スキルボットごとに1つのクラスである、異なるクラスでトレーニングされる。例えば、新たなスキルボットが親ボットに登録されるたびに、その新たなスキルボットに関連付けられる例示的な発話のリストを使用して、インテント分類器242をトレーニングして、ある特定の発話が、その新たなスキルボットが実行できるあるタスクを表す尤度を判断することができる。このトレーニングの結果として生成されるパラメータ(例えば、機械学習モデルのパラメータに対する値のセット)は、スキルボット情報254の一部として記憶することができる。
【0089】
ある実施形態では、インテント分類器242は、ここでさらに詳細に説明されるように、機械学習モデルを使用して実現される。機械学習モデルのトレーニングは、機械学習モデルの出力として、どのボットが任意の特定のトレーニング発話を処理するための正しいボットであるかについての推論を生成するために、様々なスキルボットに関連付けられる例示的な発話から、発話の少なくともサブセットを入力することを含んでもよい。各トレーニング発話について、そのトレーニング発話のために使用すべき正しいボットの指示が、グラウンドトゥルース情報として提供される。機械学習モデルの挙動は、次いで、生成された推論とグラウンドトルース情報との間の差異を最小限にするように(例えば、逆伝搬を通して)適合させることができる。
【0090】
特定の実施形態では、インテント分類器242は、親ボットに登録された各スキルボットについて、そのスキルボットがある発話(例えば、EIS230から受信した非明示的に呼び出す発話234)を処理できる尤度を示す信頼度スコアを判定する。インテント分類器242はまた、構成された各システムレベルインテント(例えば、ヘルプ、退出)について信頼度スコアを判定してもよい。ある特定の信頼度スコアが1つ以上の条件を満たす場合、スキルボット呼出部240は、その特定の信頼度スコアに関連付けられるボットを呼び出すことになる。例えば、ある閾値信頼度スコア値が満たされる必要があってもよい。したがって、インテント分類器242の出力245は、あるシステムインテントの識別またはある特定のスキルボットの識別のいずれかである。いくつかの実施形態では、閾値信頼度スコア値を満たすことに加えて、信頼度スコアは、次の高い信頼度スコアを特定の勝利マージン分だけ超えなければならない。そのような条件を課すことは、複数のスキルボットの信頼度スコアが各々閾値信頼度スコア値を超える場合に特定のスキルボットへのルーティングを可能にする。
【0091】
信頼度スコアの評価に基づいてボットを識別した後、スキルボット呼出部240は、識別されたボットに処理を引き渡す。システムインテントの場合、識別されたボットは親ボットである。そうでない場合、識別されたボットはスキルボットである。さらに、スキルボット呼出部240は、識別されたボットに対する入力247として何を提供するかを判断することになる。上述したように、明示的な呼出しの場合、入力247は、呼出に関連付けられていない発話の一部に基づくことができ、または入力247は、無(例えば、空のストリング)であることができる。暗黙的な呼出の場合、入力247は発話全体であり得る。
【0092】
データストア250は、親ボットシステム200の種々のサブシステムによって使用されるデータを記憶する、1つ以上のコンピューティングデバイスを備える。上記で説明したように、データストア250は、ルール252およびスキルボット情報254を含む。ルール252は、例えば、MIS220によって、発話がいつ複数のインテントを表すか、および複数のインテントを表す発話をどのように分割するか、を判断するためのルールを含む。ルール252はさらに、EIS230によって、スキルボットを明示的に呼び出す発話のどの部分をスキルボットに送信すべきかを判断するためのルールを含む。スキルボット情報254は、チャットボットシステム内のスキルボットの呼出し名、例えば、ある特定の親ボットに登録されたすべてのスキルボットの呼出し名のリストを含む。スキルボット情報254はまた、チャットボットシステム内の各スキルボットについて信頼度スコアを判定するためにインテント分類器242によって使用される情報、例えば、機械学習モデルのパラメータを含むことができる。
【0093】
図3は、特定の実施形態に係るスキルボットシステム300の簡略ブロック図である。スキルボットシステム300は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現され得る、コンピューティングシステムである。図1に示される実施形態等のある実施形態では、スキルボットシステム300は、デジタルアシスタント内で1つ以上のスキルボットを実現するために使用されることができる。
【0094】
スキルボットシステム300は、MIS310と、インテント分類器320と、会話マネージャ330とを含む。MIS310は、図2のMIS220に類似しており、(1)発話が複数のインテントを表すかどうか、およびそうである場合、(2)発話を複数のインテントの各インテントについてどのように別個の発話に分割するか、をデータストア350内のルール352を使用して判断するよう動作可能であることを含む、同様の機能を提供する。ある実施形態では、複数のインテントを検出し、発話を分割するために、MIS310によって適用されるルールは、MIS220によって適用されるルールと同じである。MIS310は、発話302および抽出された情報304を受信する。抽出された情報304は、図1の抽出された情報205に類似しており、言語パーサ214またはスキルボットシステム300にローカルな言語パーサを使用して生成することができる。
【0095】
インテント分類器320は、図4の実施形態に関連して上で論じられたインテント分類器242と同様の態様で、ここにおいてさらに詳細に説明されるように、トレーニングされ得る。例えば、特定の実施形態では、インテント分類器320は、機械学習モデルを使用して実現される。インテント分類器320の機械学習モデルは、トレーニング発話として特定のスキルボットに関連付けられる例示的な発話の少なくともサブセットを使用して、当該特定のスキルボットについてトレーニングされる。各トレーニング発話に対するグラウンドトゥルースは、そのトレーニング発話に関連付けられる特定のボットインテントであろう。
【0096】
発話302は、ユーザから直接受信され得るか、または親ボットを介して供給され得る。発話302が、例えば、図4に示される実施形態におけるMIS220およびEIS230を通した処理の結果として、親ボットを通して供給されるとき、MIS310は、MIS220によって既に行われている処理の反復を回避するようにバイパスされることができる。しかしながら、発話302が、例えば、スキルボットへのルーティング後に生じる会話中に、ユーザから直接受信される場合、MIS310は、発話302を処理して、発話302が複数のインテントを表すかどうかを判断することができる。発話302が複数のインテントを表す場合、MIS310は、1つ以上のルールを適用して、発話302を各インテントごとに別個の発話、例えば、発話「D」306および発話「E」308に分割する。発話302が複数のインテントを表さない場合、MIS310は、発話302を、分割することなく、インテント分類のために、インテント分類器320に転送する。
【0097】
インテント分類器320は、受信された発話(例えば、発話306または308)をスキルボットシステム300に関連付けられるインテントと照合するよう構成される。上記で説明したように、スキルボットは、1つ以上のインテントとともに構成されることができ、各インテントは、そのインテントに関連付けられ、分類器をトレーニングするために使用される、少なくとも1つの例示的な発話を含む。図2の実施形態では、親ボットシステム200のインテント分類器242は、個々のスキルボットの信頼度スコアおよびシステムインテントの信頼度スコアを判定するようトレーニングされる。同様に、インテント分類器320は、スキルボットシステム300に関連付けられる各インテントの信頼度スコアを判定するようトレーニングされ得る。インテント分類器242によって実行される分類はボットレベルであるが、インテント分類器320によって実行される分類はインテントレベルであり、したがってより細かい粒度である。インテント分類器320は、インテント情報354へのアクセスを有する。インテント情報354は、スキルボットシステム300に関連付けられる各インテントごとに、そのインテントの意味を表わして示し、典型的にはそのインテントによって実行可能なタスクに関連付けられる発話のリストを含む。インテント情報354は、さらに、この発話のリストでのトレーニングの結果として生成されるパラメータを含むことができる。
【0098】
会話マネージャ330は、インテント分類器320の出力として、インテント分類器320に入力された発話に最もよくマッチするものとして、インテント分類器320によって識別された特定のインテントの指示322を受信する。いくつかの例では、インテント分類器320は、何らかのマッチを判断することができない。例えば、インテント分類器320によって計算される信頼度スコアは、発話がシステムインテントまたは異なるスキルボットのインテントに向けられる場合、閾値信頼度スコア値を下回るかもしれない。これが発生すると、スキルボットシステム300は、発話を、処理のため、例えば、異なるスキルボットにルーティングするために、親ボットに任せてもよい。しかしながら、インテント分類器320がスキルボット内においてインテントの識別に成功した場合、会話マネージャ330はユーザとの会話を開始する。
【0099】
会話マネージャ330によって開始される会話は、インテント分類器320によって識別されたインテントに固有の会話である。たとえば、会話マネージャ330は、識別されたインテントのために、あるダイアログフローを実行するよう構成される状態機械を使用して実現される。状態機械は、(例えば、インテントがいかなる追加の入力もなしに呼び出されるときに対する)デフォルト開始状態、および1つ以上の追加の状態を含むことができ、各状態は、スキルボットによって実行されるべきアクション(たとえば、購入取引を実行する)および/またはユーザに提示されるべきダイアログ(たとえば、質問、応答)がそれに関連付けられている。したがって、会話マネージャ330は、インテントを識別する指示322を受信すると、アクション/ダイアログ335を決定することができ、会話中に受信された後続の発話に応答して、追加のアクションまたはダイアログを決定することができる。
【0100】
データストア350は、スキルボットシステム300の様々なサブシステムによって使用されるデータを記憶する1つ以上のコンピューティングデバイスを備える。図3に示すように、データストア350は、ルール352およびインテント情報354を含む。特定の実施形態では、データストア350は、親ボットまたはデジタルアシスタントのデータストア、例えば、図2のデータストア250に統合されることができる。
【0101】
例示的なデータ処理システム
図4は、いくつかの実施形態によるデータ処理システム400の簡略ブロック図である。図4に示す構成は、ここで説明する方法のすべてまたは一部を実行するために利用されるデータ処理システムの例示的な実施形態であるが、図4に示すシステムは、これらの方法を実行し得る唯一のシステムではない。データ処理システム400は、ソフトウェアのみ、ハードウェアのみ、またはハードウェアとソフトウェアとの組み合わせで実現されてもよい。データ処理システム400は、通信ポータル402を含む。通信ポータル402は、外部エンティティとデータ処理システム400との間の通信を可能にする任意のハードウェア、ソフトウェア、または命令である。種々の実施形態では、通信ポータル402は、ユーザとデータ処理システム400によって実現されるチャットボットとの間のメッセージの交換を可能にする。例えば、ユーザは、チャットボットとの対話の一部として入来発話406をデータ処理システム400に送信し得る。入来発話406は、ユーザ通信命令404に従って受信および/または解釈される。ユーザ通信命令404は、通信ポータルが入来発話406を取り込むこと、または発信対話410を送信することを可能にする、命令またはステップの任意のセットである。様々な実施形態では、チャットボットルーティング命令は、チャットボットに関連付けられた発信対話410をユーザに送信するように実現される。
【0102】
入来発話406が通信ポータルによって受信されると、それは発話変換器412にルーティングされる。発話変換器412は、入来発話406を発話データ416に変換し得る、データ処理システム400内の任意のエンティティである。様々な実施形態では、発話変換器412は、入来発話406を発話データ416に変換するための命令またはステップを含み得る変換命令414を含む。発話変換器412は、自然言語ベースのフォーマットで受信された入来発話406を、インテント分類器などの分類器モデルによって受信され解析される入力データに変更する。例えば、入来発話406は、チャットボットを使用して発話を解決するために自動化されたデジタルアシスタントと対話するクライアント/顧客から受信されたのと同じフォーマットの発話データである。発話変換器412は、変換命令414を利用して、分類器モデルに入力され得るフォーマットにある、対応する発話データ416を生成する。これは、入来発話406のフォーマットが分類器モデルのための入力として許容可能でないときに実行され得る。様々な実施形態では、発話変換器412からの発話データ416は、インテント分類器418に送られる。インテント分類器418は、入来発話406に対応するインテントデータ420を分類、定量化、または別様に構築し得る。様々な実施形態では、インテントデータ420は、特定のインテントが入来発話406に対応する1つ以上の確率に対応し得る。インテント分類器は、たとえば、受信される将来の発話データ416について1つ以上の確率をより良く出力するためにトレーニングシーケンス中に調整される、ノードパラメータまたは重みを含むノードを採用する人工ニューラルネットワークである。例えば、なんらかの「グラウンドトゥルース」データを有するトレーニングデータセットがインテント分類器418で受信され、そこから生成される確率が、グラウンドトゥルースデータによって指定される「所望の」インテントと比較されて、機械学習モデルを再トレーニングするために使用されることになる損失が生成される。
【0103】
インテントデータ420は、インテント分類器418から変換モデル422に送られる。変換モデルは、データ処理システム400内に独立して存在するエンティティであるか、またはデータストア438などの別個の構成要素によって記憶および実現される。変換モデル422は、インテントデータ420を、スキルリポジトリ426に送られるスキルデータ424に変換する。様々な実施形態では、スキルデータ424は、特定のスキルまたは子チャットボットが、入力されたインテントデータ420に基づいて入来発話406に対応する1つ以上の確率に対応し得る。様々な実施形態では、変換モデル422は、インテントデータ420に対して1つ以上の数学的変換を実行して、スキルデータ424を作成する。スキルデータ424は、変換モデル422によって変換されると、スキルリポジトリ426に送られる。スキルリポジトリ426は、ここに記載の方法を実現するために、スキルデータ424を記憶し、実現し、または他の態様で操作する、データ処理システム400内の任意のエンティティである。スキルリポジトリ426は、スキル選択命令428を含む。スキル選択命令426は、入来発話406に応答してスキルまたはチャットボットの選択を支援する命令またはステップの任意のセットである。例えば、スキル選択命令428は、スキルデータ424を解析することに応答して、ユーザと対話するためのチャットボットおよび/またはスキルの選択を引き起こし得る。
【0104】
様々な実施形態では、発話変換器412は、先にデータをインテント分類器418および/または変換モデル422に通すことなく、発話データ416をスキルリポジトリ426に直接送ってもよい。様々な追加の実施形態では、スキル分類器430は、発話データ416を取り込み、インテント分類器418および変換モデル422の命令とは別個の命令に従ってスキルデータを作成し得る。比較は、インテント分類器418、変換モデル422、および/またはスキル分類器430のいずれかを再トレーニングするために使用される。これは、単因子モデリング技術に基づく予測されるスキルと多因子モデリング技術に基づく予測されるスキルとの比較を表す。発話データ416の、インテント分類器418、および次いで変換モデル422への入力は、発話を処理するためにスキルを予測するための多因子モデリング手法を表す。対照的に、発話データ416のスキル分類器430への直接入力は、発話を処理するためにスキルを予測するための単因子モデリング手法を表す。両方の手法を使用して予測されるスキルの間の差は、クライアント/顧客と対話するときの予測時間においてなど、単因子モデリングの場合においてスキルをより良く予測するようスキル分類器430を再トレーニングするために使用され得る損失を生成するために、比較され得る。
【0105】
スキルリポジトリ426は、チャットボットリポジトリ432を含む。チャットボットリポジトリ432は、対話を処理するために実現される1つ以上のチャットボットのデータまたはインスタンスを含む任意のリポジトリまたはストレージである。チャットボットリポジトリ432は、概してデータ処理システム400のユーザと対話することができる親チャットボット434を含んでもよい。チャットボットリポジトリ432は、チャットボットエコシステム内のスキルに対応する子チャットボット436A~436Nをさらに含んでもよい。
【0106】
データ処理システム400は、データストア438をさらに備えてもよい。データストア438は、データ処理システム400の動作に関連するデータを記憶することができる任意のストレージ、メモリ、または媒体である。たとえば、データストア438は、インテントデータをスキルデータに変換するための1つ以上の変換モデルを記憶し得るモデルリポジトリ446を備えてもよい。データストア438はさらに、ルール440を含んでもよい。ルール440は、ここで説明する方法を実現することになるルール、ステップ、命令、コンピュータ可読コード、または他の論理の任意のセットである。データストア438はさらに、トレーニング命令442を含んでもよい。トレーニング命令442は、変換モデル422、またはインテントデータ420をスキルデータ424に変換するために使用される任意の他の変換モデルのトレーニングを引き起こすステップまたは命令の任意のセットである。データストア438はさらに、スキルボット情報444を含んでもよい。スキルボット情報444は、チャットボット、スキルまたはインテントに対応する任意のデータを含んでもよい。例えば、スキルボット情報444は、子チャットボット436A~436N、それらのチャットボットに対応するスキル、ならびに/またはそれらのスキルおよびチャットボットに関連付けられるインテントに関する情報を含んでもよい。データストア438は、図4に示されるものを含む、これまでに議論されたデータ処理システム400内のエンティティのうちのいずれにでも結合される。
【0107】
例示的多因子モデリングの実施形態
図5は、ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。具体的には、図5は、自然言語処理のために多因子モデリングを利用するデータ処理システムを介した入来対話の流れを示す。いくつかの実施形態では、図5に示されるコンピューティングシステムは、発話に応答するために使用されるスキルを決定するための予測プロセスの一部として利用される。例えば、コンピューティングシステムは、クライアント/顧客から入来発話406を受信し、入来発話406を処理し、および/または入来発話406に対する応答を生成するために使用されることになるスキルを選択し得る。他の実施形態では、図5に示されるコンピューティングシステムは、示される多因子モデルを改良するために、グラウンドトゥルーススキルと比較されるべきスキルを決定するためのトレーニングプロセスの一部として利用される。たとえば、図5のコンピューティングシステムによって出力される、決定されたスキルは、なんらかのトレーニングデータに含まれるグラウンドトゥルーススキルと比較されてもよく、決定されたスキルとグラウンドトゥルーススキルとの間の差は、コンピューティングシステムの構成要素を再トレーニングするために使用されてもよい。同時に、インテント分類器418によって出力される、決定されたインテントは、なんらかのトレーニングデータに含まれるグラウンドトゥルースインテントと比較されてもよく、決定されたインテントとグラウンドトゥルースインテントとの間の差は、インテント分類器418の構成要素を再トレーニングするために使用されてもよい。
【0108】
図5に示すように、図示のブロック図は、何らかの生の入来発話406からスキルデータ424を生成するためにコンピュータデバイスまたはシステムによって実現されるフローに関する。生成されたスキルデータ424は、元の入来発話406に基づくスキルスコアのセットなど、スキルを選択するために使用され得る情報を含む。たとえば、入来発話406は、ピザ屋チャットボットからのピザの注文に関連するクエリを含んでもよく、スキルデータ424は、インテント分類器418および変換モデル422によって多因子モデリング技術の結果として生成されたいくつかのスキル「スコア」を含む。
【0109】
予測プロセスを含む実施形態では、入来発話406は、クライアント/顧客に応答するために適切なスキルによって処理されるべき、クライアント/顧客エンティティによって生成された発話に関連するデータを含む。この場合、図5に示す多因子モデリング処理の目的は、入来発話406に含まれる情報を利用して、同じく入来発話406に含まれる自然言語ベースのクエリに応答するためのスキルを予測することである。予測されるスキルは、次いで、応答して、入来発話406に基づいて何らかのアクションをとり、および/または顧客/クライアントのクエリに応答するための自然言語ベースの発信応答を生成し得る。
【0110】
トレーニングプロセスを伴う実施形態では、入来発話406は、図5に示される多因子モデルを改良するために使用されることになる発話およびグラウンドトゥルーススキルに関連するデータを含む。この場合、図5に示す多因子モデリングプロセスの目的は、他の態様では予測時間中に入来発話406を処理するために使用されるであろう、入来発話に対応するスキルを予測することを試みることである。予測されるスキルは、予測されるスキルとグラウンドトゥルーススキル(多因子モデルが完璧に動作した場合に予測されるべきスキル)との間のデルタを求めるために、グラウンドトゥルーススキルと比較され得る。デルタは、インテント分類器418および/または変換モデル422などの、多因子モデルの要素を改良するために使用され得る。同時に、分類器418からの予測されるインテントは、予測されるインテントとグラウンドトゥルースインテントとの間のデルタを求めるために、グラウンドトゥルースインテントと比較され得る。デルタは、インテント分類器418などの、多因子モデルの要素を改良するために使用され得る。
【0111】
いくつかの実施形態では、スキルデータ424内のスキルの最高スコアまたは最高平均スコアを利用して、予測プロセスまたはトレーニングプロセス中に入来発話406を処理するために、予測されるスキルを選択する。入来発話406は、最初に発話変換器412において変換されて、インテント分類器418に入力される発話データ416を作成する。例えば、ピザを注文することに関連する自然言語クエリは、個々の単語、単語のグループ化、単語の文脈的詳細、および全体としての発話などを含む、新たなデータに分解される。インテント分類器418は、人工ニューラルネットワーク機械学習モデルなどのモデルを利用して、発話データ416を、各インテントについて1つ以上の「スコア」に関連するインテントデータ420に変換し得る。たとえば、生成された1つ以上のスコアは、入来発話406が1つ以上のチャットボットシステムに関連するインテントのスーパーセットからの特定のインテントに関連する確率に関連し得る。人工ニューラルネットワークを利用するインテント分類器418の例は、図7Aを参照して以下でさらに論じられる。
【0112】
結果として生じたインテントデータ420は、マスク500を含む変換モデル422に入力されるが、これは、入力として、インテントデータ420をとり、出力として、変換されたスキルデータ424のセットを生成する、変換モデルである。様々な実施形態では、マスク500は、インテントデータ420内のデータセットと結果として得られるスキルとの間の対応関係を表す、行列などのマッピングデータセットである。したがって、マスク500は、インテントデータ420に適用されて、インテント分類器418および変換モデル422の多因子モデリングに基づいて予測されるスキルを選択するためにスキル選択命令428によって解釈され得るスキルデータ424を生成する。いくつかの実施形態では、マスク500は、インテントデータ420のインテントスコアをスキルデータ424のスキルスコアにマッピングする、動的にトレーニングされた変換値アレイである。スキルデータ424は、なんらかの命令/基準に従って、入来発話406を処理するためにスキルを選択するために、利用される。いくつかの実施形態では、スキルデータ424および/または選択されたスキルは、発話変換器412、インテント分類器418、変換モデル422などの様々なモデルを再トレーニングするために使用される(すなわちトレーニングプロセス)。他の実施形態では、スキルデータ424は、顧客/クライアントクエリを解決するために、入来発話406を解析し、それに応答するために使用されるスキルを選択するために使用される(すなわち、予測プロセス)。
【0113】
より詳細には、図5に示すように、入来発話406がユーザから受信され、発話変換器412に入力される。入来発話406は、生のフォーマットであり、1つ以上の変数または特性を有し得る。たとえば、入来発話406は、ユーザから受信された1つ以上の発話(例えば、自然言語ベースのフォーマットのクエリ)に対応するパラメータXと、スーパーセット中のグラウンドトゥルースインテントを示すいくつかのラベルに対応するパラメータY(i)と、スーパーセット中のグラウンドトゥルーススキルを示すいくつかのラベルに対応するパラメータY(s)とを含み得る。たとえば、パラメータXは、1つ以上の自然言語ベースのクエリ(例えば、「I would like to order a pizza」)を含み、パラメータY(i)は、入力分類子(例えば、ピザ注文インテント、注文編集インテントなど)などの、モデルによって考慮されるインテントのセットを含み、パラメータY(s)は、図5に提示される多因子モデリング技術に基づいてスキルの1つ(例えば、ピザを注文するか、または以前のピザ注文を編集するかのいずれかであってもよい、注文スキル)が予測されることになるスキルのセットを含む。
【0114】
入来発話データは、ここで説明されるトレーニングまたは予測プロセスの一部としてスキルの予測を生成するためのパラメータとして、要素X、Y(i)、およびY(s)を含む。たとえば、1つ以上の自然言語クエリXは、入来発話406に含まれる自然言語クエリであり、インテントスーパーセットY(i)は、インテント分類器418の一部と見なされ得るすべてのインテントのセットであり、スキルスーパーセットY(s)は、多因子モデルによって出力されるスキルデータ424から予測され得るすべてのスキルのセットである。トレーニングプロセス中、Xは、グラウンドトゥルーススキルが既知であるすべての自然言語クエリであってもよい。パラメータY(i)およびY(s)は、実行されているトレーニングプロセスによって事前に定義されてもよく、予測されるスキルは、スキルY(s)のスーパーセットのうちの少なくとも1つとなり;グラウンドトゥルースインテントと予測されるインテントデータ420との間のデルタは、インテント分類器418のパラメータを更新するために使用され得;グラウンドトゥルーススキルと予測されるスキルデータ424(もし異なる場合)との間のデルタは、インテント分類器418または変換モデル422のパラメータを更新するために使用され得る。予測プロセス中、Xは、顧客/クライアントによって生成されたすべての自然言語クエリであってもよく、Y(i)およびY(s)は、発話源に基づいて選択されてもよい(例えば、ピザレストランによって実現される自動化されたデジタルアシスタントを介してチャットボットと対話する顧客/クライアントは、顧客との対話用の特定のセットのインテントおよびスキルのみを使用し得る)。
【0115】
入来発話406は、次いで、発話変換器412によって処理されて、生の対話データを、図5に示される多因子モデルによって認識可能であるか、またはより容易に可読である、発話データ416に変換する。例えば、1つ以上の自然言語クエリXは、クエリを含む単純なASCII文字データを除く任意のデータを排除するように変換されてもよい。別の例では、1つ以上の自然言語クエリXは、クエリの各個々の単語が入力ベクトル中の値であるベクトル化されたフォーマットに変換され得る。
【0116】
発話データ416は、次いで、インテント分類器418に送信されてもよく、それは、入力として発話データ416を利用して、出力としてインテントデータ420を生成することになる。インテントデータは、インテントラベルのセットについて計算されたスコアに対応するY'(i)として示される。様々な実施形態では、インテント分類器418は、発話データ416を取り込み、インテントデータ420を出力するために、人工ニューラルネットワークなどの機械学習モデルを利用する。この場合、Y'(i)は、人工ニューラルネットワークの出力ノードに関連する値またはスコアのベクトルであってもよい。いくつかの実施形態では、Y'(i)は、1つ以上の自然言語クエリXの特徴を使用して式の一部として計算されてもよい。Y'(i)を求めるための式は、以下のようであってもよく:
【0117】
【数1】
【0118】
ここで、Y'(i)は、Y(i)における各インテントに対するベクトル化されたスコアのセットを含むインテントデータ420であり、「sigmoid()」は、特徴パラメータの計算されたシグモイドを返すシグモイド関数であり、SFは、例えばハイパーパラメータチューニングによって、またはチャットボットモデルを管理するデータサイエンティストによって予め決定されるスケーリングファクタであり、distance()は、2つの値の間の相対的な数学的距離を計算する関数であり、Wは、各インテントクラスの重心を示す、モデルトレーニング中に学習される変換行列であり、transform(X)は、発話データ416からの1つ以上の自然言語ベースのクエリの、Wと比較することができるフォーマットへの変換である。
【0119】
したがって、Y(i)における各インテントに対応する値のベクトル化されたデータセットを含む計算されたインテントデータ420は、Y'(i)によって表される。これらの値は、入力発話406を処理するために予測されるスキルを決定するための多因子モデリングプロセスの一部として変換モデルを介してスキルデータ424を決定する際に使用され得る。予測プロセスを実現する実施形態では、出力インテントデータ420は、次いで、予測プロセスを継続するために変換モデル422に入力される。
【0120】
トレーニングプロセスを実現する実施形態では、インテントデータ420は、ここで説明されるスキル予測プロセスを継続するために変換モデルに入力されることがあってもよい。さらに、インテント分類器418が機械学習モデルであるときには、教師あり機械学習プロセスが生じてもよい。たとえば、入来発話406は、さらに、入力発話データ416を所与としてインテント分類器が選択する所望のインテントに対応するグラウンドトゥルースインテントを含んでもよい。1つ以上のグラウンドトゥルースインテントY(i)とY'(i)によって示されるインテントデータ420との間の差が計算され、それは、Loss(i)と称され、グラウンドトゥルースインテントの予測におけるインテント分類器の誤差の程度を示す。Y'(i)におけるベクトル化された値は、ベクトル化された値がグラウンドトゥルースインテントの重み付けされた重要度を正確に表すかどうかを判断するために、1つ以上のグラウンドトゥルースインテントと比較され得る。例えば、インテントの損失は、以下の式によって計算される:
【0121】
【数2】
【0122】
ここで、Loss(i)は、y'(i)における値とグラウンドトゥルースインテントy(i)との間の差に基づいて計算された総損失であり、w0, w1, w2, およびw3は、例えばハイパーパラメータチューニングによって、またはチャットボットモデルを管理するデータサイエンティストによって予め決定された重み値であり、cross_entropy_loss()は、グラウンドトゥルースラベルy(i)のクロスエントロピー損失、およびlogit_y'(i)によって示されるインテントデータ418のロジスティック分布を返す関数であり、mse_loss()は、グラウンドトゥルースインテントy(i)およびy'(i)中の値の平均二乗誤差損失を返す関数であり、margin_loss() は、y'(i)における値についてマージンベースの損失分類を返す関数であり、threshold_loss()は、グラウンドトゥルースインテントy(i)およびy'(i)における値の、閾値ベースの損失を返す関数である。
【0123】
いくつかの実施形態では、インテント分類器418のトレーニング中に計算された損失は、インテント分類器を再トレーニングするために使用され得る。たとえば、インテント分類器418が機械学習モデルであるとき、損失値は、計算された損失に比例してインテント分類器418のための動作のパラメータを変更するために使用され得る。インテント分類器418が人工ニューラルネットワークである場合、損失関数は、ニューラルネットワーク中のノードの重み付けされたパラメータを変更して、将来の処理中における、より正確なインテントデータ420の生成のために、モデルを改良するために、使用され得る。いくつかの実施形態では、インテント分類器418について計算された損失は、以下で説明されるように、汎用的な損失値の一部としてさらに利用される。
【0124】
インテント分類器418から出力されたインテントデータ420は、スキルデータ424を生成するために変換モデル422に入力される。変換モデルは、1つ以上のマスク500を含んでもよく、それは、インテントデータ420を変換してスキルデータ424を生成する、任意のデータ、関数、プロセス、または式である。例えば、図5に示すように、マスク500は、インテントデータ420からの1つ以上のインテントラベルを1つ以上のスキルラベルにマッピングする値の行列に対応する。例えば、7つのインテントおよび3つのスキルを認識するチャットボットシステムが与えられると、7×3の値のマスク行列が生成され、インテントをスキルにマッピングする。マスク500を利用する変換モデル422の出力は、スキルデータ424である。スキルデータはY'(s)として示される。例えば、Y'(i)からY'(s)を求める式は、
【0125】
【数3】
【0126】
であり、ここで、Y'(i)は入力されるインテントデータ420であり、Mはマスク行列である。いくつかの実施形態では、マスク行列は、Y'(i)のベクトル化されたフォーマットを伴う数学演算に許容可能なフォーマットに変換され得る。例えば、マスクは、Y'(s)のベクトル和または積を計算するために、Y'(i)のベクトル化されたフォーマットに加算されるかまたはそれで乗算されるよう、1つ以上の軸上で反転され得る。このようにして、マスク行列は、ベクトル化された出力Y'(s)を作成するために、行列の特定の行または列をY'(i)の行または列にマッピングするよう、標準行列フォーマットから変更され得る。したがって、出力Y'(s)は、1つ以上の自然言語クエリXがスキルのセットのうちのの任意のスキルに対応する確率に対応するスキル確率のベクトルとなる。
【0127】
Y'(s)のベクトル化されたフォーマットに対応するスキルは、スキル選択命令428などの、スキルデータ424に適用されるなんらかの命令に基づいて発話を処理するための最も適当なスキルとして選択され得る。例えば、スキル選択命令は、各ベクトル化されたスコアの最大スコア、最小スコア、最高和スコア、最高平均スコアなどであるY'(s)内の対応するスコア値を選択することによって生じ得る。いくつかのスキルは複数のインテントに関連付けられるので、スキルが選択される態様、またはY'(s)が生成される方法は、多数ある。いくつかの実施形態では、Y'(s)は、対応するスキルごとに最も高い相対インテント値のみを含むスキルデータ424のベクトル化されたバージョンである。以下の式は、この実施形態を示す:
【0128】
【数4】
【0129】
ここで、Y'(s)はベクトル化されたスキルデータ424であり、Mはマスク行列であり、s1~s3は発話を処理するために選択され得る、Y(s)において考えられ得るスキルに対応する3つのスコアであり、y1~y7はY(i)におけるインテントに対応する7つのスコアである。上記の式によって示されるように、インテントスコアY'(i)のベクトルは、マスク行列Mで乗算されて、スキルs1~s3に各々が対応する3行のベクトルを形成する。各ベクトル行はいくつかの値を含み得、各値は、マスク行列Mが0および1の値のみを含むため、あるインテントがインテント分類器418によって出力される入来発話406に対応する可能性を表す。これらの3つのベクトル行から、各ベクトルの最高値のみが選択され、3つの行ベクトルのうちから各スキルについて最高値に対応する値Y'(s)の最終ベクトルに配置され得る。
【0130】
例として、Y'(i)とMとの行列乗算によって生成される3つの行ベクトルのうち、各行における最高値は、3つのスキルs1~s3のうちの1つに各々が対応するy2,y4,およびy6であってもよい。その結果得られるベクトルY'(s)は、[y2, y4, y6]となる。次いで、ベクトルY'(s)を使用して、「最良の」スキルを、Y'(s)における値に基づいて予測し得る。予測されるスキルは、入来発話406を処理し、それに応答するための最良のスキルである、と予測されるスキルである。予測されるスキルを選択するための命令の一例は、ベクトルY'(s)の中で最大の値を選択することを含んでもよい。例えば、入来発話406に応答するための最良に予測されるスキルを選択する式は、以下によって与えられる:
【0131】
【数5】
【0132】
ここで、Y(best)は、Y'(s)の中から選択される最高値に基づいて選択される、予測されるスキルである。入力発話に応答するためにスキルを予測するために、多くの異なる組合せの選択およびルールが適用され得ることが理解されよう。いくつかの実施形態では、Y'(s)は、Y(s)における各考えられ得るスキルの値を含むベクトルであり、その値は、Y'(i)における各関連付けられたインテント値の平均値である。予測されるスキルは、Y'(s)におけるあるスキルの最高平均値に対応することになる。いくつかの実施形態では、Y'(s)は、Y(s)における各考えられ得るスキルの値を含むベクトルであり、その値は、Y'(i)における各関連付けられたインテント値の総和である。予測されるスキルは、Y'(s)におけるあるスキルの最高平均値に対応することになる。
【0133】
いくつかの実施形態では、スキル分類器430などの機械学習モデルは、Y'(s)を形成するための命令を適用する代わりに、スキルデータ424の入力を所与としてスキルベクトルY'(s)を選択するために利用され得る。機械学習モデルを適用してY'(s)を形成する例については、図6Aを参照して後述する。
【0134】
上記のインテント分類器418のトレーニングと同様に、トレーニングプロセス中、グラウンドトゥルーススキルY(s)と予測されるスキルY'(s)との間の差は、Loss(s)と称され、正しいスキルの予測における多因子モデリングシステムの誤差の程度を示す。入来発話406に関連付けられるグラウンドトゥルーススキルY(s)と予測されるスキルY'(s)との間の差は、Loss(s)と称され、アクションのために利用する正しいスキルを予測する際の変換モデルの誤差の程度を示す。スキルの損失は、以下の式によって計算され、
【0135】
【数6】
【0136】
ここで、y(s)はグラウンドトゥルーススキルであり、y'(s)は予測されるスキルである。この式は、予測されるスキルとグラウンドトゥルーススキルとの間の差がLoss(s)を求めるために適用されることを除いて、上記のLoss(i)についての式と同様である。種々の実施形態では、Loss(i)は、インテントスコア付けおよびスキル予測の両方における損失を説明するスキル予測の総損失を形成するよう、Loss(s)と組み合わせられてもよい。計算されたLoss(i)およびLoss(s)を用いて、データ処理システムの総損失は、以下のように計算され、
【0137】
【数7】
【0138】
ここで、lambdaは、計算されたインテントの損失に適用する正則化率を表すスカラーである。様々な実施形態によれば、データ処理システムは、Loss(total)値をトレーニングフォーマットに正規化し、その値をトレーニングモデルに入力することによって多因子モデルの任意の局面を変更し得る。例えば、トレーニングテキストデータの解析中に計算されたLoss(total)は、正規化され、変換モデル422および/またはマスク500を変更して、既知のインテントを既知のスキルにより良くマッピングするために、使用される。
【0139】
Loss(I), Loss(s), Loss(total) またはそれらの損失のどのような組み合わせにかかわらず、計算された損失は、図5に示される多因子モデルの要素を再トレーニングするために使用されてもよい。インテント分類器が機械学習モデルであるいくつかの実施形態では、機械学習モデルは、発話データ416をインテントデータ420に変換するための動作の1つ以上のパラメータを含む。たとえば、インテント分類器は、発話データ416などの入力をインテントデータ420などの出力に変換するための1つ以上のノードおよびノードパラメータを含む人工ニューラルネットワーク機械学習モデルであり得る。この実施形態は、図7Aを参照して以下に示される。
【0140】
インテント分類器418の一部として利用される機械学習モデルのパラメータは、上で定義された計算された損失に比例して変更されてもよい。たとえば、人工ニューラルネットワークの特定のノードのパラメータは、計算された損失に比例して再重み付けされてもよい。具体的には、機械学習モデルを改良するために、グラウンドトゥルースインテント/スキルに関連付けられる特定のノードに対応するパラメータを損失に比例して増加させてもよく、予測されるインテント/スキルに関連付けられる特定のノードを損失に比例して減少させてもよい。
【0141】
いくつかの実施形態では、マスク500の値は、計算された損失に基づいて変更されてもよい。例えば、マスク500は、0と1との間の値を含んでもよく、それらの値は、計算された損失に基づいて変更されてもよい。例えば、予測されるスキルに対応するマスク500の値は、損失に比例して減少させてもよく、または、グラウンドトゥルーススキルに対応するマスク500の値は、損失に比例して増加させてもよい。
【0142】
図6Aは、ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。具体的には、図6Aは、多因子モデリングシステムの一部としてスキル分類器430を含む、図5に示されるデータ処理システムの構成要素の代替構成を示す。スキル分類器430は、発話データ416を受信するときの単因子モデルと、変換モデル422からスキルデータ424を受信するときの多因子モデルの一部との両方として実現され得る。
【0143】
上述のように、単因子モデリングは、入来発話に応答するためにスキルを予測するための効率的な方法であるが、多因子モデルと同じ精度でスキルを予測しない。図6Aに示されるように、発話データは、入力発話406を処理するための予測されるスキルに対応する予測データ610を生成するために、単一要因モデル、すなわち、スキル分類器430において使用されてもよい。予測データ610はスキル分類器430によって発話データ416の直接入力を使用して生成されるので、スキルは、図5に示す多因子モデリングよりも迅速に予測され得る。しかしながら、スキル分類器430によって実行される単因子モデリングは、インテント分類器418および変換モデル422によって実行される文脈的多因子モデリングほど正確ではない。
【0144】
トレーニング段階中、単因子モデリングプロセスを改善するためにスキル分類器430を再トレーニングするよう、単因子モデリングプロセスおよび多因子モデリングプロセスが実行される。例えば、入来発話データ406は、図5を参照して説明されるように、多因子モデリングを受けてもよい。いくつかの実施形態では、図6Aに示すように、マスク600は、インテントデータ420に適用されてスキルデータ424を形成する行列マスクの代わりに、単一ベクトルマスクである。例えば、ベクトル化されたインテントデータの各要素は、ベクトルマスク600内の対応する要素によって乗算されてもよく、結果として生じる積値は、Y'(I→S)によって表されるベクトル化されたスキルデータに挿入されることになる。
【0145】
値のベクトルY'(I→S)が計算されると、そのベクトルは、多因子モデリングプロセスの一部として予測されるスキルを計算するために使用される。いくつかの実施形態では、ルールのセットがベクトルY'(I→S)に適用されて、図5を参照して説明した実施形態と同様に、予測されるスキルを決定する。いくつかの実施形態では、ベクトルY'(I→S)は、スキル分類器430に入力されて、予測されるスキルを出力する。たとえば、スキル分類器430は、入力発話データ416を予測データ610に変換する(単因子モデリング)ための1つのモデルと、(多因子モデリングプロセスの一部として)スキル値のベクトルを予測データ610に変換するための別のモデルとを含む、1つ以上のスキル予測モデルを含み得る。入力発話データ416およびスキルデータ424は異なるタイプの入力であるが、予測データ610の一部としての予測されるスキルの出力は同じであり、したがって、単因子モデリングプロセスの出力は、多因子モデリングプロセスの出力と比較され得る。
【0146】
上述のように、同じ入来発話406の単因子モデリングおよび多因子モデリングによって予測されるスキルは、単因子予測の速度を保持しながら精度を高めるよう、単因子モデルを改良するために使用され得る。予測されるスキルは、各別個のプロセスについて予測されるスキルの間の差を判断するよう比較され得る。この差は、単因子モデル、この場合はスキル分類器430を再トレーニングするために使用される損失関数または差を識別するために使用される。様々な実施形態において、トレーニングの複数の反復が図5図6A、および図6Bを参照して説明されたシステムに適用される場合に、コスト関数を使用し得る。例えば、トレーニングの各反復について複数の損失関数が計算され、コスト関数を求めるために使用されてもよい。損失関数/コスト関数は、モデルを再トレーニングするために使用されてもよい。
【0147】
ここで説明されるように、単因子モデリングプロセスによって生成される予測データ610は、発話データ416がスキル分類器に直接入力されるときに単因子モデリングを通して生成される導出された予測データ610と比較すると、より文脈的に正確なインテントデータおよびトレーニング可能な変換モデルの使用により、より正確であることになる。しかしながら、単因子モデリングは、スキルが多因子モデリングの様々なステップなしに予測され得るという点で、より時間効率的である。したがって、多因子モデリングと単因子モデリングとの間の出力の差を使用してスキル分類器430などの単因子モデルをトレーニングして、チャットボットシステムの単因子モデリング能力を改善することは、有用である。
【0148】
例として、「I ordered a pizza and it wasn't cooked so it was terrible(私はピザを注文したが、それは焼けておらず、ひどかった)」という発話が受信される。チャットボットには、ピザ注文スキルおよび顧客サービススキルの2つのスキルが利用される。スキル分類器などのトレーニングの乏しい単因子モデルは、顧客サービスが発話を処理するのに正しいスキルである場合に、単に、発話における「ordered(注文した)」および「pizza(ピザ)」という語に基づいてピザ注文のスキルを選択するかもしれない。多因子モデリングを用いる、より細かい文脈分析は、正しいスキルを選択する可能性が高くなる。例えば、顧客サービススキルは、不満足な顧客コメントに関するインテントを含んでもよい。このインテントは、「ordered(注文した)」 「pizza(ピザ)」、ならびに「wasn't cooked(焼けていなかった)」および 「was terrible(ひどかった)」という語により、その発話と高度に相関される。このインテントはまた、その発話が過去時制で書かれ、おそらく顧客サービスに対応するという事実など、その発話に特有のコンテキストを決定し得る。この例では、多因子モデリングプロセスは、単因子モデリングプロセスに対して正しい予測されるスキルを提供する。スキル予測間の差は、スキル分類器を再トレーニングするために使用されてもよく、例えば、「order(注文)」および 「pizza(ピザ)」という語とピザ注文スキルとの間の相関を重み付けするスキル分類器430内のパラメータを減少させてもよく、「wasn't(...なかった)」および 「terrible(ひどい)」という語と顧客サービススキルとの間の相関を重み付けするパラメータを増加させてもよい。
【0149】
したがって、入力発話データ416が単因子モデリングプロセスの一部であるとき、予測されるスキル間の結果として生じる損失/差は、スキル分類器430を再トレーニングして、より文脈的に正確な予測データ610を提供するために、使用される。したがって、図6Aに示されるブロック図は、予測段階中にスキル分類器430を効率的にトレーニングおよび利用し得る、ハイブリッド文脈的モデルを示す。上述のように、予測段階(または「展開段階」)は、ここで説明されるモデリング技術を含むチャットボットが、実際のクライアント/顧客と対話し、顧客/クライアントによって利用される自動化されたデジタルアシスタントとの通信の一部としてチャットボットシステムに送信される実際の自然言語クエリを解決するために使用される段階である。この段階の間、モデルは、顧客/クライアントのニーズを処理し、それに応答するために、効果的に「展開」される。トレーニング段階は、モデルを再トレーニングするために予測を利用し得るが、予測段階中に使用される予測は、現実世界の顧客/クライアントに応答するために使用されることになる。クライアント体験は、クエリが迅速に解決されるときおよび正確に解決されるときの両方で改善される。したがって、スキル分類器430などの文脈的によくトレーニングされた単因子モデルは、予測段階中においてチャットボットのための有用な資産である。顧客/クライアントによって出されるクエリが非常に複雑であるか、または単因子モデルが充分にトレーニングされない、いくつかの場合においては、多因子モデルは、要求を処理し、時間ベースの効率性を犠牲にして文脈的精度を高めるようクエリを取り扱うためにスキルを予測するよう、利用され得る。例えば、非常に複雑な自然言語クエリが受信される場合があり、発話変換器は、発話データ416への変換中に、発話内の言語が、スキル分類器が正確な予測を提供するには複雑すぎる可能性がある、と判断し得る。それに応答して、発話変換器は、発話データ416をインテント分類器418に送信して、多因子モデリングプロセスを開始し得る。
【0150】
図6Bは、ある実施形態による、変換モデルを実現するコンピューティングシステムの簡略化ブロック図である。図6Bに示すように、マスク620は、より文脈的に正確なスキルデータ424のセットを提供した後に、スキルがスキルデータ424から予測される、マスク610よりも複雑なマスクである。図6Bに示されるように、マスクは、ブール代数、すなわち0および1、ではない値を含み得る。たとえば、マスク620は、ここで説明する方法に従ってトレーニング入力に従って頻繁に変換される倍数または浮動小数点数などのトレーニング変更値に対応する値を含み得る。マスク620のこれらの値は、インテントデータ420の、スキルデータ424への、より正確な変換に影響を及ぼすように、より微調整され得る。上述のように、マスク620は、インテントデータ420内のインテントスコアをスキルのセット内の対応するスキルにマッピングする値を含む。場合によっては、インテントは、予測されるスキルを判断するときに他のインテントと同じ重みを保持しなくてもよい。例えば、「プロモーションオファー」インテントは、「ピザ注文」インテントよりもはるかに少なく使用され得る。その結果、マスク620内において、プロモーションオファーインテントとスキルとの間の対応関係を表す値は、ピザ注文インテントとスキルとの間の対応関係を表す値よりもはるかに低くてもよい。
【0151】
図7Aは、いくつかの実施形態による、人工ニューラルネットワークとして構成されるインテント分類器の簡略化ブロック図である。具体的には、図7Aは、人工ニューラルネットワークを利用して、入力として発話ベクトルをとり、1つ以上のインテントスコアを出力するように構成される、インテント分類器418の例示的実施形態を示す。ここで説明されるように、発話ベクトル700は、発話変換器412から導出される発話データ416の一形態であり、インテントスコア740(A)~740(N)は、インテント分類器418によって出力されるインテントデータ420またはコンテキストデータセットの一形態である。
【0152】
図7Aに示すように、発話ベクトル700は、1つ以上のベクトルデータ701(A)~701(N)のセットを含む。ベクトルデータは、発話/自然言語ベースのクエリから導出され、インテント分類器418への入力として許容可能なフォーマットである任意のデータを含み得る。ベクトルデータ701は、例えば、個々の単語、単語のグループ化、文脈、フォント、句読点、環境、顧客、または顧客/クライアントから受信した発話に関連する任意の他のデータを含んでもよい。発話ベクトル700は、インテント分類器418の人工ニューラルネットワーク内の入力ノード710(A)~710(N)のセットにマッピングされる。これらの入力ノード710の各々は、各入力が人工ニューラルネットワークの初期段で与えられる相対重みを決定するノードパラメータ/重みを含むノードである。
【0153】
入力ノード710(A)~710(N)は、1つ以上のエッジを介して人工ニューラルネットワークの追加層にマッピングされる。たとえば、入力ノード710(A)~710(N)から発するいくつかのエッジは、対応するノードパラメータ/重み値を各々が有し得る、隠れ層の追加のノードにつながる。たとえば、図7Aに示すように、入力ノード710(A)~710(N)は、人工ニューラルネットワークの隠れ層720(A)にマッピングされる。人工ニューラルネットワークは、各連続層内のノードの1対1エッジ関係またはその中のエッジの任意のサブセットを含むネットワークであることが理解されよう。
【0154】
入力ノード710(A)~710(N)から渡された値は、ニューラルネットワークを進むために複数の隠れ層720(A)~720(N)を通って連続的に渡される。ノードパラメータ/重み、および場合によってはノード間のエッジの重みは、1つ以上の機械学習トレーニング方法に従って変更されることが理解されよう。隠れ層720(N)が前の隠れ層からのデータを処理すると、そのデータは1つ以上の出力ノード730(A)~730(N)に渡される。出力ノード730(A)~730(N)は、人工ニューラルネットワークの結果として生成される、チャットボットのインテントなどの、考えられ得るコンテキストサブクラスの1つ以上の最終値に対応し得る。したがって、インテント分類器418の人工ニューラルネットワークは、入力発話ベクトル700が、発話を処理し、それに応答するための特定のインテントに対応する確率に関連する、1つ以上の確率スコアを生成し得る。これらの確率は、出力ノード730(A)~730(N)から導出されるインテントスコア740(A)~740(N)によって表される。スキルを選択するためのインテントスコアの使用は、図9に関して以下でさらに調査される。
【0155】
図7Bは、いくつかの実施形態による、人工ニューラルネットワークとして構成されるスキル分類器の簡略化ブロック図である。具体的には、図7Bは、人工ニューラルネットワークを利用して、入力として発話ベクトルをとり、単因子モデリングの一部として、予測されるスキルを出力するよう構成された、スキル分類器430の例示的な実施形態を示す。
【0156】
図7Bは、いくつかの実施形態による、人工ニューラルネットワークとして構成されるスキル分類器430の簡略化ブロック図である。具体的には、図7Bは、人工ニューラルネットワークを利用して、入力として発話ベクトルをとり、発話を処理するために予測されるスキルを出力するよう構成された、スキル分類器430の例示的な実施形態を示す。たとえば、スキル分類器430は、インテント分類器418が発話ベクトルを取り込む態様と同様の発話ベクトル700を取り込むことができる。スキル分類器430はまた、いくつかの入力ノード750(A)~750(N)と、ニューラルネットワークを通じて進むいくつかの隠れ層760(A)~760(N)とを含み得る。ノードパラメータ/重み、および場合によってはノード間のエッジの重みは、1つ以上の機械学習トレーニング方法に従って変更されることが理解されよう。次いで、最終隠れ層760(N)は、そこに含まれる値をスコアセレクタ770に送ってもよい。スコアセレクタ770は、1つ以上のスコア選択基準と隠れ層760(N)から受信された値とを利用して、スキル分類器によって出力されることになる、予測されるスキル780を決定し得る。例えば、スコアセレクタ770は、予測されるスキル780が選択され得るいくつかの考えられ得るスキルに関する1つ以上のスコア値を受信してもよく、予測されるスキル780を選択するために最高スコアが選択されることを指定する基準を利用し得る。
【0157】
図8は、様々な実施形態による、発話に応答するために変換モデルを使用してコンテキストクラスを決定するためのプロセスフローを示す図を示す。図8に示す処理は、それぞれのシステムの1つ以上の処理ユニット(たとえば、プロセッサ、コア)によって実行されるソフトウェア(たとえば、コード、命令、プログラム)、ハードウェア、またはそれらの組合せで実現される。ソフトウェアは、非一時的記憶媒体上(例えば、メモリデバイス上)に記憶される。図8に提示され、以下に記載される方法は、例示的であり、非限定的であることが意図される。図8は、特定のシーケンスまたは順序で発生する様々な処理ステップを示すが、これは限定することを意図するものではない。特定の代替実施形態では、それらのステップはなんらかの異なる順序で実行されるか、またはいくつかのステップが並行して実行されてもよい。種々の実施形態では、プロセス800で詳述されるステップは、図1図7Bに関してここで議論されるシステムおよびモデルによって実行される。
【0158】
プロセス800は、1つ以上の自然言語クエリを含む発話データのセットが受信されると、810で開始する。例えば、発話データは、入来発話406の一部として受信され、データ処理システム400の通信ポータル402において受信される。入来発話406を受信した後、データ処理システムは、データを処理し、発話を処理および解決するために、スキルを予測するために、1つ以上のコンテキストモデルへの入力用に、発話を準備する。いくつかの実施形態では、発話データは、発話が、チャットボットモデルおよび/または分類器モデルのためのトレーニング段階の一部として処理されて、将来の予測段階のためにモデルを精緻化することを示し得る。いくつかの実施形態では、発話データは、発話が、顧客またはクライアントによって利用されている自動化されたデジタルアシスタントからのものであり、したがって、予測段階中に顧客/クライアントクエリに応答するために、発話に対応するスキルの予測を提供するために使用されるべきであることを示し得る。種々の実施形態では、発話は、受信に応答して、発話変換器412等のデータ変換器によって変換されて、データを、インテント分類器418等の分類器への入力のための、発話ベクトル700等の発話ベクトルに変換する。
【0159】
820において、発話データに対する1つ以上のインテントが決定される。1つ以上のインテントは、発話に対する応答を処理および生成するために使用され得るか、または発話に対する応答を処理および生成するために使用されることになる予測可能なスキルと関連付けられる、考えられ得るインテントである。いくつかの実施形態では、受信された発話は、発話を解決するためのスキル/インテントのセットを示す特定のチャットボットまたは関心領域を判断するために、データ処理システム400の特定の部分に送信されるか、またはそれに関連付けられたメタデータを有する。メタデータは、発話データのインテントを判断するために使用され得る。例えば、発話は、ピザ配送会社のウェブサイトのポータルの一部として動作し、したがって、ピザ注文および関連の問合せを扱うようにトレーニングされたチャットボットが発話を処理するために使用されるべきであることを示す、自動化されたデジタルアシスタントから受信されている場合がある。そのチャットボットは、スキルおよびインテントのセットに関連付けられ、それらのインテントは、チャットボットが選択されると決定されることになる。いくつかの実施形態では、ステップ820において、データ処理システム400に既知のすべての考えられ得るインテントのスーパーセットが選択される。
【0160】
830において、発話データが1つ以上のインテントに対応する確率に関連付けられる1つ以上のインテント分類データセットが、インテント分類器モデルを使用して生成される。具体的には、820において決定されたインテントのセットは、決定されたインテントに対応する特定の機械学習モデル(図7Aに示される人工ニューラルネットワーク等)を選択するために使用される。たとえば、820において決定されたインテントのセットはすべてピザ配送発話に対応することになり、また、ピザ配送ベースのクエリを解決するための多因子モデルの一部としてインテント分類器モデルを利用するチャットボットに対応することになる。
【0161】
人工ニューラルネットワークを実現する実施形態では、特定のインテント分類器モデルは、1つ以上の出力インテント分類データセットを生成するプロセスを開始するために、入力ノード710(A)~710(N)などの入力ノードのセットにマッピングされることになる発話から導出されるベクトル化された発話データを入力として受け取ることになるノードを含む。インテント分類器から出力されるインテント分類データセットは、820で決定された1つ以上のインテントのうちの特定のインテントに発話が対応する確率のセットに対応する、インテントスコア740(A)~740(N)などの、「スコア」のセットである。これは、図4に示すようなインテントデータ420を出力するためのインテント分類器418への発話データ416の入力と同様である。したがって、インテント分類器モデルから導出された出力コンテキストデータセットは、特定のインテントが解決されるべき発話に最も密接に対応する尤度を示す。
【0162】
840において、マスクモデルを使用して、1つ以上のスキルに対応する1つ以上の変換されたデータセットが生成される。具体的には、マスクモデルは、マスクモデル内のデータに基づいて1つ以上の変換されたデータセットを生成するために、830において生成された出力インテント分類データセットに適用される。これは、図4に示すようなスキルデータを出力するための変換モデル422へのインテントデータ420の入力と同様である。マスクモデルは、例えば、インテント分類データセットのベクトル化されたバージョンに数学的に適用可能なベクトルであってもよい。ベクトル化されたインテント分類データへのそのようなマスク行列の数学的適用は、ベクトル化された、変換されたデータセットをもたらすことになる。生成された、変換されたデータセットは、820で決定されたインテントに対応する1つ以上のスキルクラスに関連する相対スコアまたはメトリックに対応し得る。例えば、1つ以上の変換されたデータセットは、スキル選択命令430等のスキル選択命令を使用して発話に応答するためにスキルを予測するために使用されることになるインテント分類データセットの変換に基づいて、各スキルに対する統合されたスコアを含んでもよい。適用されるマスクは、インテントに対応するコンテキスト値を、マスク500などの、スキルに対応する関連付けられた変換された値にマッピングするためのマップ値を含み得る。
【0163】
850において、発話データのセットを処理するためのスキルが、1つ以上の変換されたデータセットに基づいて決定される。決定されたスキルは、810で受信された発話データを処理し、それに応答するために使用される。例えば、スキルデータ424に類似する、変換されたデータセットは、発話データを処理するために、予測されるスキルを決定するために、スキル選択命令428のセットに従って、またはスキル分類器430によって、処理される。いくつかの実施形態では、値比較に対応する選択基準は、スキル選択命令428に従って実行される。いくつかの実施形態では、スキル分類器430の一部として動作するモデル等の機械学習モデルは、入力として、変換されたデータセットをとり、発話データを処理し、それに応答するために予測されるスキルを選択するために使用されることになる、スキルスコアのセットを出力し得る。コンテキストスキルクラスの選択の例は、図9を参照して以下で与えられる。
【0164】
860において、決定されたスキルは、発話データのセットを処理して1つ以上の自然言語クエリを解決するために使用される。例えば、850において決定されたスキルは、自然言語クエリを解決するために、発話データの処理に基づいて応答を処理および生成し、ならびに/または応答アクションを実行するために、使用される。
【0165】
様々な実施形態では、プロセス800は、チャットボットモデルのトレーニング段階の一部として実行される。例えば、損失関数または値が、ここに記載の方法に従って、トレーニング段階中に計算される。様々な実施形態において、計算されたスキルラベルの損失およびインテントラベルの損失に基づいて、総損失が計算される。様々な追加の実施形態では、総損失は正規化され、変換モデルに入力されて変換モデルを変更する。様々な追加の実施形態では、問い合わせテキストデータは、変更された変換モデルによって処理および変換される。様々な実施形態において、変換モデルが変更される前および変更された後のスキルクラスの決定は、変換モデルをさらにトレーニングするためにさらに比較および/または使用される。
【0166】
様々な実施形態において、プロセス800は、チャットボットモデルの予測段階の一部として実行される。例えば、スキル分類器は、チャットボットが予測動作のために顧客に利用可能にされる時までに、ここで説明される方法を使用して適切にトレーニングされない場合がある。この場合、予測時に受信された発話データは、自然言語ベースのクエリに応答するためにスキルの正確な予測を増大させるために、最初にインテント分類器によって処理され得、スキルが選択される前に変換マスクが適用される。いくつかの実施形態では、発話データの直接入力を使用して発話を処理するためにコンテキストスキルクラスが選択され、導出された変換されたデータセットからの相対値が信頼度閾値を満たさないかまたは超えない場合、発話は、インテント分類器およびマスク変換を含むプロセス800を使用して予測時間に再処理される。
【0167】
図9は、いくつかの実施形態によるインテント分類技術によるスキルボットの例示的な選択の簡略ブロック図である。具体的には、図9は、図7Aに示される実施形態に従って、および図8に説明されるプロセスに従って生成されるもののような、インテントサブクラスの出力スコアに基づいて、自然言語ベースのクエリを処理するために、スキルを選択するためのフローを示す。
【0168】
インテント900(A)~900(G)は、あるインテントがある発話に対応するという導出された確率を表すコンテキストデータセット、例えば、図7Aに示される出力インテントスコア740(A)~740(N)に対応し得る。各インテントは、異なる能力または処理コンテキストに対応する。例えば、図9に示すように、各インテント900(A)~900(G)は、ピザの注文、ピザ屋の顧客レビューなどの、異なるインテントタスクに対応する。各インテント900は、インテントスコアの統合されたセット910に示されるようなインテントスコアに対応する。インテントスコアは、ある発話があるインテントに対応する確率を表すコンテキストデータセットの一部である。例えば、処理される発話は、「I ordered a pizza and it never showed up.(私はピザを注文したが、それは決してやってこなかった。)」であってもよい。
【0169】
インテントスコア910は、マスク920に従って変換されて、発話データを処理するためにスキルを選択するために使用されることになる、変換されたデータセットを生成する。例えば、インテントスコア920は行列形式で示され、マスクは、対応するスキルスコアを生成するためにインテントスコア910で乗算される行列形式で示されている。マスクが適用される態様、およびスキルが対応して選択される態様は、スキル選択命令428の一部であるスコアセレクタ930サブシステムによって決定される。例えば、スコアセレクタ930は、各スキルのスキルスコア940を生成するために、インテントスコア910がマスク920によって乗算されるべきであるという命令を含んでもよい。スコアセレクタ930はさらに、スキルスコア940のうち最も高いスキルスコア940が、発話を処理するためにスキル950を選択するために使用されるべきであることを示し得る。
【0170】
スキル950(A)~950(C)は、スキルスコア940に基づいて、なんらかのスコアセレクタ930基準に従って選択されるスキルである。スキル950の各々は、インテント900(A)~900(G)のサブセットに関連付けられる。図9に示すように、スキルスコア940のうち最も高いスコアは、「フィードバックスキル」950(B)に対応する。このスキルは、「顧客サービス」900(E)に対するインテントを含み、発話「I ordered a pizza and it never showed up.」を処理し、それに応答するための適切なスキルである。
【0171】
例示的なシステム
図10は、分散型システム1000の簡略図を示す。図示される例において、分散型システム1000は、1つ以上の通信ネットワーク1010を介してサーバ1012に結合された1つ以上のクライアントコンピューティングデバイス1002、1004、1006、および1008を含む。クライアントコンピューティングデバイス1002、1004、1006、および1008は、1つ以上のアプリケーションを実行するように構成される。
【0172】
さまざまな例において、サーバ1012は、本開示に記載される1つ以上の実施形態を可能にする1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合される。ある例では、サーバ1012はまた、非仮想環境および仮想環境を含み得る他のサービスまたはソフトウェアアプリケーションを提供し得る。いくつかの例では、これらのサービスは、クライアントコンピューティングデバイス1002、1004、1006および/または1008のユーザに対して、サービスとしてのソフトウェア(Software as a Service:SaaS)モデル下のように、ウェブベースのサービスまたはクラウドサービスとして提供される。クライアントコンピューティングデバイス1002、1004、1006および/または1008を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ1012とやり取りすることで、これらのコンポーネントによって提供されるサービスを利用し得る。
【0173】
図10に示される構成では、サーバ1012は、サーバ1012によって実行される機能を実現する1つ以上のコンポーネント1018、1020および1022を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはそれらの組合わせによって実行され得るソフトウェアコンポーネントを含み得る。分散型システム1000とは異なる多種多様なシステム構成が可能であることが認識されるはずである。したがって、図10に示される例は、例のシステムを実現するための分散型システムの一例であり、限定するよう意図されたものではない。
【0174】
ユーザは、クライアントコンピューティングデバイス1002、1004、1006および/または1008を用いて、1つ以上のアプリケーション、モデルまたはチャットボットを実行し、それは、1つ以上のイベントまたはモデルを生成してもよく、それは次いで本開示の教示に従って実現または処理されてもよい。クライアントデバイスは、当該クライアントデバイスのユーザが当該クライアントデバイスと対話することを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介してユーザに情報を出力してもよい。図10は4つのクライアントコンピューティングデバイスだけを示しているが、任意の数のクライアントコンピューティングデバイスがサポートされる。
【0175】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどの、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種モバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイス付き/無しのMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなど)を含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であり、各種通信プロトコルを使用してもよい。
【0176】
ネットワーク1010は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであり、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に一例として、ネットワーク1010は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)1002.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせである。
【0177】
サーバ1012は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成される。サーバ1012は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化される論理記憶装置の1つ以上のフレキシブルプールなどである。様々な例において、サーバ1012を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合させる。
【0178】
サーバ1012内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市販されているサーバオペレーティングシステムを実行し得る。また、サーバ1012は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市販されているものを含むが、それらに限定されない。
【0179】
いくつかの実現例において、サーバ1012は、クライアントコンピューティングデバイス1002、1004、1006および1008のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されない。サーバ1012は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1002、1004、1006および1008の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
【0180】
分散型システム1000はまた、1つ以上のデータリポジトリ1014、1016を含み得る。特定の例において、これらのデータリポジトリを用いてデータおよびその他の情報を格納する。たとえば、データリポジトリ1014、1016のうちの1つ以上を用いて、様々な実施形態による様々な機能を実行するときにチャットボット性能またはサーバ1012によって使用されるチャットボットによる使用のための生成されたモデルに関連する情報のような情報を格納する。データリポジトリ1014、1016は、さまざまな場所に存在し得る。たとえば、サーバ1012が使用するデータリポジトリは、サーバ1012のローカル位置にあり、またはサーバ1012から遠隔の位置にあり、ネットワークベースの接続または専用接続を介してサーバ1012と通信する。データリポジトリ1014、1016は、異なる種類である。特定の例において、サーバ1012が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)および他の製造業者が提供するデータベースのようなリレーショナルデータベースである。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするように適合させる。
【0181】
特定の例では、データリポジトリ1014、1016のうちの1つ以上は、アプリケーションデータを格納するためにアプリケーションによって用いられてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものである。
【0182】
特定の例において、本開示に記載される機能は、クラウド環境を介してサービスとして提供され得る。図11は、特定の例に係る、各種サービスをクラウドサービスとして提供するクラウドベースのシステム環境の簡略化されたブロック図である。図11に示される例において、クラウドインフラストラクチャシステム1102は、ユーザが1つ以上のクライアントコンピューティングデバイス1104、1106および1108を用いて要求し得る1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1102は、サーバ612に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム1102内のコンピュータは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして編成される。
【0183】
ネットワーク1110は、クライアント1104、1106、および1108と、クラウドインフラストラクチャシステム1102との間におけるデータの通信および交換を容易にし得る。ネットワーク1110は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類である。ネットワーク1110は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートし得る。
【0184】
図11に示される例は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの例において、クラウドインフラストラクチャシステム1102が、図11に示されるものよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、異なる構成または配置のコンポーネントを有していてもよいことが、理解されるはずである。たとえば、図11は3つのクライアントコンピューティングデバイスを示しているが、代替例においては、任意の数のクライアントコンピューティングデバイスがサポートされる。
【0185】
クラウドサービスという用語は一般に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム1102)により、インターネット等の通信ネットワークを介してオンデマンドでユーザにとって利用可能にされるサービスを指すのに使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストし得るとともに、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介してオンデマンドでアプリケーションをオーダーして使用し得る。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Java(登録商標)クラウドサービスなどのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
【0186】
特定の例において、クラウドインフラストラクチャシステム1102は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルなどのさまざまなモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1102は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【0187】
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム1102がホストするオンデマンドアプリケーションに顧客がアクセスできるようにし得る。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションなどを含むがこれらに限定されない。
【0188】
IaaSモデルは一般に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
【0189】
PaaSモデルは一般に、顧客が、環境リソースを調達、構築、または管理しなくても、アプリケーションおよびサービスを開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスなどを含むがこれらに限定されない。
【0190】
クラウドサービスは一般に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム1102が提供する1つ以上のサービスをオーダーしてもよい。次いで、クラウドインフラストラクチャシステム1102は、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。例えば、ユーザは、発話を用いて、クラウドインフラストラクチャシステムに、上記のように特定のアクション(例えばインテント)をとらせ、および/または本明細書で説明するようにチャットボットシステムのためのサービスを提供させるように要求することができる。クラウドインフラストラクチャシステム1102を、1つのクラウドサービスまたは複数のクラウドサービスであっても提供するように構成する。
【0191】
クラウドインフラストラクチャシステム1102は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム1102は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人または企業である。ある他の例では、プライベートクラウドモデル下において、クラウドインフラストラクチャシステム1102がある組織内で(たとえば企業組織内で)機能し、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部などの企業のさまざまな部署であり、企業内の個人であってもよい。ある他の例では、コミュニティクラウドモデル下において、クラウドインフラストラクチャシステム1102および提供されるサービスは、関連コミュニティ内のさまざまな組織で共有される。上記モデルの混成モデルなどのその他各種モデルが用いられてもよい。
【0192】
クライアントコンピューティングデバイス1104、1106、および1108は、異なるタイプであってもよく(たとえば図10に示されるクライアントコンピューティングデバイス1002、1004、1006および1008)、1つ以上のクライアントアプリケーションを操作可能である。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム1102が提供するサービスを要求することなど、クラウドインフラストラクチャシステム1102とのやり取りを行い得る。例えば、ユーザは、本開示に記載されているように、クライアントデバイスを使用してチャットボットから情報またはアクションを要求することができる。
【0193】
いくつかの例において、クラウドインフラストラクチャシステム1102が、サービスを提供するために実行する処理は、モデルトレーニングおよび展開を含み得る。この解析は、データセットを使用し、解析し、処理することにより、1つ以上のモデルをトレーニングおよび展開することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行される。たとえば、チャットボットシステムのために1つ以上のモデルを生成およびトレーニングするために、ビッグデータ解析がクラウドインフラストラクチャシステム1102によって実行される。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたデータもしくは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
【0194】
図11の例に示されるように、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステム1102が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース1130を含み得る。インフラストラクチャリソース1130は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。特定の例では、アプリケーションから要求されたストレージを処理するために利用可能なストレージ仮想マシンは、クラウドインフラストラクチャシステム1102の一部である。他の例では、ストレージ仮想マシンは、異なるシステムの一部である。
【0195】
特定の例において、異なる顧客に対しクラウドインフラストラクチャシステム1102が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースのセットまたはリソースモジュール(「ポッド」とも処される)にまとめる。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の例において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングする。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングし、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングする。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有する。
【0196】
クラウドインフラストラクチャシステム1102自体が、クラウドインフラストラクチャシステム1102の異なるコンポーネントによって共有されるとともにクラウドインフラストラクチャシステム1102によるサービスのプロビジョニングを容易にするサービス1132を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性、バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【0197】
クラウドインフラストラクチャシステム1102は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはそれらの組み合わせで実現される。図11に示されるように、サブシステムは、クラウドインフラストラクチャシステム1102のユーザまたは顧客がクラウドインフラストラクチャシステム1102とやり取りすることを可能にするユーザインターフェイスサブシステム1112を含み得る。ユーザインターフェイスサブシステム1112は、ウェブインターフェイス1114、クラウドインフラストラクチャシステム1102が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス1116、およびその他のインターフェイス1118などの、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用いて、クラウドインフラストラクチャシステム1102がインターフェイス1114、1116、および1118のうちの1つ以上を用いて提供する1つ以上のサービスを要求(サービス要求1134)してもよい。たとえば、顧客は、オンラインストアにアクセスし、クラウドインフラストラクチャシステム1102が提供するクラウドサービスをブラウズし、クラウドインフラストラクチャシステム1102が提供するとともに顧客が申し込むことを所望する1つ以上のサービスについてサブスクリプションオーダーを行い得る。このサービス要求は、顧客と、顧客が申しむことを所望する1つ以上のサービスを識別する情報を含んでいてもよい。たとえば、顧客は、クラウドインフラストラクチャシステム1102によって提供されるサービスの申し込み注文を出すことができる。注文の一部として、顧客は、サービスが提供されるチャットボットシステムを識別する情報と、任意選択でチャットボットシステムの1つ以上の資格情報を提供することができる。
【0198】
図11に示される例のような特定の例において、クラウドインフラストラクチャシステム1102は、新しいオーダーを処理するように構成されたオーダー管理サブシステム(order management subsystem:OMS)1120を含み得る。この処理の一部として、OMS1120は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成される。
【0199】
適切に妥当性確認がなされると、OMS1120は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)1124を呼び出し得る。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS1124を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成される。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定される。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【0200】
特定の例では、セットアップ段階処理は、上記のように、クラウドインフラストラクチャシステム1102によって、プロビジョニングプロセスの一部として実行される。クラウドインフラシステム1102は、アプリケーションIDを生成し、クラウドインフラシステム1102自体によって提供されるストレージ仮想マシンの中から、またはクラウドインフラシステム1102以外の他のシステムによって提供されるストレージ仮想マシンから、アプリケーション用のストレージ仮想マシンを選択することができる。
【0201】
クラウドインフラストラクチャシステム1102は、要求されたサービスがいつ使用できるようになるかを示すために、応答または通知1144を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信する。特定の例では、サービスを要求する顧客に対して、応答は、クラウドインフラストラクチャシステム1102によって生成されたチャットボットシステムID、およびチャットボットシステムIDに対応するチャットボットシステムのためにクラウドインフラストラクチャシステム1102によって選択されたチャットボットシステムを識別する情報を含み得る。
【0202】
クラウドインフラストラクチャシステム1102はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム1102は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する役割を果たす。また、クラウドインフラストラクチャシステム1102は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集される。この使用情報を用いて顧客に課金する。課金はたとえば月ごとに行われる。
【0203】
クラウドインフラストラクチャシステム1102は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム1102は、場合によっては著作権情報を含む、これらの顧客についての情報を格納してもよい。特定の例において、クラウドインフラストラクチャシステム1102は、顧客の情報を管理するとともに管理される情報を分離することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされないようにするように構成された、アイデンティティ管理サブシステム(IMS)1128を含む。IMS1128は、情報アクセス管理などのアイデンティティサービス、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスなどの、各種セキュリティ関連サービスを提供するように構成される。
【0204】
図12は、コンピュータシステム1200の例を示す。いくつかの例では、コンピュータシステム1200は、分散環境内の任意のデジタルアシスタントまたはチャットボットシステムのいずれか、ならびに上記の様々なサーバおよびコンピュータシステムを実現するために用いられる。図12に示されるように、コンピュータシステム1200は、バスサブシステム1202を介して他のいくつかのサブシステムと通信する処理サブシステム1204を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218、および通信サブシステム1224を含み得る。ストレージサブシステム1218は、記憶媒体1222およびシステムメモリ1210を含む非一時的なコンピュータ可読記憶媒体を含み得る。
【0205】
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替例は複数のバスを利用してもよい。バスサブシステム1202は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかである。たとえば、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造されるメザニンバスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスなどを含み得る。
【0206】
処理サブシステム1204は、コンピュータシステム1200の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム1200の処理リソースを、1つ以上の処理ユニット1232、1234などに組織する。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの例において、処理サブシステム1204は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの例では、処理サブシステム1204の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用して実現される。
【0207】
いくつかの例において、処理サブシステム1204内の処理ユニットは、システムメモリ1210またはコンピュータ可読記憶媒体1222に格納された命令を実行し得る。さまざまな例において、処理ユニットはさまざまなプログラムまたはコード命令を実行するとともに、同時に実行する複数のプログラムまたはプロセスを維持し得る。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ1210および/または潜在的に1つ以上の記憶装置を含むコンピュータ可読記憶媒体1222に常駐する。適切なプログラミングを介して、処理サブシステム1204は、上述のさまざまな機能を提供し得る。コンピュータシステム1200が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットが各仮想マシンに割り当てられる。
【0208】
特定の例において、コンピュータシステム1200によって実行される全体的な処理を加速するように、カスタマイズされた処理を実行するために、または処理サブシステム1204によって実行される処理の一部をオフロードするために、処理加速ユニット1206を任意に設けることができる。
【0209】
I/Oサブシステム1208は、コンピュータシステム1200に情報を入力するための、および/またはコンピュータシステム1200から、もしくはコンピュータシステム1200を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム1200に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
【0210】
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【0211】
一般に、出力デバイスという語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、計画デバイス、タッチスクリーンなどである。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されない。
【0212】
ストレージサブシステム1218は、コンピュータシステム1200によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1218は、いくつかの例の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ可読記憶媒体を提供する。処理サブシステム1204によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム1218に格納されてもよい。ソフトウェアは、処理サブシステム1204の1つ以上の処理ユニットによって実行される。ストレージサブシステム1218はまた、本開示の教示に従って認証を提供してもよい。
【0213】
ストレージサブシステム1218は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図12に示すように、ストレージサブシステム1218は、システムメモリ1210およびコンピュータ可読記憶媒体1222を含む。システムメモリ1210は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読取り専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実現例において、起動中などにコンピュータシステム1200内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム1204によって現在操作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例において、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
【0214】
一例として、限定を伴うことなく、図12に示されるように、システムメモリ1210は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216を、ロードしてもよい。一例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、市販されているさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows Phone、Android(登録商標)OS、BlackBerry(登録商標)OS、Palm(登録商標)OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【0215】
コンピュータ可読記憶媒体1222は、いくつかの例の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ可読記憶媒体1222は、コンピュータシステム1200のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム1204によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1218に格納される。一例として、コンピュータ可読記憶媒体1222は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ可読記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されない。コンピュータ可読記憶媒体1222は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
【0216】
特定の例において、ストレージサブシステム1218は、コンピュータ可読記憶媒体1222にさらに接続可能なコンピュータ可読記憶媒体リーダ1220も含み得る。リーダ1220は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【0217】
特定の例において、コンピュータシステム1200は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム1200は、1つ以上の仮想マシンを実行するためのサポートを提供し得る。特定の例において、コンピュータシステム1200は、仮想マシンの構成および管理を容易にするハイパーバイザなどのプログラムを実行し得る。各仮想マシンには、メモリ、演算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられる。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的には、コンピュータシステム1200によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じであり得るかまたは異なるそれ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム1200によって同時に実行され得る。
【0218】
通信サブシステム1224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1224は、他のシステムとコンピュータシステム1200との間のデータの送受のためのインターフェイスとして機能する。たとえば、通信サブシステム1224は、コンピュータシステム1200が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にし得る。例えば、コンピュータシステム1200が、図1に示されるボットシステム120を実現するために使用される場合、通信サブシステムは、アプリケーション用に選択されたチャットボットシステムと通信するために使用される。
【0219】
通信サブシステム1224は、有線および/または無線通信プロトコルの両方をサポートし得る。ある例において、通信サブシステム1224は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの例において、通信サブシステム1224は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet(登録商標))を提供し得る。
【0220】
通信サブシステム1224は、さまざまな形式でデータを受信および送信し得る。いくつかの例において、通信サブシステム1224は、他の形式に加えて、構造化データフィードおよび/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230などの形式で入力通信を受信してもよい。たとえば、通信サブシステム1224は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード1226を受信(または送信)するように構成される。
【0221】
特定の例において、通信サブシステム1224は、連続データストリームの形式でデータを受信するように構成され、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であるリアルタイムイベントのイベントストリーム1228および/またはイベントアップデート1230を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【0222】
通信サブシステム1224は、コンピュータシステム1200からのデータを他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230などのような各種異なる形式で、コンピュータシステム1200に結合された1つ以上のストリーミングデータソースコンピュータと通信する1つ以上のデータベースに、伝えられる。
【0223】
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのうちの1つである。コンピュータおよびネットワークの性質が常に変化しているため、図12に示されるコンピュータシステム1200の記載は、具体的な例として意図されているに過ぎない。図12に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、さまざまな例を実現するための他の態様および/または方法があることが認識されるはずである。
【0224】
特定の例について説明したが、さまざまな変形、変更、代替構成、および均等物が可能である。例は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作させることができる。さらに、例を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行される。加えて、動作の順序を再指定される。プロセスは図に含まれない追加のステップを有し得る。上記の例の各種特徴および局面は、個別に、またはともに、使用される。
【0225】
さらに、特定の例をハードウェアとソフトウェアとの特定の組み合わせを用いて説明してきたが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の例は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現される。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現される。
【0226】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行するように電子回路を設計することにより、動作を実行するようにプログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば、非一時的なメモリ媒体に格納されたコードもしくは命令またはそれらの任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどにより、達成される。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【0227】
本開示では具体的な詳細を示すことにより例が十分に理解されるようにしている。しかしながら、例はこれらの具体的な詳細がなくとも実施される。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技術は、例が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な例のみを提供し、他の例の範囲、適用可能性、または構成を限定するよう意図されたものではない。むしろ、例の上記説明は、各種例を実現することを可能にする説明を当業者に提供する。要素の機能および構成の範囲内でさまざまな変更がなされる。
【0228】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされることは明らかであろう。このように、具体的な例を説明してきたが、これらは限定を意図するものではない。さまざまな変形例および同等例は添付の特許請求の範囲内にある。
【0229】
上記の明細書では、本開示の局面についてその具体的な例を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられる。さらに、例は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用される。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。
【0230】
上記の説明では、例示の目的で、方法を特定の順序で記載した。代替の例では、方法は記載された順序とは異なる順序で実行されることを理解されたい。また、上記の方法は、ハードウェアコンポーネントによって実行されるか、または、マシン実行可能命令であって、用いられると、そのような命令でプログラムされた汎用もしくは専用のプロセッサまたは論理回路などのマシンに方法を実行させるマシン実行可能命令のシーケンスで具体化されることも理解されたい。これらのマシン実行可能命令は、CD-ROMもしくは他の種類の光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光学カード、フラッシュメモリのような、1つ以上の機械可読媒体、または電子命令を記憶するのに適した他の種類の機械可読媒体に保存できる。代替的に、これらの方法は、ハードウェアとソフトウェアとの組み合わせによって実行される。
【0231】
構成要素が特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、特定の動作を実行するよう電子回路もしくは他のハードウェアを設計すること、特定の動作を実行するようプログラミング可能な電子回路(たとえばマイクロプロセッサもしくは他の好適な電子回路)をプログラミングすること、またはそれらの任意の組み合わせによって達成される。
【0232】
本願の説明のための例をここに詳細に記載したが、本発明の概念は、他の態様で様々に具現化および採用されること、および特許請求の範囲は、先行技術によって制限される場合を除き、そのような変形を含むように解釈されるよう意図されることを理解されたい。
図1
図2
図3
図4
図5
図6A
図6B
図7A
図7B
図8
図9
図10
図11
図12
【国際調査報告】