Git Product home page Git Product logo

hbmp's Introduction

Sentence Embeddings in NLI with Iterative Refinement Encoders

Aarne Talman, Anssi Yli-Jyrä and Jörg Tiedemann. 2019. Sentence Embeddings in NLI with Iterative Refinement Encoders. Natural Language Engineering 25 (4). 467-482. [preprint]

Abstract: Sentence-level representations are necessary for various NLP tasks. Recurrent neural networks have proven to be very effective in learning distributed representations and can be trained efficiently on natural language inference tasks. We build on top of one such model and propose a hierarchy of BiLSTM and max pooling layers that implements an iterative refinement strategy and yields state of the art results on the SciTail dataset as well as strong results for SNLI and MultiNLI. We can show that the sentence embeddings learned in this way can be utilized in a wide variety of transfer learning tasks, outperforming InferSent on 7 out of 10 and SkipThought on 8 out of 9 SentEval sentence embedding evaluation tasks. Furthermore, our model beats the InferSent model in 8 out of 10 recently published SentEval probing tasks designed to evaluate sentence embeddings' ability to capture some of the important linguistic properties of sentences.

Key Results

Key NLI results

  • SNLI: 86.6% (600D model)
  • SciTail: 86.0% (600D model)

SentEval results

Results for the SentEval sentence embedding evaluation library.

Model MR CR SUBJ MPQA SST TREC MRPC SICK-R SICK-E STS14
InferSent 81.1 86.3 92.4 90.2 84.6 88.2 76.2/83.1 0.884 86.3 .70/.67
SkipThought 79.4 83.1 93.7 89.3 82.9 88.4 - 0.858 79.5 .44/.45
600D HBMP 81.5 86.4 92.7 89.8 83.6 86.4 74.6/82.0 0.876 85.3 .70/.66
1200D HBMP 81.7 87.0 93.7 90.3 84.0 88.8 76.7/83.4 0.876 84.7 .71/.68

SentEval probing task results

Model SentLen WC TreeDepth TopConst BShift Tense SubjNum ObjNum SOMO CoordInv
InferSent 71.7 87.3 41.6 70.5 65.1 86.7 80.7 80.3 62.1 66.8
600D HBMP 75.9 84.1 42.9 76.6 64.3 86.2 83.7 79.3 58.9 68.5
1200D HBMP 75.0 85.3 43.8 77.2 65.6 88.0 87.0 81.8 59.0 70.8

Instructions

To replicate the results of our paper, follow the steps below.

Install dependencies

The following dependencies are required (versions used in brackets):

  • Python (3.5.3)
  • Pytorch (0.3.1)
  • Numpy (1.14.3)
  • Torchtext (for preprocessing) (0.2.1)
  • SpaCy (for tokenization) (2.0.11)

For SpaCy you need to download the English model

python -m spacy download en

Download and prepare the datasets

./download_data.sh

This will download the needed datasets and word embeddings, including:

Train and test HBMP

Run the train_hbmp.sh script to reproduce the NLI results for the HBMP model

./train_hbmp.sh

Default settings for the SNLI dataset are as follows:

python3 train.py \
  --epochs 20 \
  --batch_size 64 \
  --corpus snli \
  --encoder_type HBMP \
  --activation leakyrelu \
  --optimizer adam \
  --word_embedding glove.840B.300d \
  --embed_dim 300 \
  --fc_dim 600 \
  --hidden_dim 600 \
  --layers 1 \
  --dropout 0.1 \
  --learning_rate 0.0005 \
  --lr_patience 1 \
  --lr_decay 0.99 \
  --lr_reduction_factor 0.2 \
  --weight_decay 0 \
  --early_stopping_patience 3 \
  --save_path results \
  --seed 1234

To rerproduce the results for the other datasets, change the --corpus option to one of the following breaking_nli, multinli_matched, multinli_mismatched, scitail, all_nli.

In our paper some of the results for InferSent model were obtained using our implementation of the model. To train the InferSent model with our implementation use the train_infersent.sh script. See the paper for more details.

python3 train.py \
  --epochs 20 \
  --batch_size 64 \
  --corpus snli \
  --encoder_type BiLSTMMaxPoolEncoder \
  --activation tanh \
  --optimizer sgd \
  --word_embedding glove.840B.300d \
  --embed_dim 300 \
  --fc_dim 512 \
  --hidden_dim 2048 \
  --layers 1 \
  --dropout 0 \
  --learning_rate 0.1 \
  --lr_patience 1 \
  --lr_decay 0.99 \
  --lr_reduction_factor 0.2 \
  --save_path results \
  --seed 1234

References

Please cite our paper if you find this code useful.

[1] Aarne Talman, Anssi Yli-Jyrä and Jörg Tiedemann. 2019. Sentence Embeddings in NLI with Iterative Refinement Encoders. Natural Language Engineering. 25 (4), 467-482.

@article{talman_yli-jyra_tiedemann_2019, 
  title={Sentence embeddings in {NLI} with iterative refinement encoders}, 
  author={Talman, Aarne and Yli-Jyr\"a, Anssi and Tiedemann, J\"org}, 
  journal={Natural Language Engineering}, 
  volume={25},
  number={4}, 
  publisher={Cambridge University Press}, 
  year={2019}, 
  pages={467–482}}

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.