Tamang does not exist in the original mBART tokenizer vocabulary.
To address this, Hindi (hi_IN) was used as a Devanagari proxy token, enabling multilingual shared lexical transfer and improved adaptation.
All models trained on 15K & tested on 5K parallel sentences.
1from transformers import MBartForConditionalGeneration, MBart50TokenizerFast
2import torch
3
4device = "cuda" if torch.cuda.is_available() else "cpu"
5
6model_name = "ilprl-docse/NepTam20k-mBART-50-610.9M"
7tokenizer = MBart50TokenizerFast.from_pretrained(model_name)
8model = MBartForConditionalGeneration.from_pretrained(model_name).to(device)
9
10LANG = {
11 "Nepali": "ne_NP",
12 "Tamang": "hi_IN" # Hindi = proxy
13}
14
15def translate(text, src="Nepali", tgt="Tamang"):
16 tokenizer.src_lang = LANG[src]
17
18 batch = tokenizer(text, return_tensors="pt").to(device)
19
20 generated = model.generate(
21 **batch,
22 forced_bos_token_id=tokenizer.lang_code_to_id[LANG[tgt]],
23 num_beams=5,
24 max_length=128
25 )
26
27 return tokenizer.batch_decode(generated, skip_special_tokens=True)[0]
28
29# Example
30text = "म आज धेरै खुशि छु।"
31print("Input (Nepali):", text)
32print("Translation (Tamang):", translate(text, src="Nepali",tgt="Tamang"))