(57)【特許請求の範囲】
【請求項１】
複数のタスクカテゴリの各々に対する、人間によって生成される複数の要求を収集して、ユーザ要求の訓練データベースを作成するステップと、
前記ユーザ要求内の異なる各単語に２進値を割り当てることによって、前記訓練データベース内の各ユーザ要求から訓練特徴ベクトルを抽出して、各タスクカテゴリに対する複数の訓練特徴ベクトルを有する訓練データセットを形成するステップと、
前記訓練データセット内の前記訓練特徴ベクトルを処理して、各タスクカテゴリに対するタスク分類器モデルを決定するステップと、
ユーザからさらなる要求を受信するステップであって、前記さらなる要求が前記タスクカテゴリのうちの１つに分類可能である、受信するステップと、
機械において、前記さらなる要求から抽出される特徴ベクトルを、前記タスク分類器モデルと比較して、前記さらなる要求の予測タスクカテゴリを決定するステップと、
前記機械において、前記さらなる要求内の単語を、前記予測タスクカテゴリに関連付けられている少なくとも１つのクエリクラスの可能な値の辞書と比較して、当該クエリクラスをインスタンス化した少なくとも１つのクエリについて、前記さらなる要求内の一致する単語を識別するステップと、
を含む、機械実施方法。
【請求項２】
前記一致する単語を使用して前記さらなる要求にサービスするステップをさらに含む、請求項１に記載の機械実施方法。
【請求項３】
複数のタスクカテゴリの各々に対する、人間によって生成される複数の要求を収集して、ユーザ要求の訓練データベースを作成するステップと、
前記ユーザ要求内の異なる各単語に２進値を割り当てることによって、前記訓練データベース内の各ユーザ要求から訓練特徴ベクトルを抽出して、各タスクカテゴリに対する複数の訓練特徴ベクトルを有する訓練データセットを形成するステップと、
前記訓練データセット内の前記訓練特徴ベクトルを処理して、各タスクカテゴリに対するタスク分類器モデルを決定するステップと、
ユーザからさらなる要求を受信するステップであって、前記さらなる要求が前記タスクカテゴリのうちの１つに分類可能である、受信するステップと、
機械において、前記さらなる要求から抽出される特徴ベクトルを、前記タスク分類器モデルと比較して、前記さらなる要求の予測タスクカテゴリを決定するステップと、
前記予測タスクカテゴリが、そのタスクカテゴリを完了するために外部コンテンツプロバイダを必要とするか否か、又は、前記予測タスクカテゴリを前記ユーザのポータブルデバイスによって実施することができるか否かを判定するステップと、
前記予測タスクカテゴリがそのタスクカテゴリを完了するために前記外部コンテンツプロバイダを必要とするという判定に応答して、前記外部コンテンツプロバイダのためのアプリケーションプログラムインターフェースを呼び出すステップと、
前記予測タスクカテゴリを前記ポータブルデバイスによって実施することができるという判定に応答して、前記ポータブルデバイス上のプログラムのためのアプリケーションプログラムインターフェースを呼び出すステップと
を含む、機械実施方法。
【請求項４】
前記ポータブルデバイスは携帯電話を含む、請求項３に記載の機械実施方法。
【請求項５】
前記さらなる要求は自然言語要求を含み、前記方法は、
前記自然言語要求をテキスト入力に変換するステップと、
前記テキスト入力から前記特徴ベクトルを抽出するステップと
をさらに含む、請求項１に記載の機械実施方法。
【請求項６】
前記訓練データセットを処理して、タスク分類器モデルを決定するステップは、前記訓練データセットに機械学習アルゴリズムを適用するステップを含む、請求項１に記載の機械実施方法。
【請求項７】
前記機械学習アルゴリズムは、サポートベクターマシン訓練アルゴリズムを含む、請求項６に記載の機械実施方法。
【請求項８】
前記機械学習アルゴリズムは、ナイーブベイズアルゴリズムを含む、請求項６に記載の機械実施方法。
【請求項９】
前記タスクカテゴリは、レストラン検索タスクカテゴリ、電話タスクカテゴリ、電子メールタスクカテゴリ、及び交通タスクカテゴリを含む、請求項１に記載の機械実施方法。
【請求項１０】
複数のタスクカテゴリの各々に対する複数のユーザ要求から特徴ベクトルを、前記ユーザ要求の各々の異なる各単語に２進値を割り当てることによって抽出するように構成されている機械学習訓練モジュールであって、前記特徴ベクトルを処理して、前記タスクカテゴリの各々に対するタスク分類器モデルを生成するようにさらに構成されている、機械学習訓練モジュールと、
前記タスクカテゴリのうちの１つに対応する第１のユーザ要求から第１の特徴ベクトルを抽出し、前記第１の特徴ベクトルを、前記タスク分類器モデルと比較して、前記第１のユーザ要求に対応するタスクカテゴリを予測するように構成されているタスク分類器モジュールと、
前記第１のユーザ要求を、予測タスクカテゴリに関連付けられている少なくとも１つのクエリクラスの可能な値の辞書と比較して、当該クエリクラスをインスタンス化した少なくとも１つのクエリについて、前記第１のユーザ要求内の一致する単語を識別するように構成されているクエリ抽出モジュールと、
前記予測タスクカテゴリを解析して、前記予測タスクカテゴリが、そのタスクカテゴリを完了するために外部コンテンツプロバイダを必要とするか否か、又は、前記予測タスクカテゴリを前記ユーザのポータブルデバイスによって実施することができるか否かを判定するように構成されているタスク実行モジュールと、
前記予測タスクカテゴリがそのタスクカテゴリを完了するために前記外部コンテンツプロバイダを必要とするという判定に応答して、前記識別された単語を用いて、前記外部コンテンツプロバイダのためのアプリケーションプログラムインターフェースを呼び出すように構成されているタスク実行モジュールと
を備える、システム。
【請求項１１】
前記タスク実行モジュールが、前記予測タスクカテゴリを前記ユーザのポータブルデバイスによって実施することができるという判定に応答して、前記識別された単語を用いて、前記ユーザのポータブルデバイスのためのアプリケーションプログラムインターフェースを呼び出すようにさらに構成されている、請求項１０に記載のシステム。
【請求項１２】
前記予測タスクカテゴリは、レストラン検索タスクカテゴリ、電話タスクカテゴリ、電子メールタスクカテゴリ、及び交通タスクカテゴリを含む、請求項１０に記載のシステム。
【請求項１３】
前記機械学習訓練モジュールは、サポートベクターマシン訓練アルゴリズムを使用して前記タスク分類器モデルを開発するように構成されている、請求項１０に記載のシステム。
【請求項１４】
前記機械学習訓練モジュールは、ナイーブベイズアルゴリズムを使用して前記タスク分類器モデルを開発するように構成されている、請求項１０に記載のシステム。
【請求項１５】
自然言語入力を、前記第１のユーザ要求を含むテキスト入力に変換するように構成されている自然言語−テキスト変換器モジュールをさらに備える、請求項１０に記載のシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
[0001]本出願は、その内容全体が本明細書に組み込まれる、２０１３年１１月２７日に出願された米国仮特許出願第６１／９０９，９９２号の利益を主張する。
【技術分野】
【０００２】
[0002]本開示は、一般的にパーソナルアシスタントアプリケーション（ｐｅｒｓｏｎａｌ  ａｓｓｉｓｔａｎｔ  ａｐｐｌｉｃａｔｉｏｎ）に関し、より詳細には、機械学習に基づくユーザ要求の処理に関する。
【背景】
【０００３】
[0003]ユーザのテキスト又は自然言語の要求に、対応するタスクを実行することによって応答する様々なパーソナルアシスタントソフトウェアアプリケーションが開発されている。たとえば、スマートフォンユーザによってアクセスされるパーソナルアシスタントアプリケーションは、電話番号検索を行って電話をかけ、レストランを検索し、電子メールを作成して送信し、カレンダー入力を行う、などすることができる。それに関連して、特定のユーザは、所与のタスクを求める要求について、他のユーザの表現とは異なる表現をすることが多い。そのような変化は、人間の対話に関して特有のものである。この表現の変動性に起因して、従来のパーソナルアシスタントソフトウェアアプリケーションは、一般的に、ユーザの所望の要求を適切に実行することに関してエラーを起こしやすい。その上、結果もたらされるアプリケーションは、その場しのぎのものになる傾向にあり、したがって、異なる言語に適用することが困難である。
【０００４】
[0004]したがって、ユーザによって所望されるタスクを分類及び実行することに関して、より良好な精度を有する言語非依存の改善されたシステムが、当該技術分野において必要とされている。
【概要】
【０００５】
[0005]タスク分類及び実行に関して精度を改善することを可能にするために、タスク分類に機械学習アルゴリズムを利用するシステム及び方法が提供される。様々なユーザから、複数のタスクカテゴリ内でユーザがどのように要求を表現したかに関連する訓練データベースが生成される。十分に多数のユーザを調査することによって、個々のユーザが所与の所望のタスクをどのように表現するかの自然な変動を、適切にサンプリングすることができる。たとえば、ユーザの母親のような特定の相手に電話するタスクに関して、或るユーザは、そのタスクを「ママに電話して（ｃａｌｌ  ｍｏｍ）」と表現する場合があれば、一方で別のユーザはそのタスクを「ママに電話してください（ｐｌｅａｓｅ  ｃａｌｌ  ｍｏｍ）」又は「母に電話して（ｃａｌｌ  ｍｏｔｈｅｒ）」と表現する場合がある。所与のタスクが異なるユーザによってどのように表現されるかに関するこれらの変動を特性化するために、たとえば、クラウドソーシングを通じて相対的に大規模な訓練データベースを生成することができる。結果もたらされる訓練データベースは、複数のタスクカテゴリからの特定のタスクの要求に関する数千のユーザの応答を含むことができる。ユーザが特定のタスクを意図していたことは事前に分かっているため、結果もたらされるユーザ要求は、その分類に関して曖昧さがない。したがって、訓練データベースは、すべてが適切なタスクカテゴリに編成されている、様々なユーザ要求の多数の例を有し得る。
【０００６】
[0006]そのような高品質の訓練データベースは、その後、様々な機械学習アルゴリズムによって利用することができる。たとえば各データベースユーザ要求は、特徴ベクトル又は他の数学的表現に変換することができる。したがって、訓練データベースは、各タスクカテゴリの様々な特徴ベクトルを含むことになり、各特徴ベクトルは、所与の訓練データベースユーザ要求に対応する。各特徴ベクトルの次元性は、所望の複雑度に応じて決まる。たとえば、所与のユーザ要求内の各固有の単語（又は語句）が、特徴ベクトル次元に対応することができる。各特徴ベクトル次元に対する重みは、対応する単語又は語句が対応するユーザ要求内に何回現れるかに応じて決まり得る。代替的に、重みは、所与の単語又は語句がユーザ要求内に存在したか否かのみに応じて重み付けが決まるような、２値であってもよい。結果もたらされる特徴ベクトルは、その後、各タスクの様々なユーザ要求が特徴ベクトル空間においてどのようにクラスタ化されるかのタスク分類器モデルを決定するために、サポートベクターマシンのような機械学習アルゴリズムを訓練するのに使用することができる。
【０００７】
[0007]タスク分類器モデルを開発するための様々なタスクに関する人間によって生成される要求の高品質の訓練データベースに対するこの先験的な機械学習を所与として、その後、タスク分類器モデルに従って、さらなるユーザ要求をリアルタイムでロバストに分類することができる。言い換えれば、受信されるユーザ要求が容易にテキストに変換され（自然言語入力の場合）、対応するテキストが特徴ベクトルに変換され、所定のタスク分類器モデルに従って予測されるタスクカテゴリに分類され得る。このプロセスは、タスク分類の精度を増大させるだけでなく、言語非依存でもある、つまり、ユーザ要求を対応する言語において適合させるためにこのプロセスを拡張するためには、他の言語における訓練データベースを収集するだけでよい。
【０００８】
[0008]タスク実行の精度を増大させるために、ユーザ要求は、その特定のクエリ（存在する場合）を判定するために予測タスクの識別情報に基づいてさらに処理することができる。これに関連して、各タスクカテゴリは、様々なクエリカテゴリと関連付けることができる。たとえば、ユーザ要求が「レストラン検索」タスクカテゴリに分類されていると仮定する。このタスク分類は、「レストランのタイプ」（たとえばイタリアン又は中華）及び「レストランの場所」（たとえば、パロアルト）のような様々なクエリタイプと関連付けることができる。所与のユーザ要求におけるクエリクラスのインスタンス化を、本明細書では「クエリ」として示す。たとえば、「パロアルトの良いイタリアンレストランを探して」のユーザ要求が処理されて、料理クエリ（イタリアン）及び場所クエリ（パロアルト）が抽出され得る。クエリ抽出の精度を増大させるために、クエリクラス及び対応する可能性のあるクエリの辞書を開発することができる。たとえば、辞書は、場所クエリカテゴリ内の各可能性のある場所に関するエントリを含むことができる。このとき、クエリ抽出は、ユーザ要求内の一致する辞書エントリを識別することを含むことができ、この辞書エントリはその後、辞書内の対応するクエリクラスと容易に関連付けられる。
【０００９】
[0009]タスク実行モジュールが、適切なアプリケーションプログラミングインターフェース（ＡＰＩ）を呼び出すことによって、予測タスク及び任意の関連するクエリを使用することができる。たとえば、レストラン検索タスクは、レストラン検索のサービスを提供している「Ｙｅｌｐ」のような外部検索プロバイダを使用して最良に実施され得る。他方、予測タスクが通話開始である場合、関連するクエリは、ユーザのポータブルデバイス内の携帯電話機能のＡＰＩを通じて送信されることになる。
【００１０】
[0010]本明細書に開示されているシステム及び方法のさらなる特徴及び利点は、以下の詳細な説明を通じてより良好に諒解され得る。
【図面の簡単な説明】
【００１１】
【図１】本開示の一実施形態による、ユーザ要求を実行するためのシステムのブロック図である。
【図２】ユーザ要求がタスク分類された後のユーザ要求からのクエリ抽出を示す図である。
【図３】図１のシステムのタスク分類モジュールのより詳細なブロック図である。
【図４】図３のタスク分類モジュールによって使用されるタスク分類器モデルを作成するためのモジュールを示す図である。
【図５】図１のシステムのクエリ抽出モジュールのより詳細なブロック図である。
【図６】図１のシステムのタスク実行モジュールのより詳細なブロック図である。
【図７】本開示の一実施形態による、ユーザ要求を実行するように構成されているコンピュータシステムを示す図である。  [0018]本発明の実施形態及びその実施形態の利点は、以下の詳細な説明を参照することによって最良に理解される。１つ又は複数の図面に示されている同様の要素を識別するために、同様の参照符号が使用されることが諒解されるべきである。
【発明を実施するための形態】
【００１２】
[0019]下記に記載する詳細な説明は、添付の図面とともに、様々な構成の説明として意図されており、本明細書に記載されている概念を実践することができる唯一の構成を表すようには意図されていない。詳細な説明は、様々な概念の完全な理解を提供することを目的とした、特定の詳細を含む。しかしながら、これらの概念は、これらの特定の詳細なしに実施されることができることが当業者には諒解されよう。いくつかの事例において、そのような概念を曖昧にしないために、既知の構造及び構成要素がブロック図形式で示されている。
【００１３】
[0020]パーソナルアシスタントアプリケーションによるユーザ要求の実行の精度をより高くすることを可能にするために、タスクセットに関する以前に記録されたユーザ要求の訓練データベースに対する機械学習アルゴリズムを通じて、タスク分類器が訓練される。たとえば、クラウドソーシングを使用して、いくつかのタスクに関する人間によって生成される要求を含む訓練データベースを生成することができる。それに関連して、特定のユーザは、所与のタスクを求める要求について、他のユーザの表現とは異なる表現をすることが多い。そのような変化は、人間の対話に関して特有のものである。この表現の変動性に起因して、従来のパーソナルアシスタントソフトウェアアプリケーションは、多くの場合、ユーザの所望の要求を適切に実行することに関してエラーを起こしやすい。時間をかけて、そのような従来のパーソナルアシスタントアプリケーションは、適切なタスクが実行されるようにユーザによって訂正されることによって、当該アプリケーションの誤りから学習することができる。しかし、そのような経時的な学習は、ユーザにとって非常に苛立たしく、それによって、ユーザは、ユーザの意図を実行することに関して不可避の誤りを訂正するのに必要な時間を費やすよりも、パーソナルアシスタントアプリケーションを使用することをやめる可能性がある。
【００１４】
[0021]打って変わって、本明細書に開示されているシステム及び方法は、訓練データベースに関して訓練されるタスク分類器を使用して、ユーザが正確な結果を達成するために訓練のハードルを克服する必要がないように、ユーザ要求に対する対応するタスクを予測する。加えて、その後、識別されたタスクを利用して、ユーザ要求からクエリ及び対応するクエリカテゴリ又はクラスを抽出することができる。本明細書において使用される場合、ユーザ要求からのクエリの抽出に関する「クエリ」という用語は、所与のタスクの特定のパラメータを指す。タスクに基づいて、これらの特定のパラメータは、クラスに編成することができる。たとえば、レストラン検索は一般的に、ユーザが所望する料理のタイプ及び所望の場所を識別する。料理のタイプ及び所望の場所は各々、クエリクラスを含む。このとき、「クエリ」は、各クエリクラスの特定のインスタンス化を含むことになる。たとえば、「パロアルトのイタリアンレストランを探して」のユーザ要求は、料理のタイプの「イタリアン」、及び、所望の場所の「パロアルト」のクエリを有することになる。このクエリ抽出の精度は、予測タスクに応答して実施されることによって大きく増進されることに留意されたい。クエリ抽出に関連して、各タスクカテゴリは、可能性のあるクエリ及びそれらのクエリの対応するクエリカテゴリの辞書と関連付けることができる。ユーザ要求が特定の予測タスクに分類されると、ユーザ要求は、そのタスクの対応する辞書と比較されて、任意のクエリ及び対応するクエリクラスの一致が識別され得る。
【００１５】
[0022]その後、タスク実行モジュールが、予測タスク及び対応するクエリの識別情報を使用して、ユーザ要求を実行することができる。たとえば、タスク実行モジュールは、予測タスクを使用して、クエリを対応するアプリケーションプログラミングインターフェース（ＡＰＩ）に送信することができる。ＡＰＩが選択されるか否かにかかわらず、結果としてのタスク実行は、従来の手法と比較して顕著に正確である。ここで、いくつかの例示的な実施形態を説明する。
【例示的な実施形態】
【００１６】
[0023]ここで図面を参照すると、図１は、自然言語入力１１０を通じて受信されるようなユーザ要求を実行するための例示的なシステム１００を示す。システム１００は、自然言語入力１１０によって表されるようなユーザ要求を処理して、ユーザによって所望される対応するタスクを予測するように機能する。システム１００は、ユーザ要求を、可能性のあるタスクカテゴリのセットから選択されるような所与のタスクに対応するように分類するように、容易に構成される。システム１００によってサービスされ得る可能性のあるタスクのセットのサイズは、本明細書においてさらに説明されるように、設計上の選択に過ぎない。したがってシステム１００は容易にスケーリング可能であるため、これは特に有利である。その上、本明細書においてさらに説明されるように、システム１００はまた、英語に加えて他の言語に容易に適合される。
【００１７】
[0024]自然言語入力−テキスト変換器モジュール１２０が、ユーザの自然言語入力１１０をテキスト入力１３０に変換する。代替的に、ユーザは、（発話される）自然言語入力１１０を提供するのとは対照的に、テキスト入力１３０を直に提供してもよい。タスク分類器モジュール１４０が、テキスト入力１３０を処理して、本明細書においてさらに説明されるように、ユーザについて所望されるタスクを予測する。タスク分類器モジュール１４０によって判定されるような予測タスクに基づいて、クエリ抽出器モジュール１５０が、テキスト入力１３０を処理して、クエリ及び対応するクエリクラスを抽出する。例示的なクエリ抽出２２０が図２に示されている。この事例においては、「パロアルトの良いイタリアンレストランを探して」のユーザ要求が、図１のタスク分類器モジュール１４０によってレストラン検索タスクに分類されている。レストラン検索タスクは、２つのクエリクラス、すなわち、レストランのタイプ、及びまた、場所を含む。システム１００のクエリ抽出器１５０が、ユーザ要求を解析して、各クエリクラスのインスタンス化を識別する。言い換えれば、クエリ抽出器１５０が、各クエリクラスの対応するクエリを識別する。図２の例において、結果もたらされるクエリ２２０は、イタリアンレストラン及びパロアルトである。再び図１を参照すると、タスク実行インターフェースモジュール１６０が、予測タスクを使用して、タスク実行モジュール１７０におけるＡＰＩのような適切なタスク実行インターフェースについて選択する。
【００１８】
[0025]ここで、システム１００の様々なモジュールの動作をより詳細に説明する。タスク分類器モジュール１４０の拡大ブロック図を図３に示す。モジュール１４０内の特徴抽出器モジュール３１０が、テキスト入力１３０を処理して特徴ベクトル３２０を抽出する。この抽出は、また、図４の訓練データセット４００に対しても実施される。訓練データセット４００は、様々なタスクカテゴリ又は分類にわたる多くの以前に収集されたユーザ要求を含む。図４の実施形態においては、３２個のタスク分類がある。各タスクに対するユーザ要求は、整数を含み得る同じタスクＩＤを割り当てられる。たとえば、訓練データセット４００は、以下の表１内のタスクに及び得る。
【表１】
0006440732.tif 000002
【００１９】
[0026]代替的な実施形態について、タスクカテゴリの数は容易に変更され得ることが諒解されよう。訓練データセット４００は、クラウドソーシング、既存の訓練データの他の自然言語への翻訳、ウェブサイト巡回、又は他の適切な方法によって生成することができる。クラウドソーシング実施形態においては、匿名の人間のユーザが、表１のタスクのような様々なタスクに対して自身の表現に関する質問に答える。ユーザは、自然言語応答などによって質問に答え、この応答はその後、入力テキストに変換されて、訓練データセット４００を形成するために特徴ベクトルが抽出され得る訓練データベースが構築され得る。特徴抽出の前の入力テキストの例示的な訓練データベースを、以下の表２に示す。
【表２】
0006440732.tif 000003
【００２０】
[0027]テキスト入力及び対応するタスクのこの例示的な訓練データベースにおいて、可能性のあるタスクカテゴリは、「レストラン検索」タスクカテゴリ及び「電話」タスクカテゴリを含むことになる。レストラン検索の例示的なテキストが「この近くで美味しいハンバーガー屋はどこか」である。訓練データベースは、人間のユーザによって生成される何千というこのような例示的なレストラン検索を含むように、容易に拡張することができる。他のタスクもまた、人間のユーザによって生成される数千の例示的なテキストによって表されてもよい。表２において、「電話」タスクは、「ママに電話して」及び「Ｊｏｅに電話して」の２つの例示的なテキストを含む。一般的に、訓練データベースに入力することができるテキストが多いほど、本明細書に開示されている機械学習アルゴリズムがそのような各例から学習するという点で、より良好な結果になる。タスクは先験的にすでに識別されているため、訓練データベース内の各データは、タスク名（タスクＩＤ）及び人間のユーザによって生成される対応するテキスト入力を含む。「交通」のような所与のカテゴリに関する訓練データセット４００内のすべてのユーザ要求は、同じタスクＩＤを与えられる。対応するユーザ要求のテキストは、特徴抽出モジュール３１０又はその等価物によって訓練特徴ベクトルに変換される。一実施形態において、訓練データセット４００内の異なる各単語は、２進値によって表される特徴に対応する。テキスト入力が特定の単語を有する場合、この単語の特徴に対応する２進値は１に設定される。加えて、異なる各Ｎグラム、すなわち、ユーザ要求内のＮ個の単語から構成される語句も、２進値を割り当てられ得る。したがって、訓練特徴ベクトルの結果もたらされる特徴ベクトル空間は、Ｍ個の次元を有することになり、Ｍは、訓練データセット４００に見られるすべての異なる単語及びＮグラムの合計に等しい。一実施形態においては、結果生じる複雑度を低くするために、個々の単語に加えてのバイグラム（２つの連続した単語）のみが、個々の特徴に割り当てられる。単語出現頻度−逆出現頻度（ＴＦ−ＩＤＦ）のような、他の重み付け方式が、訓練特徴ベクトルを作成するのに使用されてもよいことに留意されたい。たとえば、図４の訓練データセット４００の訓練特徴ベクトルは、そのベクトルの様々な次元について非整数の係数を有する。
【００２１】
[0028]訓練データセット４００の訓練特徴ベクトルを考慮して、テキスト入力１３０に使用することができる特徴（個々の単語及びＮグラム）の辞書を形成することができる。再び図３を参照すると、特徴抽出器モジュール３１０が、訓練データセット４００の訓練特徴ベクトルを構築するのに使用された任意の特徴（個々の単語及び任意の適用可能なＮグラム）についてユーザのテキスト入力１３０を解析する。訓練データセット４００に現れたものと一致しない単語及びＮグラムは、無視することができる。一実施形態において、テキスト入力１３０内の一致する各特徴は、１の２値重みを与えられるが、そのような重み付けは上述したように変更されてもよい。結果もたらされる特徴ベクトル３２０がその後、タスク分類器サブモジュール３３０によって、訓練データセット４００から抽出されるタスク分類器モデル３４０に従って処理されて、訓練データセット４００の構築に使用されているタスクのセットから予測タスク３５０が提供される。
【００２２】
[0029]再び図４を参照すると、訓練器モジュール４１０によって実施されるものとしての機械学習アルゴリズムが、訓練データセット４００内の訓練特徴ベクトルを使用して、タスク分類器モデル３４０を生成する。サポートベクターマシン（ＳＶＭ）又はナイーブベイズ分類器のような、機械学習訓練モジュール４１０によって実装することができる種々雑多な適切な機械学習アルゴリズムがある。特定の機械学習アルゴリズムに基づいて、訓練モジュール４１０によって生成されるタスク分類器モデル３４０は、タスク分類器サブモジュール３３０が、特徴ベクトル３２０について最も可能性の高い予測タスク３５０を判定することを可能にする。これに関連して、所与のタスクに対する訓練特徴ベクトルは、様々な特徴によって生成されるベクトル空間内に集まる傾向にある。このクラスタ化に基づいて、タスク分類器サブモジュール３３０はこのとき、特徴ベクトル３２０が、訓練データセット４００を構築するのに使用されている元の訓練特徴ベクトルの一部であった場合に特徴ベクトル３２０が属することになる最も可能性の高いタスクカテゴリを判定することができる。
【００２３】
[0030]訓練特徴ベクトルに対するこの先験的な機械学習は、特徴ベクトルが単語ではなく数学的エンティティであるという点において、全体的にユーザによって発話される言語に対して非依存である。したがって、対応する訓練データセットを生成して適切なタスク分類器モデルを構築することのみによって、システム１００を他の言語に容易に拡張することができる。したがって、ユーザの所与の市場に使用される特定の言語にかかわりなく、ユーザは本明細書に開示されている正確なタスク分類を有利に享受することができる。このタスク分類は、従来のパーソナルアシスタントアプリケーションに使用されるその場しのぎの技法よりも正確であるだけでなく、結果もたらされる分類によってまた、クエリ抽出もより正確なものになる。
【００２４】
[0031]クエリ抽出器モジュール１５０が、図５により詳細に示されている。各タスクに関して、いくつかのタスクは関連するクエリを有しないことに留意されたい。たとえば、退屈タスクは、システム１００によって冗談を言われることを所望しているユーザに関連する。一実施形態において、タスク分類器モジュール１４０によるそのタスクの識別以外に、退屈タスクのさらなる分類はない。しかし、電話タスクのような他のタスクについては、これは当てはまらず、システム１００はどの相手が電話されるべきかを知る必要があるため、システム１００は、単に所与のユーザ要求が電話タスクに対応することを識別する以上のことをしなければならない。これらの追加のパラメータは、前述のように「クエリクラス」に編成される。たとえば、レストラン検索は一般的に、所望されるレストランのタイプを１つのクエリクラスとして識別する。加えて、同じレストラン検索がまた、通常、場所を別のクエリクラスとして識別する。各タスク（該当する場合）に対して様々なクエリクラスの識別情報を所与として、その後、辞書５３０が形成され得る。各辞書エントリは、クエリクラス（「タグ」として示される場合もある）と、クエリクラスの特定のインスタンス化（関連するクエリ）とのデータ対となる。
【００２５】
[0032]辞書５３０の形成に関連して、訓練データセット４００のすべての可能性のあるクエリを識別するには、任意の所与のユーザによって為され得るすべての可能性のあるユーザ入力を含む必要があり、無論こうすることは支持できないため、すべての可能性のあるクエリを識別することは期待できないことに留意されたい。システム１００と対話する可能性のあるユーザは無数にあり、そのため、訓練データセット４００は、そのような多数の可能性のあるユーザからすべての可能性のあるクエリを容易に含むことはできない。しかし、Ｗｉｋｉｐｅｄｉａのようなデータベースは、「場所」のような所与のクエリクラスに対するすべての可能性のあるクエリを識別するために容易に解析することができる。たとえば、米国又は別の所望の国の中のすべての町が、そのようなデータベースから識別されて、レストラン検索タスクのための場所タグとともに辞書５３０に入力され得る。同様に、可能性のある料理のタイプも、レストラン検索タスクのための料理タイプタグとともに辞書５３０に入力され得る。他の検索タスクのためのタグについての可能性のあるクエリも、適切なデータベースの検索を通じてインスタンス化されてもよい。たとえば、電話タスクのための「電話される相手の名前」タグが、ファーストネームを（及び、所望される場合は性も）用いてインスタンス化されてもよい。これは、可能性のあるクエリがこのように容易に予期され、辞書５３０に入力され、それによって、ユーザ要求が所与のタスクカテゴリに属すると予測されると、対応するクエリがクエリ抽出モジュール５２０によって容易に識別される点において、非常に有利である。そうするために、モジュール５２０は、テキスト入力１３０内の単語を、関連するタグ（クエリクラス）について、辞書５３０内の辞書エンティティと比較する。たとえば、再び図２を参照すると、「パロアルト」という用語は、場所タグの下で、辞書５３０に一致を有し得る。同様に、「イタリアンレストラン」という用語は、料理タイプタグの下で辞書５３０に一致を有し得る。このように、所与のテキスト入力１３０は、その関連するクエリ５００を識別するためにシステム１００によって容易に識別される。
【００２６】
[0033]図６に示すように、タスク実行インターフェースモジュール１６０は、予測タスク３５０を使用して、任意の外部コンテンツプロバイダが必要であるか否かを判定する。電話タスクのような特定のタスクは、外部コンテンツプロバイダを必要としない。他方、レストラン検索は、外部検索プロバイダを使用して実施される場合がある。したがって、タスク実行モジュール１６０は、任意の関連するクエリを、タスク実行モジュール１７０内の適切なＡＰＩにルーティングする。外部検索プロバイダを必要とするクエリは、対応するコンテンツプロバイダのＡＰＩ６２０にルーティングされる。逆に、ユーザのデバイスの内部機能を必要とするクエリは、対応する内部機能ＡＰＩ６１０にルーティングされる。
【００２７】
[0034]システム１００は、１つ若しくは複数のコンピュータを使用して実装されてもよく、又は代わりに、構成済みＦＰＧＡ若しくはＡＳＩＣ（複数可）を使用してインスタンス化されてもよい。システム１００の１つ又は複数のモジュールを実装するための適切なコンピュータシステム７００が図７に示されている。管理者は、ディスプレイ７１１、キーボード７０４、及び音響／視覚Ｉ／Ｏ７０５を使用してシステム７００を構成することができる。システム７００は、バス７０２を通じて命令のメモリ７１４に結合されている少なくとも１つのプロセッサを含む。バス７０２は、ネットワークインターフェース７０６及び通信リンク７１８を通じてインターネットのようなネットワーク７５０にも結合している。このように、図１の自然言語入力１１０のようなユーザの対話が、ネットワーク７５０からシステム７００によって容易に受信され得る。本明細書に説明されている様々なモジュールを実装するためにプロセッサ７１２によって実行される、メモリ７１４に記憶されている命令は、Ｊａｖａ又は他の適切なプログラミング言語で書かれてもよい。
【００２８】
[0035]ここで、当業者には諒解されるように、手近な特定の用途に応じて、本開示の精神及び範囲から逸脱することなく、本開示のデバイスの材料、装置、構成及び使用方法において、及び、それらに対して、多くの修正、置換及び変更を行うことができる。これに照らして、本明細書に例示及び説明されている特定の実施形態が、その実施形態のいくつかの例に過ぎず、添付の特許請求の範囲及びその機能的均等物と完全に釣り合うべきものであるため、本開示の範囲は、これらの特定の実施形態の範囲に限定されるべきではない。
【図１】
0006440732.tif 000004
【図２】
0006440732.tif 000005
【図３】
0006440732.tif 000006
【図４】
0006440732.tif 000007
【図５】
0006440732.tif 000008
【図６】
0006440732.tif 000009
【図７】
0006440732.tif 000010