Skip to content
This repository was archived by the owner on Aug 5, 2025. It is now read-only.

Repository files navigation

Transition-based UCCA Parser

TUPA is a transition-based parser for Universal Conceptual Cognitive Annotation (UCCA).

Requirements

  • Python 3.6+

Install

Install the latest release:

pip install tupa[bert]

Alternatively, install the latest code from GitHub (may be unstable):

pip install git+git://github.com/danielhers/tupa.git#egg=tupa

Train the parser

Having a directory with UCCA passage files (for example, the English Wiki corpus), run:

python -m tupa -t <train_dir> -d <dev_dir> -c <model_type> -m <model_filename>

The possible model types are sparse, mlp, and bilstm.

Parse a text file

Run the parser on a text file (here named example.txt) using a trained model:

python -m tupa example.txt -m <model_filename>

An xml file will be created per passage (separate by blank lines in the text file).

To visualize output graphs, use the visualize command:

python -m scripts.visualize <xml_files>

Pre-trained models

To download and extract a model pre-trained on the Wiki corpus, run:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10.tar.gz
tar xvzf ucca-bilstm-1.3.10.tar.gz

Run the parser using the model:

python -m tupa example.txt -m models/ucca-bilstm

Other languages

To get a model pre-trained on the French 20K Leagues corpus or a model pre-trained on the German 20K Leagues corpus, run:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10-fr.tar.gz
tar xvzf ucca-bilstm-1.3.10-fr.tar.gz
curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.3.10/ucca-bilstm-1.3.10-de.tar.gz
tar xvzf ucca-bilstm-1.3.10-de.tar.gz

Run the parser on a French/German text file (separate passages by blank lines):

python -m tupa exemple.txt -m models/ucca-bilstm-fr --lang fr
python -m tupa beispiel.txt -m models/ucca-bilstm-de --lang de

Using BERT

BERT can be used instead of standard word embeddings. First, install the required dependencies:

pip install tupa[bert]

or, if you cloned the repository,

pip install -r requirements.bert.txt

Then pass the --use-bert argument to the training command.

See the possible configuration options in config.py (relevant options have the prefix bert).

BERT Multilingual Training

A multilingual model can be trained, to leverage cross-lingual transfer and improve results on low-resource languages:

  1. Make sure the input passage files have the lang attribute. See the script set_lang in the package semstr.
  2. Enable BERT by passing the --use-bert argument.
  3. Use the multilingual model by passing --bert-model=bert-base-multilingual-cased.
  4. Pass the --bert-multilingual=0 argument to enable multilingual training.

BERT Performance

Here are the average results over 3 BERT multilingual models trained on the German 20K Leagues corpus, English Wiki corpus and only on 15 sentences from the French 20K Leagues corpus, with the following settings:

bert-model=bert-base-multilingual-cased
bert-layers=-1 -2 -3 -4
bert-layers-pooling=weighted
bert-token-align-by=sum

The results:

descriptiontest primary F1test remote F1test average
German 20K Leagues0.8280.67230.824
English 20K Leagues0.7630.3590.755
French 20K Leagues0.7390.460.732
English Wiki0.7890.5810.784

*English 20K Leagues corpus is used as out of domain test.

Pre-trained Models with BERT

To download and extract a multilingual model trained with the settings above, run:

curl -LO https://github.com/huji-nlp/tupa/releases/download/v1.4.0/bert_multilingual_layers_4_layers_pooling_weighted_align_sum.tar.gz
tar xvzf bert_multilingual_layers_4_layers_pooling_weighted_align_sum.tar.gz

To run the parser using the model, use the following command. Pay attention that you need to replace [lang] with the right language symbol (fr, en, or de):

python -m tupa example.txt --lang [lang] -m bert_multilingual_layers_4_layers_pooling_weighted_align_sum

Author

Contributors

Citation

If you make use of this software, please cite the following paper:

@InProceedings{hershcovich2017a,
author = {Hershcovich, Daniel and Abend, Omri and Rappoport, Ari},
title = {A Transition-Based Directed Acyclic Graph Parser for {UCCA}},
booktitle = {Proc. of ACL},
year = {2017},
pages = {1127--1138},
url = {http://aclweb.org/anthology/P17-1104}
}

The version of the parser used in the paper is v1.0. To reproduce the experiments, run:

curl -L https://raw.githubusercontent.com/huji-nlp/tupa/master/experiments/acl2017.sh | bash

If you use the French, German or multitask models, please cite the following paper:

@InProceedings{hershcovich2018multitask,
author = {Hershcovich, Daniel and Abend, Omri and Rappoport, Ari},
title = {Multitask Parsing Across Semantic Representations},
booktitle = {Proc. of ACL},
year = {2018},
pages = {373--385},
url = {http://aclweb.org/anthology/P18-1035}
}

The version of the parser used in the paper is v1.3.3. To reproduce the experiments, run:

curl -L https://raw.githubusercontent.com/huji-nlp/tupa/master/experiments/acl2018.sh | bash

License

This package is licensed under the GPLv3 or later license (see LICENSE.txt).

 [ ~ Dependencies scanned by PyUp.io ~ ]

Build Status (Travis CI)Build Status (AppVeyor)Build Status (Docs)PyPI version

About

Transition-based UCCA Parser

Topics

Resources

Stars

74 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages