リクルートはA3RT(アート)でいくつかのAPIを公開しています。
SQL Suggest APIはその一つです。
質問文に対応したSQL文を返してくれます。
ところで、「どこでそんなもんを使うんですか!?」
こういう感じで使おうと思います。
音声認識でDBを操作したい
Google Assistantなどで答えが返ってこない場合にDBから情報を探すとか、そもそも認識をテキストのみでもらって、それを使ってDBから情報を取得するような場合です。
SQL文を書くのが苦手とか面倒とかの場合も含む。
リクルートによれば
「SQL Suggest API は Seq2Seq の応用タスクであり、機械翻訳の分野で発展した技術です。
質問文とSQLの組み合わせを大量に学習させることで、未知の質問文に対してもSQLを予測することができる学習器です。
汎用的な学習器ではなく、テーブル定義にあわせてデータセットを準備することで高い精度の学習器が獲得できます。」
、だそうです。
使ってみます。
SQL Suggest APIを使う場合、まずAPI KEYを発行してもらいます(無料)。
リクルート公式では、cURLの構文になっています(後で、これをPythonに書き直します)。
お天気データベースを使うサンプルが用意されています。それ以外のデータベースの場合は?
独自データセットを用意して学習させる必要があるみたいですが、どうやればいいのか分かりません(^^)。今後の対応を待ちましょう。
ただSAMPLE REQUESTでSQLの基本構文は返してくれるので、これを使うことにします。
データベースのイメージは、お天気テーブルに日時・場所・気温・降水量といったカラムがあるという感じ。
こういうサンプル、「今日の東京の天気は」という質問を投げてみます。
AAAAのところがAPI KEYになります。
model_idには学習させたモデルのIDが入るのですが、お天気モデルしか今はないのでdefault になっています。
curl -X POST -d apikey=AAAA -d model_id=default –data-urlencode text=’今日の東京の天気は’ https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/predict
コマンドラインインターフェース(WindowsならDOSプロンプト、UNIX系ならターミナル)を使います。
赤線がSQLです。
質問ー>「大阪の昨日の降水量の合計は」
この質問をPythonでやってみます。
KEYのAAAAのところは書き換えてください。
1 2 3 4 5 6 7 8 9 10 11 12 |
import requests data = { 'apikey': 'AAAA', 'model_id': 'default', 'text': '大阪の昨日の降水量の合計は' } response = requests.post('https://api.a3rt.recruit-tech.co.jp/sql_suggest/v1/predict', data=data) print(response.text) |
seq2seqモデルはチャットボットや自動翻訳でよく使われるアルゴリズムのようです。
ただ、膨大なコーパスがデータセットに求められるので、独自の学習をどうしたものか思案中。
最新(2020/02/28)のNews
自然言語からSQLを自動生成するDeep Learning技術
Leave a Reply