translation opus-mt-tc

opus-mt-tc-big-zle-zls

Neural machine translation model for translating from East Slavic languages (zle) to South Slavic languages (zls).

This model is part of the OPUS-MT project, an effort to make neural machine translation models widely available and accessible for many languages in the world. All models are originally trained using the amazing framework of Marian NMT, an efficient NMT implementation written in pure C++. The models have been converted to pyTorch using the transformers library by huggingface. Training data is taken from OPUS and training pipelines use the procedures of OPUS-MT-train.

@inproceedings{tiedemann-thottingal-2020-opus,
    title = "{OPUS}-{MT} {--} Building open translation services for the World",
    author = {Tiedemann, J{\"o}rg  and Thottingal, Santhosh},
    booktitle = "Proceedings of the 22nd Annual Conference of the European Association for Machine Translation",
    month = nov,
    year = "2020",
    address = "Lisboa, Portugal",
    publisher = "European Association for Machine Translation",
    url = "https://aclanthology.org/2020.eamt-1.61",
    pages = "479--480",
}

@inproceedings{tiedemann-2020-tatoeba,
    title = "The Tatoeba Translation Challenge {--} Realistic Data Sets for Low Resource and Multilingual {MT}",
    author = {Tiedemann, J{\"o}rg},
    booktitle = "Proceedings of the Fifth Conference on Machine Translation",
    month = nov,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2020.wmt-1.139",
    pages = "1174--1182",
}

Model info

This is a multilingual translation model with multiple target languages. A sentence initial language token is required in the form of >>id<< (id = valid target language ID), e.g. >>bul<<

Usage

A short example code:

from transformers import MarianMTModel, MarianTokenizer

src_text = [
    ">>bul<< Новы каранавірус вельмі заразны.",
    ">>srp_Latn<< Моє ім'я — Саллі."
]

model_name = "pytorch-models/opus-mt-tc-big-zle-zls"
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
translated = model.generate(**tokenizer(src_text, return_tensors="pt", padding=True))

for t in translated:
    print( tokenizer.decode(t, skip_special_tokens=True) )

# expected output:
#     Короната е силно заразна.
#     Zovem se Sali.

You can also use OPUS-MT models with the transformers pipelines, for example:

from transformers import pipeline
pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-tc-big-zle-zls")
print(pipe(">>bul<< Новы каранавірус вельмі заразны."))

# expected output: Короната е силно заразна.

Benchmarks

langpair testset chr-F BLEU #sent #words
rus-bul tatoeba-test-v2021-08-07 0.71515 53.7 1247 8272
rus-hbs tatoeba-test-v2021-08-07 0.69192 49.4 2500 14736
rus-slv tatoeba-test-v2021-08-07 0.38051 21.5 657 3969
rus-srp_Cyrl tatoeba-test-v2021-08-07 0.66622 46.1 881 5407
rus-srp_Latn tatoeba-test-v2021-08-07 0.70990 51.7 1483 8552
ukr-bul tatoeba-test-v2021-08-07 0.77283 61.3 1020 5181
ukr-hbs tatoeba-test-v2021-08-07 0.69401 52.1 942 5130
ukr-hrv tatoeba-test-v2021-08-07 0.67202 50.1 389 2302
ukr-srp_Cyrl tatoeba-test-v2021-08-07 0.70064 54.7 205 1112
ukr-srp_Latn tatoeba-test-v2021-08-07 0.72405 53.4 348 1716
bel-bul flores101-devtest 0.49528 16.1 1012 24700
bel-hrv flores101-devtest 0.46308 12.4 1012 22423
bel-mkd flores101-devtest 0.48608 13.5 1012 24314
bel-slv flores101-devtest 0.44452 12.2 1012 23425
bel-srp_Cyrl flores101-devtest 0.44424 12.6 1012 23456
rus-bul flores101-devtest 0.58653 28.9 1012 24700
rus-hrv flores101-devtest 0.53494 23.2 1012 22423
rus-mkd flores101-devtest 0.55184 24.3 1012 24314
rus-slv flores101-devtest 0.52201 23.1 1012 23425
rus-srp_Cyrl flores101-devtest 0.53038 24.1 1012 23456
ukr-bul flores101-devtest 0.59625 30.8 1012 24700
ukr-hrv flores101-devtest 0.54530 24.6 1012 22423
ukr-mkd flores101-devtest 0.56822 26.2 1012 24314
ukr-slv flores101-devtest 0.53092 24.2 1012 23425
ukr-srp_Cyrl flores101-devtest 0.54618 26.2 1012 23456

Acknowledgements

The work is supported by the European Language Grid as pilot project 2866, by the FoTran project, funded by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 771113), and the MeMAD project, funded by the European Union’s Horizon 2020 Research and Innovation Programme under grant agreement No 780069. We are also grateful for the generous computational resources and IT infrastructure provided by CSC -- IT Center for Science, Finland.

Model conversion info