This is a CPU-based implementation for our paper Realtime query completion via deep language models,
which is capable of generating 10 query completion in 16 ms.
To build it, please first install the following
- Intel Math Kernel Library (MKL) (https://software.intel.com/en-us/mkl)
- Please update the MKLROOT in our Makefile if it is not installed in (/opt/intel/mkl)
To play with the query completion, we pre-trained a model from the AOL dataset (model.c, model.h). The completion program can be compiled by
$ make
The generated qcomp program is soft-linked to different entries (stocsearch, beamsearch, omnisearch, trielookup).
To play with our omni-completion model, please use
$ omnisearch
and type in any prefix, and press enter.
To train the model, please first install the following python dependencies:
- Keras/Theanos/Numpy
- The dependencies can be obtained by $pip install -r requirements.txt
You will also need to download the AOL data frm the Internet and save it in aol_raw.txt.
Our program qcomp.py is again soft-linked to different entries (parse, train, dump).
It's quite short so please take a look before training.
First, create the parsed data by
./parse aol_raw.txt > aol_parsed.txt
Note that the aol_parsed.txt has the following format
TIMESTAMP QUERY PREFIX MD5_OF_PREFIX
Then, we will sort our data by different input assumption
# sort by md5 of prefix, or the timestamp
sort --key 4 -t$'\t' --parallel=8 aol_parsed.txt > sorted.txt
# sort --key 1 -t$'\t' -g --parallel=8 aol_parsed.txt > sorted.txt
The last 1% of sorted.txt will be used in testing. Now, we can run the training and evaluation using
bash ./run_eval.bash