/NeuroNLP2

Deep neural models for core NLP tasks (Pytorch version)

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

NeuroNLP2

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

IJCNLP 2017

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

Requirements

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,

./example/run_posCRFTagger.sh

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

To train a NER model,

./example/run_ner_crf.sh

Note

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

./example/run_stackPtrParser.sh

Remeber to setup the paths for data and embeddings.

To train a Deep BiAffine parser, simply run

./example/run_graphParser.sh

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).