Deep neural models for core NLP tasks (Pytorch version)
Switch branches/tags
Nothing to show
Clone or download
Max Ma
Max Ma update README
Latest commit fff2639 Jun 6, 2018
Failed to load latest commit information.
examples bug Mar 27, 2018
neuronlp2 roll back to 3.1 Apr 25, 2018
.gitignore Update .gitignore Jun 18, 2017
LICENSE Initial commit Jun 18, 2017 update README Jun 6, 2018


Deep neural models for core NLP tasks based on Pytorch(version 2)

This is the code we used in the following papers

End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF

Xuezhe Ma, Eduard Hovy

ACL 2016

Neural Probabilistic Model for Non-projective MST Parsing

Xuezhe Ma, Eduard Hovy


Stack-Pointer Networks for Dependency Parsing

Xuezhe Ma, Zecong Hu, Jingzhou Liu, Nanyun Peng, Graham Neubig and Eduard Hovy

ACL 2018

It also includes the re-implementation of the Stanford Deep BiAffine Parser:

Deep Biaffine Attention for Neural Dependency Parsing

Timothy Dozat, Christopher D. Manning

ICLR 2017


Python 2.7, PyTorch >=0.3.0, Gensim >= 0.12.0

Data format

For the data format used in our implementation, please read this issue.

Running the experiments

Sequence labeling

In the root of the repository, first make the tmp directory:

mkdir tmp

To train a CRF POS tagger,


where the arguments for train/dev/test data, together with the pretrained word embedding should be setup.

To train a NER model,



If you want to apply the sequence labeling model to other tasks or different datasets, please be sure to remove the corresponding folders storing the vocabularies located in data/alphabets/. Otherwise, the old vocabularies will be loaded from disk.

Dependency Parsing

To train a Stack-Pointer parser, simply run


Remeber to setup the paths for data and embeddings.

To train a Deep BiAffine parser, simply run


Again, remember to setup the paths for data and embeddings.

To train a Neural MST parser, run the same script, but change the argument objective from cross_entropy to crf (this part is still under development).