mirror of
https://github.com/wassname/keras-language-modeling.git
synced 2026-09-10 12:15:18 +08:00
Merge branch 'master' of https://github.com/codekansas/keras-language-modeling
This commit is contained in:
@@ -2,12 +2,34 @@
|
||||
|
||||
Some code for doing language modeling with Keras, in particular for question-answering tasks. I wrote a very long blog post that explains how a lot of this works, which can be found [here](http://benjaminbolte.com/blog/2016/keras-language-modeling.html).
|
||||
|
||||
### Getting Started
|
||||
|
||||
````
|
||||
# Install Keras (may also need dependencies)
|
||||
git clone https://github.com/fchollet/keras
|
||||
cd keras
|
||||
sudo python setup.py install
|
||||
|
||||
# Clone InsuranceQA dataset
|
||||
git clone https://github.com/codekansas/insurance_qa_python
|
||||
export INSURANCE_QA=$(pwd)/insurance_qa_python
|
||||
|
||||
# Run insurance_qa_eval.py
|
||||
cd keras-language-modeling/
|
||||
python insurance_qa_eval.py
|
||||
````
|
||||
|
||||
I've been working on making these models available out-of-the-box. You need to install the Git branch of Keras (and maybe make some modifications) in order to run some of these models; the Keras project can be found [here](https://github.com/fchollet/keras).
|
||||
|
||||
The runnable program is `insurance_qa_eval.py`. This will create a `models/` directory which will store a history of the model's weights as it is created. You need to set an environment variable to tell it where the INSURANCE_QA dataset is.
|
||||
|
||||
Finally, my setup (which I think is pretty common) is to have an SSD with my operating system, and an HDD with larger data files. So I would recommend creating a `models/` symlink from the project directory to somewhere in your HDD, if you have a similar setup.
|
||||
|
||||
### Stuff that might be of interest
|
||||
|
||||
- `attention_lstm.py`: Attentional LSTM, based on one of the papers referenced in the blog post and others. One application used it for [image captioning](http://arxiv.org/pdf/1502.03044.pdf). It is initialized with an attention vector which provides the attention component for the neural network.
|
||||
- `insurance_qa_eval.py`: Evaluation framework for the InsuranceQA dataset. To get this working, clone the [data repository](https://github.com/codekansas/insurance_qa_python) and set the `INSURANCE_QA` environment variable to the cloned repository. Changing `config` will adjust how the model is trained.
|
||||
- `keras-language-model.py`: The `LanguageModel` class uses the `config` settings to generate a training model and a testing model. The model can be trained by passing a question vector, a ground truth answer vector, and a bad answer vector to `fit`. Then `predict` calculates the similarity between a question and answer. Override the `build` method with whatever language model you want to get a trainable model. Examples are provided at the bottom, including the `EmbeddingModel`, `ConvolutionModel`, and `RecurrentModel`.
|
||||
- `word_embeddings.py`: A Word2Vec layer that uses the embeddings generated by Gensim's word2vec model to provide vectors in place of the Keras `Embedding` layer, which could help improve convergence, since fewer parameters need to be learned. Note that this requires generating a separate file with the word2vec weights, so it doesn't fit in very nicely with the Keras architecture.
|
||||
|
||||
### Additionally
|
||||
|
||||
|
||||
Reference in New Issue
Block a user