(58)【調査した分野】(Int.Cl.,DB名)
前記入力自然言語クエリは、クライアントデバイスから受信され、当該方法は、前記結果セットを前記クライアントデバイスに送信するステップをさらに含む、請求項1に記載の方法。
前記複数の機械学習に基づくモデルは、前記データベースクエリ内の集約演算子を決定する集約分類器モデルを含み、前記集約分類器モデルは、多層パーセプトロンを含む、請求項1に記載の方法。
前記複数の機械学習に基づくモデルは、前記データベースクエリの結果列を決定する結果列予測器モデルを含み、前記結果列予測器モデルは、多層パーセプトロンを含む、請求項1に記載の方法。
前記複数の機械学習に基づくモデルは、前記データベースクエリの条件句を決定する条件句予測器モデルを含み、前記条件句予測器モデルは、強化学習に基づく、請求項1に記載の方法。
【発明を実施するための形態】
【0006】
コンピューティングシステムが、自然言語クエリ(natural language queries)を対応するデータベースクエリ、例えば構造化問い合わせ言語(structured query language、SQL)を使用して指定されたクエリに翻訳するために、ディープニューラルネットワークを使用する。実施形態は、SQLクエリの構造を使用して、生成されたクエリの出力空間を大幅に削減する。コンピューティングシステムは、ディープニューラルネットワークを使用して、自然言語クエリをデータベースクエリに翻訳する。
【0007】
一実施形態において、コンピューティングシステムは、複数の機械学習に基づくモデル、例えばニューラルネットワークに基づくモデルを使用して、出力データベースクエリの異なる部分を生成する。例えば、コンピューティングシステムは、データベースクエリ内の集約演算子を決定する集約分類器(aggregation classifier)モデル、データベースクエリの結果列を決定する結果列予測器(result column predictor)モデル、及びデータベースクエリの条件句を決定する条件句予測器(condition clause predictor)モデルを使用することができる。一実施形態において、集約分類器モデル及び結果列予測器モデルは、多層パーセプトロンを含む。条件句予測器モデルは、ポリシーに基づく強化学習(reinforcement learning、RL)を使用して、データベースクエリの条件句を生成する。これは、条件句が本質的に順序づけられておらず、条件句の複数の表現がデータベースクエリに対して同じ出力結果を提供する可能性があるためである。ゆえに、条件句は、交差エントロピー損失(cross entropy loss)を使用した最適化に適さない。ディープニューラルネットワークは、交差エントロピー損失とRL報酬とを組み合わせた混合された目的(mixed objective)を使用して訓練される。
【0008】
一例として、データベースが、列Pick_number、CFL_Team、Player、Position、及びCollegeを有するテーブルCFLDraftを記憶することができる。このテーブルは、以下の例示的な行を記憶することができる。
【表1】
【0009】
システムは、自然言語クエリ、例えば「いくつのCFLチームがヨーク大学からか?(How many CFL teams are from York College?)」を受信する。システムは、テーブルCFLDraftを含むデータベーススキーマに関連して受信した自然言語クエリを処理して、SQL言語を使用したデータベースクエリ「SELECT COUNT(CFL_Team) FROM CFLDraft WHERE College=“York”」を生成する。システムは、データベーススキーマを使用してデータベースクエリを実行する。テーブルCLFDraftの2行が、これらが大学「York」を有するため、データベースクエリのWHERE句にマッチする。結果として、システムは結果2を返す。
【0010】
[全体的なシステム環境]
図1は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的なシステム環境を示す高レベルブロック図である。システム環境100は、ネットワーク150によりコンピューティングシステム130に接続された1つ以上のクライアントデバイス110を含む。コンピューティングシステム130は、オンラインシステムであってもよいが、例えば、自然言語クエリのセットの各々をデータベースクエリに翻訳するバッチ処理を実行することによりオフラインで動作してもよい。
【0011】
2つのクライアントデバイス110a、110bのみがここで示されているが、これらのエンティティの各々の、複数のインスタンスが存在してもよい。例えば、いくつかのコンピューティングシステム130と、各コンピューティングシステム130と通信する数十又は数百のクライアントデバイス110とが存在してもよい。図面は、同様の要素を識別するために、同様の参照番号を使用する。参照番号の後の文字、「110a」などは、テキストがその特定の参照番号を有する要素を具体的に参照することを示す。続きの文字のないテキストの参照番号、「110」などは、その参照番号を有する図中の要素のいずれか又は全てを参照する。
【0012】
クライアントデバイス110は、ANDROID(登録商標)若しくはAPPLE(登録商標) IOS(登録商標)などのオペレーティングシステムを有するスマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、自動車若しくは他の車両の電子ステレオ、又はデジタルコンテンツが聴けるか又は他の方法で体験できる任意の他タイプのネットワーク対応デバイスなどのコンピューティングデバイスである。典型的なクライアントデバイス110は、(例えば、Wifi及び/又は4G又は他の無線電気通信標準を介して)ネットワーク150に接続するために必要なハードウェア及びソフトウェアを含む。
【0013】
クライアントデバイス110は、クライアントデバイス110のユーザがコンピューティングシステム130と対話することを可能にするクライアントアプリケーション120を含む。例えば、クライアントアプリケーション120は、ユーザがコンピューティングシステム130に送信される自然言語クエリを入力することを可能にするユーザインターフェースであってもよい。クライアントアプリケーション120は、コンピューティングシステム130から結果を受信し、これらをユーザインターフェースを介してユーザに提示する。一実施形態において、クライアントアプリケーション120は、クライアントデバイス110のユーザがコンピューティングシステム130上で実行しているウェブサーバと対話することを可能にするブラウザである。
【0014】
コンピューティングシステム130は、協調された機能又はタスクのグループを実行するソフトウェアを含む。ソフトウェアは、コンピューティングシステム130のユーザが関心のある特定のタスク又はアクティビティを実行することを可能にでき、あるいは他のソフトウェアに特定の機能性及びサービスを提供するシステムソフトウェア(例えば、オペレーティングシステム)を含んでもよい。コンピューティングシステム130は、クライアントデバイス110から要求を受信し、受信した要求に関連づけられたコンピュータプログラムを実行する。一例として、コンピューティングシステム130は、クライアントデバイス110からの、自然言語クエリをデータベースクエリに翻訳する要求に応答して、コンピュータプログラムを実行してもよい。コンピューティングシステム130上で実行するソフトウェアは、複数の当事者又はチームがソフトウェアの異なるコンポーネントを管理する責任を負う協調的な方法で書かれたコンピュータプログラム、ライブラリ、及び関連データの複雑なコレクションを含むことができる。
【0015】
一実施形態において、コンピューティングシステム130は、クライアントデバイス110から自然言語クエリ135を受信する。自然言語クエリ130は、コンピューティングシステム130上で実行するクライアントアプリケーション120を介してユーザにより提供されてもよい。コンピューティングシステム130は、データベースに記憶されるデータの構造を定義するデータベーススキーマ145を記憶する。例えば、データベーススキーマ145は、データベースに記憶された様々なテーブル、各テーブルの列、外部キー関係などのテーブル間の関係、テーブルに関連づけられた任意の制約などを識別することができる。
【0016】
自然言語対データベースクエリ翻訳器(natural language to database query translator)140は、入力として自然言語クエリ135及びデータベーススキーマ145を受信し、入力された自然言語クエリ135に相当するデータベースクエリ155を生成する。生成されたデータベースクエリ155は、データベーススキーマ145に準拠する。生成されたデータベースクエリ155は、データベースクエリプロセッサ150により受信され、データベースクエリプロセッサ150は、データベース160に記憶されたデータを使用してデータベースクエリ155を処理する。データベースクエリプロセッサ150は、データベースクエリ155を処理することによりクエリ結果165を生成する。コンピューティングシステム130は、生成されたクエリ結果165を、自然言語クエリ135を送信したクライアントデバイス110上で実行しているクライアントアプリケーション120に提供する。
【0017】
一実施形態において、自然言語対データベースクエリ翻訳器140は、シーケンス対シーケンス(sequence to sequence)翻訳を実行する。従来のニューラルネットワークに基づくシーケンス対シーケンス翻訳器は、かなり大きい空間で検索する。対照的に、実施形態は、データベースクエリ言語に固有の構造を活用して検索空間を削減する。詳細には、システムは、テーブルスキーマ、入力質問、及びSQLキーワードの結合に基づいて、生成されたシーケンスの出力空間を制限する。一実施形態において、自然言語対データベースクエリ翻訳器140は、拡大された(augmented)入力を有するポインタネットワークであるディープニューラルネットワークを使用する。
【0018】
ネットワーク150は、クライアントデバイス110とレコード管理システム130との間の通信インフラストラクチャを提供する。ネットワーク150は、典型的にはインターネットであるが、これらに限られないがローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、モバイル有線若しくは無線ネットワーク、プライベートネットワーク、又は仮想プライベートネットワークを含む任意のネットワークであってもよい。ネットワーク150の一部が、IEEE802.11標準に基づくWiFi、BLUETOOTH(登録商標)ショートレンジ標準、及びワイヤレスユニバーサルシリアルバス(USB)標準を含む通信技術を使用するリンクにより提供されてもよい。
【0019】
[システムアーキテクチャ]
図2は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するためのコンピューティングシステムのシステムアーキテクチャを示す。コンピューティングシステム130は、入力エンコーディングモジュール210、訓練モジュール240、自然言語対データベースクエリ翻訳器140、クエリ合成モジュール220、クエリ実行エンジン230、訓練データストア215、及びデータベース160を含む。ネットワークインターフェース、セキュリティ機能、ロードバランサ、フェイルオーバサーバ、管理及びネットワーク操作コンソールなどの従来のコンポーネントは、システムアーキテクチャの詳細を分かりにくくしないよう示されていない。
【0020】
入力前処理モジュール210は、自然言語対データベースクエリ翻訳器140への入力として提供するために入力データを前処理する。一実施形態において、入力前処理モジュール210は、データベーススキーマからの列名と、入力自然言語クエリと、データベースクエリ言語、例えばSQLの語彙(vocabulary)とを連結することにより、トークンのシーケンスを生成する(420)。入力前処理モジュール210は、出力データベースクエリの様々な部分を生成する様々なモデルに提供するために1つ以上の入力表現を生成する。
【0021】
自然言語対データベースクエリ翻訳器140は、自然言語クエリに対応するデータベースクエリを生成するために入力自然言語クエリを処理する。一実施形態において、自然言語対データベースクエリ翻訳器140は、
図3に関連して本明細書でさらに説明される他のコンポーネント、例えば、集約分類器260、結果列予測器270、及び条件句予測器280を含む。
【0022】
自然言語対データベースクエリ翻訳器140は、異なるニューラルネットワークを使用してデータベースクエリの異なるコンポーネントを生成する。一実施形態において、自然言語対データベースクエリ翻訳器140は、異なるニューラルネットワークを使用して、選択列と集約演算子とwhere句とを含むデータベースクエリのコンポーネントを生成する。
【0023】
訓練モジュール240は、訓練データストア215に記憶された過去データを使用して、自然言語対データベースクエリ翻訳器140内のニューラルネットワークを訓練する。一実施形態において、訓練モジュール240は、集約分類器260及び結果列予測器270を交差エントロピー損失を使用して訓練するが、条件句予測器280をポリシー勾配(policy gradient)強化学習を使用して訓練して、クエリ条件の順序づけられていない性質に対処する。SQLクエリの構造を利用することで、自然言語対データベースクエリ翻訳器140がデータベースクエリの出力空間を削減することを可能にする。これは、クエリ構造を活用しない他の手法と比較して、有意により高い性能をもたらす。
【0024】
クエリ合成モジュール220は、自然言語対データベースクエリ翻訳器140により生成されたデータベースクエリの様々なコンポーネントを受信し、これらを組み合わせてデータベースクエリを取得する。クエリ実行モジュール230は、データベース160に記憶されたデータを使用して、クエリ合成モジュール220により提供されたデータベースクエリを実行する。コンピューティングシステム130は、クエリの実行の結果を、結果の要求元、例えばクライアントデバイス110上で実行しているクライアントアプリケーション120に返す。
【0025】
図3は、一実施形態による、自然言語対データベースクエリ翻訳器140により実行される処理の詳細を示す。
図3に示すように、自然言語対データベースクエリ翻訳器140への入力は、自然言語クエリ320及びデータベーススキーマ320を含む。CFLDraftテーブルに基づく上述の例では、自然言語クエリ320は、「いくつのCFLチームがヨーク大学からか?」であり、データベーススキーマ320は、列Pick_number、CFL_Team、Player、Position、及びCollegeを含む様々な列を含む。例示的な出力データベースクエリは、「SELECT COUNT(CFL_Team) FROM CFLDraft WHERE College=“York”」である。
【0026】
入力前処理モジュール210は、1つ以上の入力表現を生成し、集約分類器260、結果列予測器270、及び条件句予測器280を含む自然言語対データベースクエリ翻訳器140の各コンポーネントに入力表現を提供する。集約分類器260、結果列予測器270、及び条件句予測器280の各々は、出力データベースクエリの一部を生成する。
【0027】
結果列予測器270は、結果列、例えば、SQLを使用して表現された出力データベースクエリのSELECT句310で指定される列を生成する。結果列の一例が、例示的な出力データベースクエリ内の列CFL_Teamである。一実施形態において、結果列予測器270は、列のシーケンスのエンコーディングを入力として受信し、かつSELECT列に対応する該列のシーケンス内の列を指し示すポインタネットワークである。
【0028】
条件句予測器280は、出力データベースクエリの出力行をフィルタリングするために使用される条件を指定する出力データベースクエリのWHERE句320を生成する。上記の例では、WHERE句「College=“York”」が出力データベースクエリ内の条件句である。
【0029】
集約分類器260は、もしあれば出力データベースクエリ内の集約演算子330、例えば、例示的な出力データベースクエリ内のCOUNT演算子を生成する。集約演算子は、SQLにより選択された行の要約を生成する。集約分類器260により生成され得る集約演算子の例は、最大(MAX)、最小(MIN)、平均(AVG)、和(SUM)などを含む。集約分類器260は、出力クエリに集約演算子が存在しない場合、NULL集約演算子を生成することができる。
【0030】
SELECT句310、WHERE句320、及び集約演算子330を含む出力データベースクエリの様々なコンポーネントは、クエリ合成モジュール270に入力として提供される。クエリ合成モジュール270は、出力データベースクエリの個々のコンポーネントを組み合わせて、完全な出力データベースクエリ340を生成する。
【0031】
[全体的な処理]
図4〜
図7は、自然言語クエリをデータベースクエリに翻訳するための様々な処理を示す。当業者は、他の実施形態が
図4〜
図7のステップをフローチャートに示される順序と異なる順序で実行できることを認識するであろう。さらに、他の実施形態は、本明細書で説明されるステップと異なる及び/又は追加のステップを含むことができる。特定のモジュールにより実行されるものとして示されるステップは、他のモジュールにより実行されてもよい。
【0032】
図4は、一実施形態による、自然言語クエリをデータベースクエリに翻訳するための全体的な処理を示す。自然言語対データベースクエリ翻訳器140が、入力自然言語クエリを受信する(410)。入力前処理モジュール210が、データベーススキーマからの列名と、入力自然言語クエリと、データベースクエリ言語の語彙、例えば、SELECT、FROM、WHEREなどのSQL言語の様々なキーワードとを連結することにより、トークンのシーケンスを生成する(420)。例えば、式(1)は、列名x
icと、SQL語彙を表すターム(terms)x
sと、入力自然言語クエリを表すタームx
qとを含むトークンのシーケンスを示す。
【数1】
【0033】
式(1)において、シーケンスa及びbの間の連結は[a;b]で表される。さらに、組み合わせられたシーケンスxは、境界を画定するために、近隣のシーケンスの間にセンチネルトークンを含む。例えば、トークン<col>は列名を識別し、トークン<sql>はSQL語彙を表すタームを識別し、トークン<question>は入力自然言語クエリのタームを識別する。
【0034】
入力前処理モジュール210は、トークンのシーケンスの入力表現を生成する(430)。一実施形態において、入力前処理モジュール210は、複数のモデルの各々について1つで、複数の入力表現を生成する。
【0035】
自然言語対データベースクエリ翻訳器140は、複数のニューラル機械学習モデルにアクセスし、各モデルは、出力データベースクエリの部分を生成するように構成される。一実施形態において、自然言語対データベースクエリ翻訳器140は、複数の訓練されたニューラルネットワークに基づくモデルをストレージデバイスからメモリにロードする。自然言語対データベースクエリ翻訳器140は、複数の機械学習に基づくモデルの各々に入力表現を提供する(450)。複数の機械学習に基づくモデルの各々は、データベースクエリの部分を生成する。
【0036】
いくつかの実施形態において、入力前処理モジュール210は、複数の入力表現を生成し、自然言語対データベースクエリ翻訳器140は、各々の機械学習に基づくモデルに異なる入力表現を提供することができる。各々の機械学習に基づくモデルは、データベースクエリの部分を生成し、それをクエリ合成モジュール270に提供する。クエリ合成モジュール270は、データベースクエリの複数の部分を組み合わせてフルのデータベースクエリを生成する(460)。クエリ実行エンジン230が、データベースクエリを実行して結果セットを生成する(470)。
【0037】
[集約分類器]
図5は、一実施形態による、自然言語クエリに基づいて出力データベースクエリの集約演算子を決定する集約分類器の処理を示す。集約分類器260は、入力自然言語クエリで指定された質問のタイプに基づいて、出力データベースクエリの集約演算子を決定する。例えば、集約分類器260は、文字列「いくつの(how many)」を含む入力質問を集約演算子COUNTにマッピングすることができ、集約分類器260は、「何が最も高い」を含む入力質問を集約演算子最大にマッピングすることができ、集約分類器260は、「何が最も小さい」を含む入力質問を集約演算子最小にマッピングすることができる、などである。
【0038】
集約分類器260は、トークンの入力シーケンスの入力表現を決定する(510)。集約分類器260は、入力シーケンス内の各t番目のトークンについて、スカラー注目スコア(scalar attention score)α
tinp=W
inp*h
tencを計算する。したがって、集約分類器260は、スコアのベクトルα
inp=[α
1inp,α
2inp,...]を生成する。集約分類器260は、α
inpベクトルにソフトマックス関数を適用してβ
inp=softmax(α
inp)を決定することにより、スコアのベクトルα
inpを正規化し、入力エンコーディングにわたる分布を生成する。集約分類器260は、入力エンコーディングにわたる分布を生成する。集約分類器260は、入力表現κ
aggを、以下の式で示されるように、正規化されたスコアβ
inpにより重み付けされた入力エンコーディングh
encにわたる和として決定する(510)。
【数2】
【0039】
集約分類器260は、生成された入力表現κ
aggに適用される多層パーセプトロンを含み、例えば、COUNT、MIN、MAX、集約なしを示すNULL演算子など、様々な集約演算に対応するスコアα
aggを生成する。集約分類器260は、生成されたスコアに基づいて、データベースクエリに対する集約演算を識別する(530)。
【0040】
一実施形態において、集約分類器260は、以下の式を使用してα
aggを決定する。
【数3】
【0041】
項W
agg、V
agg、b
agg及びc
aggは、多層パーセプトロンに対応する重みを表す。集約分類器260は、ソフトマックス関数を適用して、可能な集約演算のセットにわたる分布β
agg=softmax(α
agg)を取得する。集約分類器は、交差エントロピー損失L
aggに基づいて訓練される。
【0042】
[結果列予測器]
SELECT句は、選択列又は結果列とも呼ばれる。結果列予測器270は、データベーススキーマ内のテーブル列及び自然言語クエリに基づいて選択列を決定する。例えば、自然言語クエリ「いくつのCFLチームが・・・」を所与として、結果列予測器270は、選択列がCFLDraftテーブルからのCFL_Teams列を含むことを決定する。したがって、結果列予測器270は、SELECT列予測の問題をマッチング問題として解決する。一実施形態において、結果列予測器270は、ポインタを使用してSELECT列を識別する。列表現
のリスト及び自然言語クエリの表
現を所与として、結果列予測器270は、自然言語クエリに最もマッチする列を選択する。
【0043】
図6は、一実施形態による、自然言語クエリに基づいて出力データベースクエリのSELECT句の列を決定する結果列予測器により実行される処理を示す。結果列予測器270は、各列名をLSTM(長短期記憶ネットワーク(long short term memory network))でエンコードすること(610)により、列に対する入力表現を使用する。入力前処理モジュール210は、以下の式を使用して、特定の列jの入力表現e
cjを生成する(620)。
【数4】
【0044】
この式において、h
cj,tはj番目の列のt番目のエンコーダ状態を表し、embは埋め込みを返す関数である。入力前処理モジュール210は、最後のエンコーダ状態を、e
cj、列jの表現であると見なす。
【0045】
入力前処理モジュール210は、κ
aggについて上述したものと同様のアーキテクチャを使用して、自然言語クエリκ
selに対する表現を構築する。結果列予測器270は、入力表現を条件として列表現にわたり多層パーセプトロンを適用して、以下の式を使用して各列jについてスコアを計算する(630)。
【数5】
【0046】
この式において、W
sel、V
sel、及びV
cは、多層パーセプトロンの重みである。結果列予測器270は、スコアをソフトマックス関数で正規化して、可能なSELECT列にわたる分布β
sel=softmax(α
sel)を生成する(640)。上記のCFLDraftテーブルの例では、分布は、列Pick_number、CFL_Team、Player、Position、及びCollegeにわたる。結果列予測器270は、正規化されたスコアに基づいて、出力データベースクエリの結果列を選択する(650)。集約分類器は、交差エントロピー損失L
selに基づいて訓練される。
【0047】
[条件句予測器]
一実施形態において、条件句予測器は、ポインタデコーダを使用してWHERE句を生成する。しかしながら、クエリのWHERE条件は入れ替えられる可能性があり、クエリは同じ結果を生成する。例えば、自然言語クエリ「どの男性が18歳より上か(which males are older than 18)」を所与として、出力データベースクエリは、「SELECT name FROM insurance WHERE age>18 AND gender=“male”」又は「SELECT name FROM insurance WHERE gender=“male” AND age>18」のいずれかであり得る。2つのデータベースクエリが、2つのクエリ文字列間の文字列マッチに基づきマッチしない場合でも、双方のデータベースクエリが正しい実行結果を取得する。第1のデータベースクエリが、ニューラルネットワークを訓練する間にグラウンドトルースとして提供され、交差エントロピー損失が、訓練を監督する(supervise)ために使用される場合、第2のデータベースクエリは、それが文字列マッチに基づき第1のデータベースクエリにマッチしないため、誤ってペナルティを課される。ゆえに、実施形態は、強化学習を適用してポリシーを学習し、データベースクエリの実行結果の期待された正確さを直接最適化する。
【0048】
図7は、一実施形態による、出力データベースクエリの条件句を決定する条件句予測器を訓練する処理を示す。条件句予測器280は、入力として自然言語クエリ710及びデータベーススキーマ720を受信して、データベースクエリ730を生成する。条件句予測器280は、データベース160を使用した実行のためにデータベースクエリを送信して、報酬メトリックを取得する。クエリ実行エンジン230は、生成されたデータベースクエリ730を実行して、予測クエリ結果750を取得する。コンピューティングシステム130は、グラウンドトルースクエリ結果750を訓練データストア215に記憶する。条件句予測器280は、予測クエリ結果750をグラウンドトルースクエリ結果750と比較して、報酬750を決定する。報酬は、条件句予測器280を訓練するためのフィードバックとして、条件句予測器280に入力として提供される。
【0049】
WHERE句内の条件句予測器280により生成されるトークンのシーケンスは、y=[y
1,y
2,...,y
T]で表される。q(y)がモデルにより生成されたクエリを表し、q
gが自然言語クエリに対応するグラウンドトルースデータベースクエリを表すとする。条件句予測器280は、報酬メトリックR(q(y),q
g)として以下の式を使用する。
【数6】
【0050】
したがって、条件句予測器280は、生成されたデータベースクエリの実行の結果がグラウンドトルースとして提供される期待された結果にマッチする場合、正の報酬を割り当てる。条件句予測器280は、生成されたデータベースクエリの実行の結果がグラウンドトルースとして提供される期待された結果にマッチするのに失敗した場合、又は生成されたデータベースクエリが有効なデータベースクエリでない場合、負の報酬を割り当てる。
【0051】
条件句予測器280は、損失L
wheを、可能なWHERE句にわたる負の期待された報酬として決定する。訓練モジュールは、勾配降下(gradient descent)を使用して条件句予測器280を訓練して、目的関数L=L
agg+L
sel+L
wheを最小化する。したがって、条件句予測器280は、SELECT列を予測する際の交差エントロピー損失からの、集約演算を予測する際の交差エントロピー損失からの、及び条件句のためのポリシー学習からの勾配の重み付け和として、総勾配を決定する。
【0052】
自然言語対データベースクエリ翻訳器140における構造の組み込みは、生成される可能性のある無効なデータベースクエリを削減する。大量の無効なクエリは、列名から結果として生じ、生成されたクエリは、テーブルに存在しない選択列を参照する。これは、列名が多くのトークン、例えば4つのトークンを有する「マイル(km)」などを含むとき、特に役立つ。集約のために分類器を導入することも、誤り率を削減する。集約分類器の使用は、COUNT演算子を予測するための適合率及び再現率を向上させる。条件句を生成するための表現学習の使用は、グラウンドトルースと異なって順序づけられ得る、より高品質のWHERE句の生成を結果としてもたらす。ポリシーに基づく表現学習での訓練は、条件の順序がグラウンドトルースクエリと異なる場合でも、正しい結果をもたらす。
【0053】
[コンピュータアーキテクチャ]
図8は、
図1のクライアントデバイス及び/又はコンピューティングシステムを実現するための一例示的なコンピュータを示す高レベルブロック図である。コンピュータ800は、チップセット804に結合された少なくとも1つのプロセッサ802を含む。チップセット804は、メモリコントローラハブ820及び入力/出力(I/O)コントローラハブ822を含む。メモリ806及びグラフィックスアダプタ812がメモリコントローラハブ820に結合され、ディスプレイ818がグラフィックスアダプタ812に結合される。ストレージデバイス808、入力デバイス814、及びネットワークアダプタ816が、I/Oコントローラハブ822に結合される。コンピュータ800の他の実施形態は、異なるアーキテクチャを有する。
【0054】
ストレージデバイス808は、ハードドライブ、コンパクトディスク読取専用メモリ(CD‐ROM)、DVD、又はソリッドステートメモリデバイスなどの、非一時的コンピュータ読取可能記憶媒体である。メモリ806は、プロセッサ802により使用される命令及びデータを保持する。入力インターフェース814は、タッチスクリーンインターフェース、マウス、トラックボール、若しくは他タイプのポインティングデバイス、キーボード、又はこれらの何らかの組み合わせであり、コンピュータ800にデータを入力するために使用される。いくつかの実施形態において、コンピュータ800は、ユーザからのジェスチャを介して入力インターフェース814から入力(例えば、コマンド)を受け取るように構成されてもよい。グラフィックスアダプタ812は、画像及び他の情報をディスプレイ818に表示する。ネットワークアダプタ816は、コンピュータ800を1つ以上のコンピュータネットワークに結合する。
【0055】
コンピュータ800は、本明細書で説明される機能性を提供するコンピュータプログラムモジュールを実行するように適合される。本明細書で用いられるとき、用語「モジュール」は、指定された機能性を提供するために使用されるコンピュータプログラム論理を参照する。ゆえに、モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実現できる。一実施形態において、プログラムモジュールは、ストレージデバイス808に記憶され、メモリ806にロードされ、プロセッサ802により実行される。
【0056】
図1のエンティティにより使用されるコンピュータ800のタイプは、実施形態及びエンティティにより必要とされる処理能力に依存して変わってもよい。コンピュータ800は、グラフィックスアダプタ812及びディスプレイ818など、上述のコンポーネントのうちいくつかがなくてもよい。例えば、コンピューティングシステム130は、サーバファーム内などのネットワークを通して通信する複数のブレードサーバから形成されてもよい。
【0057】
本出願の対象事項の実現は、特に、以下の例1〜21であってもよい。
〔例1〕
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信するステップと、
上記入力自然言語クエリのターム、
上記データベーススキーマの列のセット、及び
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成するステップと、
1つ以上の入力表現を生成するステップであり、各入力表現は、上記トークンのシーケンスをエンコードすることにより取得される、ステップと、
複数の機械学習に基づくモデルにアクセスするステップであり、各モデルは、上記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、ステップと、
上記複数のモデルの各々について、上記モデルを入力表現に基づいて実行して上記データベースクエリの部分を生成するステップと、
上記データベースクエリの上記生成された部分を組み合わせて上記データベースクエリを取得するステップと、
上記データベースクエリを実行して結果セットを取得するステップと、
を含む方法。
〔例2〕
上記入力自然言語クエリは、クライアントデバイスから受信され、当該方法は、上記結果セットを上記クライアントデバイスに送信するステップをさらに含む、例1に記載の方法。
〔例3〕
上記複数のモデルは、上記データベースクエリ内の集約演算子を決定する集約分類器モデルを含み、上記集約分類器モデルは、多層パーセプトロンを含む、例1に記載の方法。
〔例4〕
上記複数のモデルは、上記データベースクエリの結果列を決定する結果列予測器モデルを含み、上記結果列予測器モデルは、多層パーセプトロンを含む、例1に記載の方法。
〔例5〕
上記複数のモデルは、上記データベースクエリの条件句を決定する条件句予測器モデルを含み、上記条件句予測器モデルは、強化学習に基づく、例1に記載の方法。
〔例6〕
グラウンドトルースデータベースクエリに基づく結果セットを受信するステップと、
上記生成されたクエリから取得された結果と上記グラウンドトルースクエリから取得された結果との比較に基づいて報酬値を決定するステップと、
上記報酬値に基づいて上記条件句予測器モデルの重みを調整するステップと、
をさらに含む例5に記載の方法。
〔例7〕
上記シーケンスの各トークンに対応する列エンコーディングを決定するステップと、
上記入力シーケンスの各トークンについてのスカラー注目スコアを含むベクトルを決定するステップと、
上記ベクトルをソフトマックス関数を使用して正規化するステップと、
上記入力表現を、対応する正規化されたスコアにより重み付けされた上記列エンコーディングの和として決定するステップと、
をさらに含む例5に記載の方法。
〔例8〕
上記複数のモデルを勾配降下を使用して訓練して、上記複数のモデルの各々の結果に基づいて損失を表す目的関数を最小化するステップ
をさらに含む例1に記載の方法。
〔例9〕
上記1つ以上の入力表現を生成するステップは、入力表現κ
aggを、
トークンのシーケンス内の各t番目のトークンについて、スカラー注目スコアα
int=W
inph
enctを計算し、h
enctは、上記入力シーケンス内のt番目のワードに対応するエンコーダの状態であり、
上記スコアのベクトルα
in=[α
inp1,α
inp2,・・・]を正規化して、上記トークンのシーケンス内の上記トークンにわたる分布を生成し、
上記入力表現κ
aggを、
【数7】
として取得し、β
agg=softmax(α
agg)及びα
agg=W
aggtanh(V
aggκ
agg+b
agg)+c
aggである
ことにより計算するステップを含む、例1乃至8のうちいずれか1項に記載の方法。
〔例10〕
1つ以上の列名を有する上記SQLクエリのselect句を定式化する(formulates)ポインタネットワークで長短期記憶(LSTM)を使用するステップであり、
列表現
のリスト及び質問表
現を所与として、質問に最もマッチする列を選択することを含み、上記列表現のリストは、各列名をLSTMでエンコードすることにより取得され、特定の列jの表現e
cjは、
【数8】
により与えられる、ステップ、
をさらに含む例1乃至9のうちいずれか1項に記載の方法。
〔例11〕
強化学習を使用して、データベースに対して上記生成されたSQLクエリを実行することにより上記SQLクエリのwhere条件を定式化して、
【数9】
として定義される報酬R(q(y),q
g)を取得するステップであり、q(y)は、上記モデルにより生成されたクエリを表し、q
gは、上記入力自然言語クエリに対応するグラウンドトルースクエリを表す、ステップ
をさらに含む例1乃至10のうちいずれか1項に記載の方法。
〔例12〕
自然言語要求を処理してSQLクエリの部分を生成するステップであり、
1つ以上の列名を有する上記SQLクエリのselect句を定式化するポインタネットワークで長短期記憶(LSTM)を使用することと、
強化学習により訓練された拡大ポインタデコーダ(augmented pointer decoder)を使用して上記SQLクエリのwhere条件を定式化するステップと、
を含む方法。
〔例13〕
多層パーセプトロンを使用して、指定された条件下で選択された列に適用可能な上記SQLクエリの集約演算を決定するステップ、
をさらに含む例12に記載の方法。
〔例14〕
1つ以上の列名を有する上記SQLクエリのselect句を定式化するポインタネットワークで長短期記憶(LSTM)を使用することは、
列表現
のリスト及び質問表
現を所与として、質問に最もマッチする列を選択すること
を含む、例12又は13に記載の方法。
〔例15〕
上記列表現のリストは、各列名をLSTMでエンコードすることにより取得され、特定の列jの表現e
cjは、
【数10】
により与えられる、例14に記載の方法。
〔例16〕
上記1つ以上の入力表現を生成することは、入力表現κ
aggを、
トークンのシーケンス内の各t番目のトークンについて、スカラー注目スコアα
int=W
inph
enctを計算し、h
enctは、上記入力シーケンス内のt番目のワードに対応するエンコーダの状態であり、
上記スコアのベクトルα
in=[α
inp1,α
inp2,・・・]を正規化して、上記トークンのシーケンス内の上記トークンにわたる分布を生成し、
上記入力表現κ
aggを、
【数11】
として取得し、β
agg=softmax(α
agg)及びα
agg=W
aggtanh(V
aggκ
agg+b
agg)+c
aggである
ことにより計算することを含む、例14乃至15のうちいずれか1項に記載の方法。
〔例17〕
強化学習を使用して、データベースに対して上記生成されたSQLクエリを実行することにより上記SQLクエリのwhere条件を定式化して、
【数12】
として定義される報酬R(q(y),q
g)を取得するステップであり、q(y)は、上記モデルにより生成されたクエリを表し、q
gは、上記入力自然言語クエリに対応するグラウンドトルースクエリを表す、ステップ
をさらに含む例14乃至16のうちいずれか1項に記載の方法。
〔例18〕
1つ以上のプロセッサにより実行されたときに上記1つ以上のプロセッサに例1乃至17のうちいずれか1項に記載のステップを実行させるコンピュータ実行可能コードを含む非一時的コンピュータ読取可能記憶媒体。
〔例19〕
リカレントニューラルネットワーク(RNN)アーキテクチャを生成するコンピュータシステムであって、
1つ以上のコンピュータプロセッサと、
1つ以上のコンピュータにより実行されたときに上記1つ以上のコンピュータに請求項18に記載の方法のステップを実行させるコンピュータ実行可能コードを含む非一時的コンピュータ読取可能記憶媒体と、
を含むコンピュータシステム。
〔例20〕
1つ以上のコンピュータプロセッサと少なくとも1つの非一時的記憶媒体とを含むコンピュータシステムであって、
データベーススキーマを使用して記憶されたデータに基づく入力自然言語クエリを受信する手段と、
上記入力自然言語クエリのターム、
上記データベーススキーマの列のセット、及び、
データベースクエリ言語の語彙
を含む複数のタームからトークンのシーケンスを生成する手段と、
1つ以上の入力表現を生成する手段であり、各入力表現は、上記トークンのシーケンスをエンコードすることにより取得される、手段と、
複数の機械学習に基づくモデルにアクセスする手段であり、各モデルは、上記入力自然言語クエリに対応するデータベースクエリの部分を予測するように構成される、手段と、
上記複数のモデルの各々について、上記モデルを入力表現に基づいて実行して上記データベースクエリの部分を生成する手段と、
上記データベースクエリの上記生成された部分を組み合わせて上記データベースクエリを取得する手段と、
上記データベースクエリを実行して結果セットを取得する手段と、
をさらに含むコンピュータシステム。
〔例21〕
1つ以上のコンピュータプロセッサと少なくとも1つの非一時的記憶媒体とを含むコンピュータシステムであって、
自然言語要求を処理してSQLクエリの部分を生成する手段であり、
1つ以上の列名を有する上記SQLクエリのselect句を定式化するポインタネットワークで長短期記憶(LSTM)を使用する手段と、
強化学習により訓練された拡大ポインタデコーダを使用して上記SQLクエリのwhere条件を定式化する手段と、
を含む、手段
をさらに含むコンピュータシステム。
【0058】
[代替的な実施形態]
開示された実施形態は、関係データベースに基づいており、SQLを使用して例示されているが、開示された技術は、他のタイプのデータベース、例えば、オブジェクトベースのデータベース、オブジェクト関係データベースなどに適用可能である。開示された技術は、特定タイプのデータベースに使用されるデータベースクエリ言語が結果列、集約句、又は条件句に相当する機能をサポートする場合、適用可能である。例えば、データベースクエリ言語が条件句をサポートする場合、条件句予測器を使用して、入力自然言語クエリに基づいて出力データベースクエリの条件句を予測することができる。
【0059】
本発明の図及び説明は、明確さの目的で、典型的な分散システムに見られる他の多くの要素を排除すると同時に、本発明の明確な理解に関連する要素を例示するよう簡略化されていることを理解されたい。当業者は、他の要素及び/又はステップが実施形態を実現する際に望ましく、かつ/あるいは必要とされることを認識し得る。しかしながら、こうした要素及びステップは当該分野において良く知られているため、かつそれらは実施形態のより良い理解を促進しないため、こうした要素及びステップの議論は本明細書で提供されない。本明細書の開示は、当業者に知られるこうした要素及び方法に対するすべてのこうした変形及び修正に向けられる。
【0060】
上記説明のいくつかの部分は、実施形態を、情報に対する演算のアルゴリズム及びシンボル表現の観点から説明する。これらのアルゴリズム的説明及び表現は、データ処理分野の当業者により一般的に使用され、その作用の実体を他の当業者に効果的に伝達する。これらの動作は、機能的、計算的、又は論理的に説明されているが、コンピュータプログラム又は同等の電気回路、マイクロコードなどにより実現されるものと理解される。さらに、これらの動作の配置を一般性を損なうことなくモジュールとして参照することは、時に便利であることも証明されている。説明した動作及びその関連モジュールは、ソフトウェア、ファームウェア、ハードウェア、又はこれらの任意の組み合わせで具体化されてもよい。
【0061】
本明細書で用いられるとき、「1つの実施形態」又は「一実施形態」へのいずれの参照も、実施形態に関連して説明された特定の要素、特徴、構造、又は特性が少なくとも1つの実施形態に含まれることを意味する。明細書中の様々な箇所におけるフレーズ「1つの実施形態において」の出現は、必ずしもすべてが同じ実施形態を参照しているわけではない。
【0062】
いくつかの実施形態は、表現「結合された」及び「接続された」をその派生形と共に使用して説明され得る。これらの用語は、互いに同義語として意図されてはいないことを理解されたい。例えば、いくつかの実施形態は、用語「接続された」を使用して説明されて、2つ以上の要素が互いに直接物理的又は電気的に接触していることを示し得る。別の例において、いくつかの実施形態は、用語「結合された」を使用して説明されて、2つ以上の要素が直接物理的又は電気的に接触していることを示し得る。しかしながら、用語「結合された」は、2つ以上の要素が互いに直接接触していないが、なお依然として互いに協調又は対話することをさらに意味し得る。実施形態は、この文脈において限定されない。
【0063】
本明細書で用いられるとき、用語「含む」、「含んでいる」、「含める」、「含めている」、「有する」、「有している」、又はこれらの任意の他の変形は、非排他的な包含をカバーすることが意図される。例えば、要素のリストを含む処理、方法、物品、又は装置は、必ずしもこれらの要素のみに限定されず、明確に列挙されていないか又はこうした処理、方法、物品、若しくは装置に固有の他の要素を含んでもよい。さらに、逆のことを明確に示されない限り、「又は」は、排他的ORでなく包括的ORを参照する。例えば、条件A又はBは、Aが真であり(又は存在し)Bが偽である(又は存在しない)と、Aが偽であり(又は存在せず)Bが真である(又は存在する)と、A及びBの双方が真である(又は存在する)と、のうちいずれか1つにより満たされる。
【0064】
さらに、一の(“a”又は“an”)の使用は、本明細書における実施形態の要素及びコンポーネントを説明するために採用されている。これは単に、簡便さのため、及び本発明の一般的な意味を与えるために行われる。本説明は、1つ又は少なくとも1つを含むように読まれるべきであり、その他を意図されることが明らかでない限り、単数形は複数形も含む。
【0065】
本開示を読むと、当業者は、本明細書で開示された原理を通して、歪み領域を使用してチャートを表示するシステム及び処理のためのなおさらなる代替的な構造及び機能設計を理解するであろう。ゆえに、特定の実施形態及び適用が例示され説明されたが、開示された実施形態は、本明細書に開示された正確な構造及びコンポーネントに限定されないことが理解されるべきである。当業者に明らかであろう様々な修正、変更及び変形が、別記の特許請求の範囲に定義された主旨及び範囲から逸脱することなく、本明細書に開示された方法及び装置の配置、動作、及び詳細において行われ得る。
【0066】
[付録]
以下の「Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement Learning」と題された文献は、本付録の一部であり、ゆえに本出願の開示の一部である「Seq2SQL」を開示しており、「Seq2SQL」、自然言語の質問を対応するSQLクエリに翻訳するためのディープニューラルネットワークを開示している。Seq2SQLは、SQLクエリの構造を活用して、生成されたクエリの出力空間を有意に削減する。Seq2SQLは、SQLクエリの構造を活用する3つのコンポーネントを含み、生成されたクエリの出力空間を大幅に削減する。詳細には、Seq2SQLは、ポインタデコーダ及びポリシー勾配を使用してクエリの条件を生成し、これは、順序づけられていない性質に起因して交差エントロピー損失を使用した最適化に適さないことを我々は示す。Seq2SQLは、交差エントロピー損失とデータベースに対するライブのクエリ実行からの強化学習報酬とを組み合わせた混合された目的を使用して訓練される。これらの特性は、モデルがクエリ生成において一層向上した結果を達成することを可能にする。