(57)【特許請求の範囲】
【請求項１】
１つ以上のコンピュータを含むコンピュータシステムにより実行される方法であって、前記コンピュータシステムは、
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信するステップと、
前記入力自然言語クエリのターム、
前記データベーススキーマの列のセット、及び
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成するステップと、
１つ以上の入力表現を生成するステップであり、各入力表現は、前記トークンのシーケンスをエンコードすることにより取得される、ステップと、
複数の機械学習に基づくモデルにアクセスするステップであり、各々の機械学習に基づくモデルは、前記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、ステップと、
前記複数の機械学習に基づくモデルの各々について、前記機械学習に基づくモデルを入力表現を使用して実行して前記データベースクエリの部分を生成するステップと、
前記データベースクエリの前記生成された部分を組み合わせて前記データベースクエリを取得するステップと、
前記データベースクエリを実行して結果セットを取得するステップと、
を実行する、方法。
【請求項２】
前記入力自然言語クエリは、クライアントデバイスから受信され、当該方法は、前記結果セットを前記クライアントデバイスに送信するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記複数の機械学習に基づくモデルは、前記データベースクエリ内の集約演算子を決定する集約分類器モデルを含み、前記集約分類器モデルは、多層パーセプトロンを含む、請求項１に記載の方法。
【請求項４】
前記複数の機械学習に基づくモデルは、前記データベースクエリの結果列を決定する結果列予測器モデルを含み、前記結果列予測器モデルは、多層パーセプトロンを含む、請求項１に記載の方法。
【請求項５】
前記複数の機械学習に基づくモデルは、前記データベースクエリの条件句を決定する条件句予測器モデルを含み、前記条件句予測器モデルは、強化学習に基づく、請求項１に記載の方法。
【請求項６】
グラウンドトルースデータベースクエリに基づく結果セットを受信するステップであり、前記グラウンドトルースデータベースクエリは、前記入力自然言語クエリに対応し、かつ実行の結果としてグラウンドトルースを提供するクエリを表す、ステップと、
前記生成されたクエリから取得された結果と前記グラウンドトルースデータベースクエリから取得された結果との比較に基づいて報酬値を決定するステップと、
前記報酬値に基づいて前記条件句予測器モデルの重みを調整するステップと、
をさらに含む請求項５に記載の方法。
【請求項７】
前記シーケンスの各トークンに対応する列エンコーディングを決定するステップと、
前記シーケンスの各トークンについてのスコアのベクトルを決定するステップと、
前記ベクトルをソフトマックス関数を使用して正規化するステップと、
前記入力表現を、対応する正規化されたスコアにより重み付けされた前記列エンコーディングの和として決定するステップと、
をさらに含む請求項５に記載の方法。
【請求項８】
前記複数の機械学習に基づくモデルを勾配降下を使用して訓練して、前記複数のモデルの各々の結果に基づいて損失を表す目的関数を最小化するステップ
をさらに含む請求項１に記載の方法。
【請求項９】
前記１つ以上の入力表現を生成するステップは、入力表現κａｇｇを、
トークンのシーケンス内の各ｔ番目のトークンについて、スコアαｉｎｔ＝Ｗｉｎｐｈｅｎｃｔを計算し、ｈｅｎｃｔは、前記シーケンス内のｔ番目のワードに対応するエンコーダの状態であり、
前記スコアのベクトルαｉｎ＝［αｉｎｐ１，αｉｎｐ２，・・・］を正規化して、前記トークンのシーケンス内の前記トークンにわたる分布を生成し、
前記入力表現κａｇｇを、
【数１】
0006929971.tif 000029
として取得し、βａｇｇ＝ｓｏｆｔｍａｘ（αａｇｇ）及びαａｇｇ＝Ｗａｇｇｔａｎｈ（Ｖａｇｇκａｇｇ＋ｂａｇｇ）＋ｃａｇｇである
ことにより計算するステップを含む、請求項１に記載の方法。
【請求項１０】
１つ以上の列名を有する前記データベースクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用するステップであり、
列表現のリスト及び質問表現を所与として、質問に最もマッチする列を選択することを含み、前記列表現のリストは、各列名をＬＳＴＭでエンコードすることにより取得され、特定の列ｊの表現ｅｃｊは、
【数２】
0006929971.tif 000030
により与えられる、ステップ、
をさらに含む請求項１に記載の方法。
【請求項１１】
強化学習を使用して、データベースに対して前記生成されたデータベースクエリを実行することにより前記データベースクエリのｗｈｅｒｅ条件を定式化して、
【数３】
0006929971.tif 000031
として定義される報酬Ｒ（ｑ（ｙ），ｑｇ）を取得するステップであり、ｑ（ｙ）は、前記機械学習に基づくモデルにより生成されたクエリを表し、ｑｇは、グラウンドトルースクエリを表し、前記グラウンドトルースクエリは、前記入力自然言語クエリに対応し、かつ実行の結果としてグラウンドトルースを提供するクエリを表す、ステップ
をさらに含む請求項１に記載の方法。
【請求項１２】
自然言語要求を処理してＳＱＬクエリの部分を生成するステップであり、
１つ以上の列名を有する前記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用することと、
強化学習により訓練されたモデルを使用して前記ＳＱＬクエリのｗｈｅｒｅ条件を定式化することと、を含む、ステップ、
を含む方法。
【請求項１３】
多層パーセプトロンを使用して、指定された条件下で選択された列に適用可能な前記ＳＱＬクエリの集約演算を決定するステップ、
をさらに含む請求項１２に記載の方法。
【請求項１４】
１つ以上の列名を有する前記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用することは、
列表現のリスト及び質問表現を所与として、質問に最もマッチする列を選択すること
を含む、請求項１２に記載の方法。
【請求項１５】
前記列表現のリストは、各列名をＬＳＴＭでエンコードすることにより取得され、特定の列ｊの表現ｅｃｊは、
【数４】
0006929971.tif 000032
により与えられる、請求項１４に記載の方法。
【請求項１６】
前記１つ以上の入力表現を生成することは、入力表現κａｇｇを、
トークンのシーケンス内の各ｔ番目のトークンについて、スコアαｉｎｔ＝Ｗｉｎｐｈｅｎｃｔを計算し、ｈｅｎｃｔは、前記シーケンス内のｔ番目のワードに対応するエンコーダの状態であり、
前記スコアのベクトルαｉｎ＝［αｉｎｐ１，αｉｎｐ２，・・・］を正規化して、前記トークンのシーケンス内の前記トークンにわたる分布を生成し、
前記入力表現κａｇｇを、
【数５】
0006929971.tif 000033
として取得し、βａｇｇ＝ｓｏｆｔｍａｘ（αａｇｇ）及びαａｇｇ＝Ｗａｇｇｔａｎｈ（Ｖａｇｇκａｇｇ＋ｂａｇｇ）＋ｃａｇｇである
ことにより計算することを含む、請求項１４に記載の方法。
【請求項１７】
強化学習を使用して、データベースに対して前記生成されたＳＱＬクエリを実行することにより前記ＳＱＬクエリのｗｈｅｒｅ条件を定式化して、
【数６】
0006929971.tif 000034
として定義される報酬Ｒ（ｑ（ｙ），ｑｇ）を取得するステップであり、ｑ（ｙ）は、機械学習に基づくモデルにより生成されたクエリを表し、ｑｇは、グラウンドトルースクエリを表し、前記グラウンドトルースクエリは、入力自然言語クエリに対応し、かつ実行の結果としてグラウンドトルースを提供するクエリを表す、ステップ
をさらに含む請求項１４に記載の方法。
【請求項１８】
１つ以上のコンピュータにステップを実行させるコンピュータプログラムであって、前記ステップは、
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信するステップと、
前記入力自然言語クエリのターム、
前記データベーススキーマの列のセット、及び
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成するステップと、
１つ以上の入力表現を生成するステップであり、各入力表現は、前記トークンのシーケンスをエンコードすることにより取得される、ステップと、
複数の機械学習に基づくモデルにアクセスするステップであり、各々の機械学習に基づくモデルは、前記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、ステップと、
前記複数の機械学習に基づくモデルの各々について、前記機械学習に基づくモデルを入力表現を使用して実行して前記データベースクエリの部分を生成するステップと、
前記データベースクエリの前記生成された部分を組み合わせて前記データベースクエリを取得するステップと、
前記データベースクエリを実行して結果セットを取得するステップと、
を含む、コンピュータプログラム。
【請求項１９】
リカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するコンピュータシステムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータにステップを実行させるコンピュータプログラムと、
を含み、前記ステップは、
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信するステップと、
前記入力自然言語クエリのターム、
前記データベーススキーマの列のセット、及び
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成するステップと、
１つ以上の入力表現を生成するステップであり、各入力表現は、前記トークンのシーケンスをエンコードすることにより取得される、ステップと、
複数の機械学習に基づくモデルにアクセスするステップであり、各々の機械学習に基づくモデルは、前記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、ステップと、
前記複数の機械学習に基づくモデルの各々について、前記機械学習に基づくモデルを入力表現を使用して実行して前記データベースクエリの部分を生成するステップと、
前記データベースクエリの前記生成された部分を組み合わせて前記データベースクエリを取得するステップと、
前記データベースクエリを実行して結果セットを取得するステップと、
を含む、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、データベースクエリの自動生成に関し、より具体的には、自然言語クエリをデータベースクエリに翻訳するためのニューラルネットワークに基づくモデルに関する。
【背景技術】
【０００２】
世界中で利用可能な相当量のデータは、関係データベースに記憶されている。関係データベースは、医療記録、金融市場、顧客関係管理などのアプリケーションの基礎を提供する。しかしながら、関係データベース内の情報へのアクセスは、構造化問い合わせ言語（ＳＱＬ）などのデータベースクエリ言語の理解を要する。ＳＱＬなどのデータベースクエリ言語は、ユーザが関係データベースからのデータの要求を指定することを可能にする点で強力であるが、これらは学習することが困難である。データベースクエリ言語を使用して効率的にデータベースクエリを書けるようにするには、データベースにおける専門知識と強力な技術知識を要する。
【０００３】
一部のシステムは、システムに記憶されたデータにアクセスするための自然言語をサポートしている。自然言語クエリは、人々が自然言語を使用するための訓練を必要としないため、表現の容易さを提供する。しかしながら、これらのシステムは、ＳＱＬなどのデータベースクエリ言語の表現力を提供しない。例えば、自然言語クエリは、複数の方法で解釈される可能性があり、関係データベースに記憶されたデータにアクセスするための自然言語クエリの対応する実行は、非効率的な可能性があり、要求された正確な情報を取り出さない可能性がある。したがって、自然言語クエリ又はデータベースクエリのいずれかを使用して関係データベースに記憶されたデータにアクセスする従来の手法は、これらが表現の容易さを提供するか又は表現の力を提供するかのいずれかであり、あるいは双方を提供しないため、欠点を有する。
【図面の簡単な説明】
【０００４】
開示される実施形態は、詳細な説明、別記の特許請求の範囲、及び添付の図（又は図面）からより容易に明らかとなる他の利点及び特徴を有する。以下は、図の簡単な紹介である。
【図１】一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的なシステム環境を示す高レベルブロック図である。
【図２】一実施形態による、自然言語クエリをデータベースクエリに翻訳するためのコンピューティングシステムのシステムアーキテクチャを示す。
【図３】一実施形態による、自然言語対データベースクエリ翻訳器により実行される処理の詳細を示す。
【図４】一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的な処理を示す。
【図５】一実施形態による、自然言語クエリに基づいて出力データベースクエリの集約演算子を決定する集約分類器の処理を示す。
【図６】一実施形態による、自然言語クエリに基づいて出力データベースクエリのＳＥＬＥＣＴ句の列を決定する結果列予測器の処理を示す。
【図７】一実施形態による、出力データベースクエリの条件句を決定する条件句予測器を訓練する処理を示す。
【図８】図１のクライアントデバイス及び／又はコンピューティングシステムを実現するための一例示的なコンピュータを示す高レベルブロック図である。
【０００５】
図（図面）及び以下の説明は、特定の実施形態を単なる例示として説明する。当業者は、以下の説明から、本明細書に示された構造及び方法の代替的な実施形態が、本明細書で説明される原理から逸脱することなく採用され得ることを容易に理解するであろう。次に、いくつかの実施形態を詳細に参照し、その例を添付の図に示す。
【発明を実施するための形態】
【０００６】
コンピューティングシステムが、自然言語クエリ（natural  language  queries）を対応するデータベースクエリ、例えば構造化問い合わせ言語（structured  query  language、ＳＱＬ）を使用して指定されたクエリに翻訳するために、ディープニューラルネットワークを使用する。実施形態は、ＳＱＬクエリの構造を使用して、生成されたクエリの出力空間を大幅に削減する。コンピューティングシステムは、ディープニューラルネットワークを使用して、自然言語クエリをデータベースクエリに翻訳する。
【０００７】
一実施形態において、コンピューティングシステムは、複数の機械学習に基づくモデル、例えばニューラルネットワークに基づくモデルを使用して、出力データベースクエリの異なる部分を生成する。例えば、コンピューティングシステムは、データベースクエリ内の集約演算子を決定する集約分類器（aggregation  classifier）モデル、データベースクエリの結果列を決定する結果列予測器（result  column  predictor）モデル、及びデータベースクエリの条件句を決定する条件句予測器（condition  clause  predictor）モデルを使用することができる。一実施形態において、集約分類器モデル及び結果列予測器モデルは、多層パーセプトロンを含む。条件句予測器モデルは、ポリシーに基づく強化学習（reinforcement  learning、ＲＬ）を使用して、データベースクエリの条件句を生成する。これは、条件句が本質的に順序づけられておらず、条件句の複数の表現がデータベースクエリに対して同じ出力結果を提供する可能性があるためである。ゆえに、条件句は、交差エントロピー損失（cross  entropy  loss）を使用した最適化に適さない。ディープニューラルネットワークは、交差エントロピー損失とＲＬ報酬とを組み合わせた混合された目的（mixed  objective）を使用して訓練される。
【０００８】
一例として、データベースが、列Ｐｉｃｋ＿ｎｕｍｂｅｒ、ＣＦＬ＿Ｔｅａｍ、Ｐｌａｙｅｒ、Ｐｏｓｉｔｉｏｎ、及びＣｏｌｌｅｇｅを有するテーブルＣＦＬＤｒａｆｔを記憶することができる。このテーブルは、以下の例示的な行を記憶することができる。
【表１】
0006929971.tif 000002
【０００９】
システムは、自然言語クエリ、例えば「いくつのＣＦＬチームがヨーク大学からか？（How  many  CFL  teams  are  from  York  College?）」を受信する。システムは、テーブルＣＦＬＤｒａｆｔを含むデータベーススキーマに関連して受信した自然言語クエリを処理して、ＳＱＬ言語を使用したデータベースクエリ「ＳＥＬＥＣＴ  ＣＯＵＮＴ（ＣＦＬ＿Ｔｅａｍ）  ＦＲＯＭ  ＣＦＬＤｒａｆｔ  ＷＨＥＲＥ  Ｃｏｌｌｅｇｅ＝“Ｙｏｒｋ”」を生成する。システムは、データベーススキーマを使用してデータベースクエリを実行する。テーブルＣＬＦＤｒａｆｔの２行が、これらが大学「Ｙｏｒｋ」を有するため、データベースクエリのＷＨＥＲＥ句にマッチする。結果として、システムは結果２を返す。
【００１０】
［全体的なシステム環境］
図１は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的なシステム環境を示す高レベルブロック図である。システム環境１００は、ネットワーク１５０によりコンピューティングシステム１３０に接続された１つ以上のクライアントデバイス１１０を含む。コンピューティングシステム１３０は、オンラインシステムであってもよいが、例えば、自然言語クエリのセットの各々をデータベースクエリに翻訳するバッチ処理を実行することによりオフラインで動作してもよい。
【００１１】
２つのクライアントデバイス１１０ａ、１１０ｂのみがここで示されているが、これらのエンティティの各々の、複数のインスタンスが存在してもよい。例えば、いくつかのコンピューティングシステム１３０と、各コンピューティングシステム１３０と通信する数十又は数百のクライアントデバイス１１０とが存在してもよい。図面は、同様の要素を識別するために、同様の参照番号を使用する。参照番号の後の文字、「１１０ａ」などは、テキストがその特定の参照番号を有する要素を具体的に参照することを示す。続きの文字のないテキストの参照番号、「１１０」などは、その参照番号を有する図中の要素のいずれか又は全てを参照する。
【００１２】
クライアントデバイス１１０は、ＡＮＤＲＯＩＤ（登録商標）若しくはＡＰＰＬＥ（登録商標）  ＩＯＳ（登録商標）などのオペレーティングシステムを有するスマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、自動車若しくは他の車両の電子ステレオ、又はデジタルコンテンツが聴けるか又は他の方法で体験できる任意の他タイプのネットワーク対応デバイスなどのコンピューティングデバイスである。典型的なクライアントデバイス１１０は、（例えば、Ｗｉｆｉ及び／又は４Ｇ又は他の無線電気通信標準を介して）ネットワーク１５０に接続するために必要なハードウェア及びソフトウェアを含む。
【００１３】
クライアントデバイス１１０は、クライアントデバイス１１０のユーザがコンピューティングシステム１３０と対話することを可能にするクライアントアプリケーション１２０を含む。例えば、クライアントアプリケーション１２０は、ユーザがコンピューティングシステム１３０に送信される自然言語クエリを入力することを可能にするユーザインターフェースであってもよい。クライアントアプリケーション１２０は、コンピューティングシステム１３０から結果を受信し、これらをユーザインターフェースを介してユーザに提示する。一実施形態において、クライアントアプリケーション１２０は、クライアントデバイス１１０のユーザがコンピューティングシステム１３０上で実行しているウェブサーバと対話することを可能にするブラウザである。
【００１４】
コンピューティングシステム１３０は、協調された機能又はタスクのグループを実行するソフトウェアを含む。ソフトウェアは、コンピューティングシステム１３０のユーザが関心のある特定のタスク又はアクティビティを実行することを可能にでき、あるいは他のソフトウェアに特定の機能性及びサービスを提供するシステムソフトウェア（例えば、オペレーティングシステム）を含んでもよい。コンピューティングシステム１３０は、クライアントデバイス１１０から要求を受信し、受信した要求に関連づけられたコンピュータプログラムを実行する。一例として、コンピューティングシステム１３０は、クライアントデバイス１１０からの、自然言語クエリをデータベースクエリに翻訳する要求に応答して、コンピュータプログラムを実行してもよい。コンピューティングシステム１３０上で実行するソフトウェアは、複数の当事者又はチームがソフトウェアの異なるコンポーネントを管理する責任を負う協調的な方法で書かれたコンピュータプログラム、ライブラリ、及び関連データの複雑なコレクションを含むことができる。
【００１５】
一実施形態において、コンピューティングシステム１３０は、クライアントデバイス１１０から自然言語クエリ１３５を受信する。自然言語クエリ１３０は、コンピューティングシステム１３０上で実行するクライアントアプリケーション１２０を介してユーザにより提供されてもよい。コンピューティングシステム１３０は、データベースに記憶されるデータの構造を定義するデータベーススキーマ１４５を記憶する。例えば、データベーススキーマ１４５は、データベースに記憶された様々なテーブル、各テーブルの列、外部キー関係などのテーブル間の関係、テーブルに関連づけられた任意の制約などを識別することができる。
【００１６】
自然言語対データベースクエリ翻訳器（natural  language  to  database  query  translator）１４０は、入力として自然言語クエリ１３５及びデータベーススキーマ１４５を受信し、入力された自然言語クエリ１３５に相当するデータベースクエリ１５５を生成する。生成されたデータベースクエリ１５５は、データベーススキーマ１４５に準拠する。生成されたデータベースクエリ１５５は、データベースクエリプロセッサ１５０により受信され、データベースクエリプロセッサ１５０は、データベース１６０に記憶されたデータを使用してデータベースクエリ１５５を処理する。データベースクエリプロセッサ１５０は、データベースクエリ１５５を処理することによりクエリ結果１６５を生成する。コンピューティングシステム１３０は、生成されたクエリ結果１６５を、自然言語クエリ１３５を送信したクライアントデバイス１１０上で実行しているクライアントアプリケーション１２０に提供する。
【００１７】
一実施形態において、自然言語対データベースクエリ翻訳器１４０は、シーケンス対シーケンス（sequence  to  sequence）翻訳を実行する。従来のニューラルネットワークに基づくシーケンス対シーケンス翻訳器は、かなり大きい空間で検索する。対照的に、実施形態は、データベースクエリ言語に固有の構造を活用して検索空間を削減する。詳細には、システムは、テーブルスキーマ、入力質問、及びＳＱＬキーワードの結合に基づいて、生成されたシーケンスの出力空間を制限する。一実施形態において、自然言語対データベースクエリ翻訳器１４０は、拡大された（augmented）入力を有するポインタネットワークであるディープニューラルネットワークを使用する。
【００１８】
ネットワーク１５０は、クライアントデバイス１１０とレコード管理システム１３０との間の通信インフラストラクチャを提供する。ネットワーク１５０は、典型的にはインターネットであるが、これらに限られないがローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、モバイル有線若しくは無線ネットワーク、プライベートネットワーク、又は仮想プライベートネットワークを含む任意のネットワークであってもよい。ネットワーク１５０の一部が、ＩＥＥＥ８０２．１１標準に基づくＷｉＦｉ、ＢＬＵＥＴＯＯＴＨ（登録商標）ショートレンジ標準、及びワイヤレスユニバーサルシリアルバス（ＵＳＢ）標準を含む通信技術を使用するリンクにより提供されてもよい。
【００１９】
［システムアーキテクチャ］
図２は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するためのコンピューティングシステムのシステムアーキテクチャを示す。コンピューティングシステム１３０は、入力エンコーディングモジュール２１０、訓練モジュール２４０、自然言語対データベースクエリ翻訳器１４０、クエリ合成モジュール２２０、クエリ実行エンジン２３０、訓練データストア２１５、及びデータベース１６０を含む。ネットワークインターフェース、セキュリティ機能、ロードバランサ、フェイルオーバサーバ、管理及びネットワーク操作コンソールなどの従来のコンポーネントは、システムアーキテクチャの詳細を分かりにくくしないよう示されていない。
【００２０】
入力前処理モジュール２１０は、自然言語対データベースクエリ翻訳器１４０への入力として提供するために入力データを前処理する。一実施形態において、入力前処理モジュール２１０は、データベーススキーマからの列名と、入力自然言語クエリと、データベースクエリ言語、例えばＳＱＬの語彙（vocabulary）とを連結することにより、トークンのシーケンスを生成する（４２０）。入力前処理モジュール２１０は、出力データベースクエリの様々な部分を生成する様々なモデルに提供するために１つ以上の入力表現を生成する。
【００２１】
自然言語対データベースクエリ翻訳器１４０は、自然言語クエリに対応するデータベースクエリを生成するために入力自然言語クエリを処理する。一実施形態において、自然言語対データベースクエリ翻訳器１４０は、図３に関連して本明細書でさらに説明される他のコンポーネント、例えば、集約分類器２６０、結果列予測器２７０、及び条件句予測器２８０を含む。
【００２２】
自然言語対データベースクエリ翻訳器１４０は、異なるニューラルネットワークを使用してデータベースクエリの異なるコンポーネントを生成する。一実施形態において、自然言語対データベースクエリ翻訳器１４０は、異なるニューラルネットワークを使用して、選択列と集約演算子とｗｈｅｒｅ句とを含むデータベースクエリのコンポーネントを生成する。
【００２３】
訓練モジュール２４０は、訓練データストア２１５に記憶された過去データを使用して、自然言語対データベースクエリ翻訳器１４０内のニューラルネットワークを訓練する。一実施形態において、訓練モジュール２４０は、集約分類器２６０及び結果列予測器２７０を交差エントロピー損失を使用して訓練するが、条件句予測器２８０をポリシー勾配（policy  gradient）強化学習を使用して訓練して、クエリ条件の順序づけられていない性質に対処する。ＳＱＬクエリの構造を利用することで、自然言語対データベースクエリ翻訳器１４０がデータベースクエリの出力空間を削減することを可能にする。これは、クエリ構造を活用しない他の手法と比較して、有意により高い性能をもたらす。
【００２４】
クエリ合成モジュール２２０は、自然言語対データベースクエリ翻訳器１４０により生成されたデータベースクエリの様々なコンポーネントを受信し、これらを組み合わせてデータベースクエリを取得する。クエリ実行モジュール２３０は、データベース１６０に記憶されたデータを使用して、クエリ合成モジュール２２０により提供されたデータベースクエリを実行する。コンピューティングシステム１３０は、クエリの実行の結果を、結果の要求元、例えばクライアントデバイス１１０上で実行しているクライアントアプリケーション１２０に返す。
【００２５】
図３は、一実施形態による、自然言語対データベースクエリ翻訳器１４０により実行される処理の詳細を示す。図３に示すように、自然言語対データベースクエリ翻訳器１４０への入力は、自然言語クエリ３２０及びデータベーススキーマ３２０を含む。ＣＦＬＤｒａｆｔテーブルに基づく上述の例では、自然言語クエリ３２０は、「いくつのＣＦＬチームがヨーク大学からか？」であり、データベーススキーマ３２０は、列Ｐｉｃｋ＿ｎｕｍｂｅｒ、ＣＦＬ＿Ｔｅａｍ、Ｐｌａｙｅｒ、Ｐｏｓｉｔｉｏｎ、及びＣｏｌｌｅｇｅを含む様々な列を含む。例示的な出力データベースクエリは、「ＳＥＬＥＣＴ  ＣＯＵＮＴ（ＣＦＬ＿Ｔｅａｍ）  ＦＲＯＭ  ＣＦＬＤｒａｆｔ  ＷＨＥＲＥ  Ｃｏｌｌｅｇｅ＝“Ｙｏｒｋ”」である。
【００２６】
入力前処理モジュール２１０は、１つ以上の入力表現を生成し、集約分類器２６０、結果列予測器２７０、及び条件句予測器２８０を含む自然言語対データベースクエリ翻訳器１４０の各コンポーネントに入力表現を提供する。集約分類器２６０、結果列予測器２７０、及び条件句予測器２８０の各々は、出力データベースクエリの一部を生成する。
【００２７】
結果列予測器２７０は、結果列、例えば、ＳＱＬを使用して表現された出力データベースクエリのＳＥＬＥＣＴ句３１０で指定される列を生成する。結果列の一例が、例示的な出力データベースクエリ内の列ＣＦＬ＿Ｔｅａｍである。一実施形態において、結果列予測器２７０は、列のシーケンスのエンコーディングを入力として受信し、かつＳＥＬＥＣＴ列に対応する該列のシーケンス内の列を指し示すポインタネットワークである。
【００２８】
条件句予測器２８０は、出力データベースクエリの出力行をフィルタリングするために使用される条件を指定する出力データベースクエリのＷＨＥＲＥ句３２０を生成する。上記の例では、ＷＨＥＲＥ句「Ｃｏｌｌｅｇｅ＝“Ｙｏｒｋ”」が出力データベースクエリ内の条件句である。
【００２９】
集約分類器２６０は、もしあれば出力データベースクエリ内の集約演算子３３０、例えば、例示的な出力データベースクエリ内のＣＯＵＮＴ演算子を生成する。集約演算子は、ＳＱＬにより選択された行の要約を生成する。集約分類器２６０により生成され得る集約演算子の例は、最大（ＭＡＸ）、最小（ＭＩＮ）、平均（ＡＶＧ）、和（ＳＵＭ）などを含む。集約分類器２６０は、出力クエリに集約演算子が存在しない場合、ＮＵＬＬ集約演算子を生成することができる。
【００３０】
ＳＥＬＥＣＴ句３１０、ＷＨＥＲＥ句３２０、及び集約演算子３３０を含む出力データベースクエリの様々なコンポーネントは、クエリ合成モジュール２７０に入力として提供される。クエリ合成モジュール２７０は、出力データベースクエリの個々のコンポーネントを組み合わせて、完全な出力データベースクエリ３４０を生成する。
【００３１】
［全体的な処理］
図４〜図７は、自然言語クエリをデータベースクエリに翻訳するための様々な処理を示す。当業者は、他の実施形態が図４〜図７のステップをフローチャートに示される順序と異なる順序で実行できることを認識するであろう。さらに、他の実施形態は、本明細書で説明されるステップと異なる及び／又は追加のステップを含むことができる。特定のモジュールにより実行されるものとして示されるステップは、他のモジュールにより実行されてもよい。
【００３２】
図４は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的な処理を示す。自然言語対データベースクエリ翻訳器１４０が、入力自然言語クエリを受信する（４１０）。入力前処理モジュール２１０が、データベーススキーマからの列名と、入力自然言語クエリと、データベースクエリ言語の語彙、例えば、ＳＥＬＥＣＴ、ＦＲＯＭ、ＷＨＥＲＥなどのＳＱＬ言語の様々なキーワードとを連結することにより、トークンのシーケンスを生成する（４２０）。例えば、式（１）は、列名ｘｉｃと、ＳＱＬ語彙を表すターム（terms）ｘｓと、入力自然言語クエリを表すタームｘｑとを含むトークンのシーケンスを示す。
【数１】
0006929971.tif 000003
【００３３】
式（１）において、シーケンスａ及びｂの間の連結は［ａ；ｂ］で表される。さらに、組み合わせられたシーケンスｘは、境界を画定するために、近隣のシーケンスの間にセンチネルトークンを含む。例えば、トークン＜ｃｏｌ＞は列名を識別し、トークン＜ｓｑｌ＞はＳＱＬ語彙を表すタームを識別し、トークン＜ｑｕｅｓｔｉｏｎ＞は入力自然言語クエリのタームを識別する。
【００３４】
入力前処理モジュール２１０は、トークンのシーケンスの入力表現を生成する（４３０）。一実施形態において、入力前処理モジュール２１０は、複数のモデルの各々について１つで、複数の入力表現を生成する。
【００３５】
自然言語対データベースクエリ翻訳器１４０は、複数のニューラル機械学習モデルにアクセスし、各モデルは、出力データベースクエリの部分を生成するように構成される。一実施形態において、自然言語対データベースクエリ翻訳器１４０は、複数の訓練されたニューラルネットワークに基づくモデルをストレージデバイスからメモリにロードする。自然言語対データベースクエリ翻訳器１４０は、複数の機械学習に基づくモデルの各々に入力表現を提供する（４５０）。複数の機械学習に基づくモデルの各々は、データベースクエリの部分を生成する。
【００３６】
いくつかの実施形態において、入力前処理モジュール２１０は、複数の入力表現を生成し、自然言語対データベースクエリ翻訳器１４０は、各々の機械学習に基づくモデルに異なる入力表現を提供することができる。各々の機械学習に基づくモデルは、データベースクエリの部分を生成し、それをクエリ合成モジュール２７０に提供する。クエリ合成モジュール２７０は、データベースクエリの複数の部分を組み合わせてフルのデータベースクエリを生成する（４６０）。クエリ実行エンジン２３０が、データベースクエリを実行して結果セットを生成する（４７０）。
【００３７】
［集約分類器］
図５は、一実施形態による、自然言語クエリに基づいて出力データベースクエリの集約演算子を決定する集約分類器の処理を示す。集約分類器２６０は、入力自然言語クエリで指定された質問のタイプに基づいて、出力データベースクエリの集約演算子を決定する。例えば、集約分類器２６０は、文字列「いくつの（how  many）」を含む入力質問を集約演算子ＣＯＵＮＴにマッピングすることができ、集約分類器２６０は、「何が最も高い」を含む入力質問を集約演算子最大にマッピングすることができ、集約分類器２６０は、「何が最も小さい」を含む入力質問を集約演算子最小にマッピングすることができる、などである。
【００３８】
集約分類器２６０は、トークンの入力シーケンスの入力表現を決定する（５１０）。集約分類器２６０は、入力シーケンス内の各ｔ番目のトークンについて、スカラー注目スコア（scalar  attention  score）αｔｉｎｐ＝Ｗｉｎｐ＊ｈｔｅｎｃを計算する。したがって、集約分類器２６０は、スコアのベクトルαｉｎｐ＝［α１ｉｎｐ，α２ｉｎｐ，．．．］を生成する。集約分類器２６０は、αｉｎｐベクトルにソフトマックス関数を適用してβｉｎｐ＝ｓｏｆｔｍａｘ（αｉｎｐ）を決定することにより、スコアのベクトルαｉｎｐを正規化し、入力エンコーディングにわたる分布を生成する。集約分類器２６０は、入力エンコーディングにわたる分布を生成する。集約分類器２６０は、入力表現κａｇｇを、以下の式で示されるように、正規化されたスコアβｉｎｐにより重み付けされた入力エンコーディングｈｅｎｃにわたる和として決定する（５１０）。
【数２】
0006929971.tif 000004
【００３９】
集約分類器２６０は、生成された入力表現κａｇｇに適用される多層パーセプトロンを含み、例えば、ＣＯＵＮＴ、ＭＩＮ、ＭＡＸ、集約なしを示すＮＵＬＬ演算子など、様々な集約演算に対応するスコアαａｇｇを生成する。集約分類器２６０は、生成されたスコアに基づいて、データベースクエリに対する集約演算を識別する（５３０）。
【００４０】
一実施形態において、集約分類器２６０は、以下の式を使用してαａｇｇを決定する。
【数３】
0006929971.tif 000005
【００４１】
項Ｗａｇｇ、Ｖａｇｇ、ｂａｇｇ及びｃａｇｇは、多層パーセプトロンに対応する重みを表す。集約分類器２６０は、ソフトマックス関数を適用して、可能な集約演算のセットにわたる分布βａｇｇ＝ｓｏｆｔｍａｘ（αａｇｇ）を取得する。集約分類器は、交差エントロピー損失Ｌａｇｇに基づいて訓練される。
【００４２】
［結果列予測器］
ＳＥＬＥＣＴ句は、選択列又は結果列とも呼ばれる。結果列予測器２７０は、データベーススキーマ内のテーブル列及び自然言語クエリに基づいて選択列を決定する。例えば、自然言語クエリ「いくつのＣＦＬチームが・・・」を所与として、結果列予測器２７０は、選択列がＣＦＬＤｒａｆｔテーブルからのＣＦＬ＿Ｔｅａｍｓ列を含むことを決定する。したがって、結果列予測器２７０は、ＳＥＬＥＣＴ列予測の問題をマッチング問題として解決する。一実施形態において、結果列予測器２７０は、ポインタを使用してＳＥＬＥＣＴ列を識別する。列表現のリスト及び自然言語クエリの表現を所与として、結果列予測器２７０は、自然言語クエリに最もマッチする列を選択する。
【００４３】
図６は、一実施形態による、自然言語クエリに基づいて出力データベースクエリのＳＥＬＥＣＴ句の列を決定する結果列予測器により実行される処理を示す。結果列予測器２７０は、各列名をＬＳＴＭ（長短期記憶ネットワーク（long  short  term  memory  network））でエンコードすること（６１０）により、列に対する入力表現を使用する。入力前処理モジュール２１０は、以下の式を使用して、特定の列ｊの入力表現ｅｃｊを生成する（６２０）。
【数４】
0006929971.tif 000006
【００４４】
この式において、ｈｃｊ,ｔはｊ番目の列のｔ番目のエンコーダ状態を表し、ｅｍｂは埋め込みを返す関数である。入力前処理モジュール２１０は、最後のエンコーダ状態を、ｅｃｊ、列ｊの表現であると見なす。
【００４５】
入力前処理モジュール２１０は、κａｇｇについて上述したものと同様のアーキテクチャを使用して、自然言語クエリκｓｅｌに対する表現を構築する。結果列予測器２７０は、入力表現を条件として列表現にわたり多層パーセプトロンを適用して、以下の式を使用して各列ｊについてスコアを計算する（６３０）。
【数５】
0006929971.tif 000007
【００４６】
この式において、Ｗｓｅｌ、Ｖｓｅｌ、及びＶｃは、多層パーセプトロンの重みである。結果列予測器２７０は、スコアをソフトマックス関数で正規化して、可能なＳＥＬＥＣＴ列にわたる分布βｓｅｌ＝ｓｏｆｔｍａｘ（αｓｅｌ）を生成する（６４０）。上記のＣＦＬＤｒａｆｔテーブルの例では、分布は、列Ｐｉｃｋ＿ｎｕｍｂｅｒ、ＣＦＬ＿Ｔｅａｍ、Ｐｌａｙｅｒ、Ｐｏｓｉｔｉｏｎ、及びＣｏｌｌｅｇｅにわたる。結果列予測器２７０は、正規化されたスコアに基づいて、出力データベースクエリの結果列を選択する（６５０）。集約分類器は、交差エントロピー損失Ｌｓｅｌに基づいて訓練される。
【００４７】
［条件句予測器］
一実施形態において、条件句予測器は、ポインタデコーダを使用してＷＨＥＲＥ句を生成する。しかしながら、クエリのＷＨＥＲＥ条件は入れ替えられる可能性があり、クエリは同じ結果を生成する。例えば、自然言語クエリ「どの男性が１８歳より上か（which  males  are  older  than  18）」を所与として、出力データベースクエリは、「ＳＥＬＥＣＴ  ｎａｍｅ  ＦＲＯＭ  ｉｎｓｕｒａｎｃｅ  ＷＨＥＲＥ  ａｇｅ＞１８  ＡＮＤ  ｇｅｎｄｅｒ＝“ｍａｌｅ”」又は「ＳＥＬＥＣＴ  ｎａｍｅ  ＦＲＯＭ  ｉｎｓｕｒａｎｃｅ  ＷＨＥＲＥ  ｇｅｎｄｅｒ＝“ｍａｌｅ”  ＡＮＤ  ａｇｅ＞１８」のいずれかであり得る。２つのデータベースクエリが、２つのクエリ文字列間の文字列マッチに基づきマッチしない場合でも、双方のデータベースクエリが正しい実行結果を取得する。第１のデータベースクエリが、ニューラルネットワークを訓練する間にグラウンドトルースとして提供され、交差エントロピー損失が、訓練を監督する（supervise）ために使用される場合、第２のデータベースクエリは、それが文字列マッチに基づき第１のデータベースクエリにマッチしないため、誤ってペナルティを課される。ゆえに、実施形態は、強化学習を適用してポリシーを学習し、データベースクエリの実行結果の期待された正確さを直接最適化する。
【００４８】
図７は、一実施形態による、出力データベースクエリの条件句を決定する条件句予測器を訓練する処理を示す。条件句予測器２８０は、入力として自然言語クエリ７１０及びデータベーススキーマ７２０を受信して、データベースクエリ７３０を生成する。条件句予測器２８０は、データベース１６０を使用した実行のためにデータベースクエリを送信して、報酬メトリックを取得する。クエリ実行エンジン２３０は、生成されたデータベースクエリ７３０を実行して、予測クエリ結果７５０を取得する。コンピューティングシステム１３０は、グラウンドトルースクエリ結果７５０を訓練データストア２１５に記憶する。条件句予測器２８０は、予測クエリ結果７５０をグラウンドトルースクエリ結果７５０と比較して、報酬７５０を決定する。報酬は、条件句予測器２８０を訓練するためのフィードバックとして、条件句予測器２８０に入力として提供される。
【００４９】
ＷＨＥＲＥ句内の条件句予測器２８０により生成されるトークンのシーケンスは、ｙ＝［ｙ１，ｙ２，．．．，ｙＴ］で表される。ｑ（ｙ）がモデルにより生成されたクエリを表し、ｑｇが自然言語クエリに対応するグラウンドトルースデータベースクエリを表すとする。条件句予測器２８０は、報酬メトリックＲ（ｑ（ｙ），ｑｇ）として以下の式を使用する。
【数６】
0006929971.tif 000008
【００５０】
したがって、条件句予測器２８０は、生成されたデータベースクエリの実行の結果がグラウンドトルースとして提供される期待された結果にマッチする場合、正の報酬を割り当てる。条件句予測器２８０は、生成されたデータベースクエリの実行の結果がグラウンドトルースとして提供される期待された結果にマッチするのに失敗した場合、又は生成されたデータベースクエリが有効なデータベースクエリでない場合、負の報酬を割り当てる。
【００５１】
条件句予測器２８０は、損失Ｌｗｈｅを、可能なＷＨＥＲＥ句にわたる負の期待された報酬として決定する。訓練モジュールは、勾配降下（gradient  descent）を使用して条件句予測器２８０を訓練して、目的関数Ｌ＝Ｌａｇｇ＋Ｌｓｅｌ＋Ｌｗｈｅを最小化する。したがって、条件句予測器２８０は、ＳＥＬＥＣＴ列を予測する際の交差エントロピー損失からの、集約演算を予測する際の交差エントロピー損失からの、及び条件句のためのポリシー学習からの勾配の重み付け和として、総勾配を決定する。
【００５２】
自然言語対データベースクエリ翻訳器１４０における構造の組み込みは、生成される可能性のある無効なデータベースクエリを削減する。大量の無効なクエリは、列名から結果として生じ、生成されたクエリは、テーブルに存在しない選択列を参照する。これは、列名が多くのトークン、例えば４つのトークンを有する「マイル（ｋｍ）」などを含むとき、特に役立つ。集約のために分類器を導入することも、誤り率を削減する。集約分類器の使用は、ＣＯＵＮＴ演算子を予測するための適合率及び再現率を向上させる。条件句を生成するための表現学習の使用は、グラウンドトルースと異なって順序づけられ得る、より高品質のＷＨＥＲＥ句の生成を結果としてもたらす。ポリシーに基づく表現学習での訓練は、条件の順序がグラウンドトルースクエリと異なる場合でも、正しい結果をもたらす。
【００５３】
［コンピュータアーキテクチャ］
図８は、図１のクライアントデバイス及び／又はコンピューティングシステムを実現するための一例示的なコンピュータを示す高レベルブロック図である。コンピュータ８００は、チップセット８０４に結合された少なくとも１つのプロセッサ８０２を含む。チップセット８０４は、メモリコントローラハブ８２０及び入力／出力（Ｉ／Ｏ）コントローラハブ８２２を含む。メモリ８０６及びグラフィックスアダプタ８１２がメモリコントローラハブ８２０に結合され、ディスプレイ８１８がグラフィックスアダプタ８１２に結合される。ストレージデバイス８０８、入力デバイス８１４、及びネットワークアダプタ８１６が、Ｉ／Ｏコントローラハブ８２２に結合される。コンピュータ８００の他の実施形態は、異なるアーキテクチャを有する。
【００５４】
ストレージデバイス８０８は、ハードドライブ、コンパクトディスク読取専用メモリ（ＣＤ‐ＲＯＭ）、ＤＶＤ、又はソリッドステートメモリデバイスなどの、非一時的コンピュータ読取可能記憶媒体である。メモリ８０６は、プロセッサ８０２により使用される命令及びデータを保持する。入力インターフェース８１４は、タッチスクリーンインターフェース、マウス、トラックボール、若しくは他タイプのポインティングデバイス、キーボード、又はこれらの何らかの組み合わせであり、コンピュータ８００にデータを入力するために使用される。いくつかの実施形態において、コンピュータ８００は、ユーザからのジェスチャを介して入力インターフェース８１４から入力（例えば、コマンド）を受け取るように構成されてもよい。グラフィックスアダプタ８１２は、画像及び他の情報をディスプレイ８１８に表示する。ネットワークアダプタ８１６は、コンピュータ８００を１つ以上のコンピュータネットワークに結合する。
【００５５】
コンピュータ８００は、本明細書で説明される機能性を提供するコンピュータプログラムモジュールを実行するように適合される。本明細書で用いられるとき、用語「モジュール」は、指定された機能性を提供するために使用されるコンピュータプログラム論理を参照する。ゆえに、モジュールは、ハードウェア、ファームウェア、及び／又はソフトウェアで実現できる。一実施形態において、プログラムモジュールは、ストレージデバイス８０８に記憶され、メモリ８０６にロードされ、プロセッサ８０２により実行される。
【００５６】
図１のエンティティにより使用されるコンピュータ８００のタイプは、実施形態及びエンティティにより必要とされる処理能力に依存して変わってもよい。コンピュータ８００は、グラフィックスアダプタ８１２及びディスプレイ８１８など、上述のコンポーネントのうちいくつかがなくてもよい。例えば、コンピューティングシステム１３０は、サーバファーム内などのネットワークを通して通信する複数のブレードサーバから形成されてもよい。
【００５７】
本出願の対象事項の実現は、特に、以下の例１〜２１であってもよい。
〔例１〕
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信するステップと、
上記入力自然言語クエリのターム、
上記データベーススキーマの列のセット、及び
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成するステップと、
１つ以上の入力表現を生成するステップであり、各入力表現は、上記トークンのシーケンスをエンコードすることにより取得される、ステップと、
複数の機械学習に基づくモデルにアクセスするステップであり、各モデルは、上記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、ステップと、
上記複数のモデルの各々について、上記モデルを入力表現に基づいて実行して上記データベースクエリの部分を生成するステップと、
上記データベースクエリの上記生成された部分を組み合わせて上記データベースクエリを取得するステップと、
上記データベースクエリを実行して結果セットを取得するステップと、
を含む方法。
〔例２〕
上記入力自然言語クエリは、クライアントデバイスから受信され、当該方法は、上記結果セットを上記クライアントデバイスに送信するステップをさらに含む、例１に記載の方法。
〔例３〕
上記複数のモデルは、上記データベースクエリ内の集約演算子を決定する集約分類器モデルを含み、上記集約分類器モデルは、多層パーセプトロンを含む、例１に記載の方法。
〔例４〕
上記複数のモデルは、上記データベースクエリの結果列を決定する結果列予測器モデルを含み、上記結果列予測器モデルは、多層パーセプトロンを含む、例１に記載の方法。
〔例５〕
上記複数のモデルは、上記データベースクエリの条件句を決定する条件句予測器モデルを含み、上記条件句予測器モデルは、強化学習に基づく、例１に記載の方法。
〔例６〕
グラウンドトルースデータベースクエリに基づく結果セットを受信するステップと、
上記生成されたクエリから取得された結果と上記グラウンドトルースクエリから取得された結果との比較に基づいて報酬値を決定するステップと、
上記報酬値に基づいて上記条件句予測器モデルの重みを調整するステップと、
をさらに含む例５に記載の方法。
〔例７〕
上記シーケンスの各トークンに対応する列エンコーディングを決定するステップと、
上記入力シーケンスの各トークンについてのスカラー注目スコアを含むベクトルを決定するステップと、
上記ベクトルをソフトマックス関数を使用して正規化するステップと、
上記入力表現を、対応する正規化されたスコアにより重み付けされた上記列エンコーディングの和として決定するステップと、
をさらに含む例５に記載の方法。
〔例８〕
上記複数のモデルを勾配降下を使用して訓練して、上記複数のモデルの各々の結果に基づいて損失を表す目的関数を最小化するステップ
をさらに含む例１に記載の方法。
〔例９〕
上記１つ以上の入力表現を生成するステップは、入力表現κａｇｇを、
トークンのシーケンス内の各ｔ番目のトークンについて、スカラー注目スコアαｉｎｔ＝Ｗｉｎｐｈｅｎｃｔを計算し、ｈｅｎｃｔは、上記入力シーケンス内のｔ番目のワードに対応するエンコーダの状態であり、
上記スコアのベクトルαｉｎ＝［αｉｎｐ１，αｉｎｐ２，・・・］を正規化して、上記トークンのシーケンス内の上記トークンにわたる分布を生成し、
上記入力表現κａｇｇを、
【数７】
0006929971.tif 000009
として取得し、βａｇｇ＝ｓｏｆｔｍａｘ（αａｇｇ）及びαａｇｇ＝Ｗａｇｇｔａｎｈ（Ｖａｇｇκａｇｇ＋ｂａｇｇ）＋ｃａｇｇである
ことにより計算するステップを含む、例１乃至８のうちいずれか１項に記載の方法。
〔例１０〕
１つ以上の列名を有する上記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化する（formulates）ポインタネットワークで長短期記憶（ＬＳＴＭ）を使用するステップであり、
列表現のリスト及び質問表現を所与として、質問に最もマッチする列を選択することを含み、上記列表現のリストは、各列名をＬＳＴＭでエンコードすることにより取得され、特定の列ｊの表現ｅｃｊは、
【数８】
0006929971.tif 000010
により与えられる、ステップ、
をさらに含む例１乃至９のうちいずれか１項に記載の方法。
〔例１１〕
強化学習を使用して、データベースに対して上記生成されたＳＱＬクエリを実行することにより上記ＳＱＬクエリのｗｈｅｒｅ条件を定式化して、
【数９】
0006929971.tif 000011
として定義される報酬Ｒ（ｑ（ｙ），ｑｇ）を取得するステップであり、ｑ（ｙ）は、上記モデルにより生成されたクエリを表し、ｑｇは、上記入力自然言語クエリに対応するグラウンドトルースクエリを表す、ステップ
をさらに含む例１乃至１０のうちいずれか１項に記載の方法。
〔例１２〕
自然言語要求を処理してＳＱＬクエリの部分を生成するステップであり、
１つ以上の列名を有する上記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用することと、
強化学習により訓練された拡大ポインタデコーダ（augmented  pointer  decoder）を使用して上記ＳＱＬクエリのｗｈｅｒｅ条件を定式化するステップと、
を含む方法。
〔例１３〕
多層パーセプトロンを使用して、指定された条件下で選択された列に適用可能な上記ＳＱＬクエリの集約演算を決定するステップ、
をさらに含む例１２に記載の方法。
〔例１４〕
１つ以上の列名を有する上記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用することは、
列表現のリスト及び質問表現を所与として、質問に最もマッチする列を選択すること
を含む、例１２又は１３に記載の方法。
〔例１５〕
上記列表現のリストは、各列名をＬＳＴＭでエンコードすることにより取得され、特定の列ｊの表現ｅｃｊは、
【数１０】
0006929971.tif 000012
により与えられる、例１４に記載の方法。
〔例１６〕
上記１つ以上の入力表現を生成することは、入力表現κａｇｇを、
トークンのシーケンス内の各ｔ番目のトークンについて、スカラー注目スコアαｉｎｔ＝Ｗｉｎｐｈｅｎｃｔを計算し、ｈｅｎｃｔは、上記入力シーケンス内のｔ番目のワードに対応するエンコーダの状態であり、
上記スコアのベクトルαｉｎ＝［αｉｎｐ１，αｉｎｐ２，・・・］を正規化して、上記トークンのシーケンス内の上記トークンにわたる分布を生成し、
上記入力表現κａｇｇを、
【数１１】
0006929971.tif 000013
として取得し、βａｇｇ＝ｓｏｆｔｍａｘ（αａｇｇ）及びαａｇｇ＝Ｗａｇｇｔａｎｈ（Ｖａｇｇκａｇｇ＋ｂａｇｇ）＋ｃａｇｇである
ことにより計算することを含む、例１４乃至１５のうちいずれか１項に記載の方法。
〔例１７〕
強化学習を使用して、データベースに対して上記生成されたＳＱＬクエリを実行することにより上記ＳＱＬクエリのｗｈｅｒｅ条件を定式化して、
【数１２】
0006929971.tif 000014
として定義される報酬Ｒ（ｑ（ｙ），ｑｇ）を取得するステップであり、ｑ（ｙ）は、上記モデルにより生成されたクエリを表し、ｑｇは、上記入力自然言語クエリに対応するグラウンドトルースクエリを表す、ステップ
をさらに含む例１４乃至１６のうちいずれか１項に記載の方法。
〔例１８〕
１つ以上のプロセッサにより実行されたときに上記１つ以上のプロセッサに例１乃至１７のうちいずれか１項に記載のステップを実行させるコンピュータ実行可能コードを含む非一時的コンピュータ読取可能記憶媒体。
〔例１９〕
リカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するコンピュータシステムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータにより実行されたときに上記１つ以上のコンピュータに請求項１８に記載の方法のステップを実行させるコンピュータ実行可能コードを含む非一時的コンピュータ読取可能記憶媒体と、
を含むコンピュータシステム。
〔例２０〕
１つ以上のコンピュータプロセッサと少なくとも１つの非一時的記憶媒体とを含むコンピュータシステムであって、
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信する手段と、
上記入力自然言語クエリのターム、
上記データベーススキーマの列のセット、及び、
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成する手段と、
１つ以上の入力表現を生成する手段であり、各入力表現は、上記トークンのシーケンスをエンコードすることにより取得される、手段と、
複数の機械学習に基づくモデルにアクセスする手段であり、各モデルは、上記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、手段と、
上記複数のモデルの各々について、上記モデルを入力表現に基づいて実行して上記データベースクエリの部分を生成する手段と、
上記データベースクエリの上記生成された部分を組み合わせて上記データベースクエリを取得する手段と、
上記データベースクエリを実行して結果セットを取得する手段と、
をさらに含むコンピュータシステム。
〔例２１〕
１つ以上のコンピュータプロセッサと少なくとも１つの非一時的記憶媒体とを含むコンピュータシステムであって、
自然言語要求を処理してＳＱＬクエリの部分を生成する手段であり、
１つ以上の列名を有する上記ＳＱＬクエリのｓｅｌｅｃｔ句を定式化するポインタネットワークで長短期記憶（ＬＳＴＭ）を使用する手段と、
強化学習により訓練された拡大ポインタデコーダを使用して上記ＳＱＬクエリのｗｈｅｒｅ条件を定式化する手段と、
を含む、手段
をさらに含むコンピュータシステム。
【００５８】
［代替的な実施形態］
開示された実施形態は、関係データベースに基づいており、ＳＱＬを使用して例示されているが、開示された技術は、他のタイプのデータベース、例えば、オブジェクトベースのデータベース、オブジェクト関係データベースなどに適用可能である。開示された技術は、特定タイプのデータベースに使用されるデータベースクエリ言語が結果列、集約句、又は条件句に相当する機能をサポートする場合、適用可能である。例えば、データベースクエリ言語が条件句をサポートする場合、条件句予測器を使用して、入力自然言語クエリに基づいて出力データベースクエリの条件句を予測することができる。
【００５９】
本発明の図及び説明は、明確さの目的で、典型的な分散システムに見られる他の多くの要素を排除すると同時に、本発明の明確な理解に関連する要素を例示するよう簡略化されていることを理解されたい。当業者は、他の要素及び／又はステップが実施形態を実現する際に望ましく、かつ／あるいは必要とされることを認識し得る。しかしながら、こうした要素及びステップは当該分野において良く知られているため、かつそれらは実施形態のより良い理解を促進しないため、こうした要素及びステップの議論は本明細書で提供されない。本明細書の開示は、当業者に知られるこうした要素及び方法に対するすべてのこうした変形及び修正に向けられる。
【００６０】
上記説明のいくつかの部分は、実施形態を、情報に対する演算のアルゴリズム及びシンボル表現の観点から説明する。これらのアルゴリズム的説明及び表現は、データ処理分野の当業者により一般的に使用され、その作用の実体を他の当業者に効果的に伝達する。これらの動作は、機能的、計算的、又は論理的に説明されているが、コンピュータプログラム又は同等の電気回路、マイクロコードなどにより実現されるものと理解される。さらに、これらの動作の配置を一般性を損なうことなくモジュールとして参照することは、時に便利であることも証明されている。説明した動作及びその関連モジュールは、ソフトウェア、ファームウェア、ハードウェア、又はこれらの任意の組み合わせで具体化されてもよい。
【００６１】
本明細書で用いられるとき、「１つの実施形態」又は「一実施形態」へのいずれの参照も、実施形態に関連して説明された特定の要素、特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。明細書中の様々な箇所におけるフレーズ「１つの実施形態において」の出現は、必ずしもすべてが同じ実施形態を参照しているわけではない。
【００６２】
いくつかの実施形態は、表現「結合された」及び「接続された」をその派生形と共に使用して説明され得る。これらの用語は、互いに同義語として意図されてはいないことを理解されたい。例えば、いくつかの実施形態は、用語「接続された」を使用して説明されて、２つ以上の要素が互いに直接物理的又は電気的に接触していることを示し得る。別の例において、いくつかの実施形態は、用語「結合された」を使用して説明されて、２つ以上の要素が直接物理的又は電気的に接触していることを示し得る。しかしながら、用語「結合された」は、２つ以上の要素が互いに直接接触していないが、なお依然として互いに協調又は対話することをさらに意味し得る。実施形態は、この文脈において限定されない。
【００６３】
本明細書で用いられるとき、用語「含む」、「含んでいる」、「含める」、「含めている」、「有する」、「有している」、又はこれらの任意の他の変形は、非排他的な包含をカバーすることが意図される。例えば、要素のリストを含む処理、方法、物品、又は装置は、必ずしもこれらの要素のみに限定されず、明確に列挙されていないか又はこうした処理、方法、物品、若しくは装置に固有の他の要素を含んでもよい。さらに、逆のことを明確に示されない限り、「又は」は、排他的ＯＲでなく包括的ＯＲを参照する。例えば、条件Ａ又はＢは、Ａが真であり（又は存在し）Ｂが偽である（又は存在しない）と、Ａが偽であり（又は存在せず）Ｂが真である（又は存在する）と、Ａ及びＢの双方が真である（又は存在する）と、のうちいずれか１つにより満たされる。
【００６４】
さらに、一の（“ａ”又は“ａｎ”）の使用は、本明細書における実施形態の要素及びコンポーネントを説明するために採用されている。これは単に、簡便さのため、及び本発明の一般的な意味を与えるために行われる。本説明は、１つ又は少なくとも１つを含むように読まれるべきであり、その他を意図されることが明らかでない限り、単数形は複数形も含む。
【００６５】
本開示を読むと、当業者は、本明細書で開示された原理を通して、歪み領域を使用してチャートを表示するシステム及び処理のためのなおさらなる代替的な構造及び機能設計を理解するであろう。ゆえに、特定の実施形態及び適用が例示され説明されたが、開示された実施形態は、本明細書に開示された正確な構造及びコンポーネントに限定されないことが理解されるべきである。当業者に明らかであろう様々な修正、変更及び変形が、別記の特許請求の範囲に定義された主旨及び範囲から逸脱することなく、本明細書に開示された方法及び装置の配置、動作、及び詳細において行われ得る。
【００６６】
［付録］
以下の「Seq2SQL:  Generating  Structured  Queries  from  Natural  Language  using  Reinforcement  Learning」と題された文献は、本付録の一部であり、ゆえに本出願の開示の一部である「Ｓｅｑ２ＳＱＬ」を開示しており、「Ｓｅｑ２ＳＱＬ」、自然言語の質問を対応するＳＱＬクエリに翻訳するためのディープニューラルネットワークを開示している。Ｓｅｑ２ＳＱＬは、ＳＱＬクエリの構造を活用して、生成されたクエリの出力空間を有意に削減する。Ｓｅｑ２ＳＱＬは、ＳＱＬクエリの構造を活用する３つのコンポーネントを含み、生成されたクエリの出力空間を大幅に削減する。詳細には、Ｓｅｑ２ＳＱＬは、ポインタデコーダ及びポリシー勾配を使用してクエリの条件を生成し、これは、順序づけられていない性質に起因して交差エントロピー損失を使用した最適化に適さないことを我々は示す。Ｓｅｑ２ＳＱＬは、交差エントロピー損失とデータベースに対するライブのクエリ実行からの強化学習報酬とを組み合わせた混合された目的を使用して訓練される。これらの特性は、モデルがクエリ生成において一層向上した結果を達成することを可能にする。
0006929971.tif 000015
0006929971.tif 000016
0006929971.tif 000017
0006929971.tif 000018
0006929971.tif 000019
0006929971.tif 000020
0006929971.tif 000021
0006929971.tif 000022
0006929971.tif 000023
0006929971.tif 000024
0006929971.tif 000025
0006929971.tif 000026
0006929971.tif 000027
0006929971.tif 000028
【図１】
0006929971.tif 000035
【図２】
0006929971.tif 000036
【図３】
0006929971.tif 000037
【図４】
0006929971.tif 000038
【図５】
0006929971.tif 000039
【図６】
0006929971.tif 000040
【図７】
0006929971.tif 000041
【図８】
0006929971.tif 000042