Skip to content

Latest commit

 

History

History
72 lines (52 loc) · 3.51 KB

README.md

File metadata and controls

72 lines (52 loc) · 3.51 KB

Multi-EURLEX

MultiEURLEX - A multi-lingual and multi-label legal document classification dataset for zero-shot cross-lingual transfer

This is the code used for the experiments described in the following paper:

I. Chalkidis, M. Fergadiotis, and I. Androutsopoulos, "MultiEURLEX - A multi-lingual and multi-label legal document classification dataset for zero-shot cross-lingual transfer". Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing, Punta Cana, Dominican Republic, 2021 (xxx)

Requirements:

  • tensorflow==2.3.1
  • tensorflow-addons==0.11.2
  • transformers==4.3.3
  • tokenizers==0.10.1
  • scipy==1.5.4
  • torch==1.7.1
  • tqdm==4.43.0
  • cudatoolkit==10.1.243 (for GPU acceleration)
  • cudnn==7.6.0 (for GPU acceleration)

Quick start:

Install python requirements:

pip install -r requirements.txt

Download dataset (MultiEURLEX):

The dataset is hosted and been described in detail in the Hugging Face Datasets (https://huggingface.co/datasets/multi_eurlex). It is automatically downloaded and used by the Trainer. If you want to review and familiarize your self with the dataset, you can download it usingthe following Python code:

from datasets import load_dataset
dataset = load_dataset('multi_eurlex', languages='all_languages')

Train a model:

The following configuration (command-line) arguments can be used:

  • 'bert_path' (default='xlm-roberta-base'): The name of the pretrained transformer-based model hosted by Hugging Face, or the full path to a local directory.
  • 'native_bert' (default=False): If the ISO code of a language (e.g., 'en') is provided, then the relevant monolingual model will be fine-tuned.
  • 'multilingual_train' (default=False): If True, the model will be trained across multiple languages ('train_langs').
  • 'use_adapters' (default=False) If True, the model will be fine-tuned using Adapter modules (Houlsby et al., 2019).
  • 'use_ln' (default=False) If True, only the parameter of the LayerNorm layers of the the model will be fine-tuned
  • 'bottleneck_size' (default=256) The size of the bottleneck layer in Adapter modules (if used).
  • 'n_frozen_layers' (default=0) The number of the initial layers that will remain frozen in fine-tuning.
  • 'epochs' (default=70) The number of the maximum training epochs (Early stopping with patience 5 is used by default).
  • 'batch_size' (default=8) The number of the samples in a single batch.
  • 'learning_rate' (default=3e-5) The initial learning rate to be used by the Adam optimizer.
  • 'label_smoothing' (default=0.0) The rate of label smoothing (Szegedy et al.,2016).
  • 'max_document_length' (default=512) The maximum length of tokens to be considered per document.
  • 'monitor' (default='val_rp') The score to be monitored for early stopping ('val_rp' or 'val_loss')
  • 'train_lang' (default='en') The ISO code of the training language (e.g., 'en') in a one-to-many setting.
  • 'train_langs' (default=['en']) The list of languages to be used for fine-tuning, in many-to-one setting.
  • 'eval_langs' (default='all') The list of languages to be used for evaluation.
  • 'label_level' (default='level_3') The level of EUROVOC (e.g., 'level_1', 'level_2', 'level_3', 'all') used for the classification task.

You can run experiments by simply calling:

python trainer.py --bert_path 'xlm-roberta-base' --use_adapters True --train_lang 'en' --label_level 'level_1'

Credits

Thanks to @Essex97 for pointing out minor bugs in the codebase.