Giter Club home page Giter Club logo

nl2sql's Introduction

nl2sql

Learning a Neural Semantic Parser with User Feedback

Setup

Install torch libraries

luarocks install hdf5

Install MySQL libraries

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-mysqldb

Install required python packages

pip install python-gflags MySQL-python futures pattern commentjson numpy h5py

Download word2vec embeddings and replace word2vec_sample.txt. Its is a tab separated list of the words followed by 300 dim embeddings

download from https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing
convert the bin file to tsv: see https://gist.github.com/dav009/10a742de43246210f3ba
Note: This script outputs a comma separated list. Change that to tabs.

Unzip ppdb file

cd data/ppdb
gunzip ppdb-l-combined.gz

Setup databases for computing results

Databases are provided as a mysql dump file

mysql -u root -ptmppassword geo < data/geo/geo_mysql_dump.db
mysql -u root -ptmppassword atis < data/atis/atis_mysql_dump.db

Export DB environment variables

export DBHOST="my.database.host"
export DBUSER="me"
export DBPASSWD="secret"

GeoQuery

Train geo

cd src
./train_geo.sh

Predictions for each epoch on the development set are now in run_geo/preds/

Results on the dev set are summarized in run_geo.summary

Test geo. Pick a trained model based on the run_geo.summary file.

$ ./train_geo.sh test run_geo_1001/s2s-model_epoch50.00_1.42.t7
loading run_geo_1001/s2s-model_epoch50.00_1.42.t7...
280.0
Correct=231 , Total=280.0 , Percent=82.5

ATIS

Train ATIS

cd src
./train_atis.sh

Predictions for each epoch on the development set are now in run_atis/preds/

Results on the dev set are summarized in run_atis.summary

Test atis. Pick a trained model based on the run_atis.summary file.

$ ./train_atis.sh test run_atis/s2s-model_epoch60.00_1.13.t7
loading run_atis/s2s-model_epoch60.00_1.13.t7...
448.0
Correct=355 , Total=448.0 , Percent=79.2410714286

SCHOLAR

Download the dataset from:

https://drive.google.com/file/d/0Bw5kFkY8RRXYRXdYYlhfdXRlTVk/view?usp=sharing

Load it

mysql -u root -ptmppassword scholar < data/scholar/s2_mysql_dump.db

Train SCHOLAR

cd src
./train_scholar.sh

Predictions for each epoch on the development set are now in run_scholar/preds/

Results on the dev set are summarized in run_scholar.summary

Test scholar. Pick a trained model based on the run_scholar.summary file.

$ ./train_scholar.sh test run_scholar/s2s-model_epoch50.00_1.60.t7
loading run_scholar/s2s-model_epoch50.00_1.60.t7...
218.0
Correct=145 , Total=218.0 , Percent=66.5137614679

Run Simulated Interactive Experiments

python geo_interactive_batch.py --ppscale 3 --init_grammar_file ../data/grammar_empty.sql --data_dir ../data/geo/tmp_no_tem --models_dir ../data/geo/tmp_no_tem/models --db_host my.db.host --db_user me --db_pass my.secret.password

python atis_interactive_batch.py --ppscale 3 --init_grammar_file ../data/grammar_empty_atis.sql --data_dir ../data/atis/tmp_no_tem --models_dir ../data/atis/tmp_no_tem/models --host my.db.host --user me --passwd my.secret.password

Useful SQL commands

Make MySQL ignore spaces after function names
SET sql_mode='IGNORE_SPACE';

Check number of threads connection to the database server
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

nl2sql's People

Contributors

sriniiyer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

nl2sql's Issues

the provenance of Scholar database

I would like to know more about where your academic database originates from. The paper does not provide a lot of important on this matter, saying just "an academic database". Would it be possible to share more details?

ATIS partition sizes

In the paper and in other ATIS version, the total dataset size is 5418 utterances split as 4473 Training examples, 497 development examples and 448 test examples.

Looking at /data/atis/{train,dev,test}.{nl,sql} in this repo, I've counted 4379 training examples, 491 development examples and 448 test examples totaling 5318 examples.

Apologies if I've missed this in the docs or paper, but can you explain where 100 examples in the train+dev set have gone? Thanks

Please add licence

Please add a LICENCE file to your repo.

I would like to know if I can copy some parts of this repo into my own code . Specifically, I am considering copying https://github.com/sriniiyer/nl2sql/blob/master/data/geo/geo_dev.sql into my project https://github.com/klahnakoski/mo-sql-parsing this would like something like:

# snagged from https://github.com/sriniiyer/nl2sql/blob/652edf4814dce2cddf1661e05a18602161c65e8f/data/geo/geo_dev.sql under the <something licence>

SELECT city.city_name FROM city WHERE city.state_name='arizona' AND city.population=(SELECT max(city.population) FROM city WHERE city.state_name='arizona');
SELECT river.river_name FROM river WHERE river.traverse IN (SELECT city.state_name FROM city WHERE city.population = (SELECT max(city.population) FROM city));
SELECT state.area FROM state WHERE state.state_name='texas';
SELECT state.population FROM state WHERE state.state_name='washington';
SELECT state.state_name FROM state WHERE state.population=(SELECT min(state.population) FROM state);
SELECT city.city_name FROM city WHERE city.state_name='virginia';
SELECT state.area FROM state WHERE state.state_name='california';
...

Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.