Views
No views yet
| Metric | Dakshina Test |
|---|---|
| Top-1 Accuracy | 68.88% |
| Top-1 + Rerank (α=0.6) | 80.84% |
| Recall@10 | 88.71% |
1import torch
2import json
3from model import MambaTranslit # see model.py
4
5# load
6with open("config.json") as f:
7 config = json.load(f)
8with open("vocab.json") as f:
9 vocab = json.load(f)
10
11model = MambaTranslit(
12 len(vocab["src_vocab"]), len(vocab["tgt_vocab"]),
13 config["d_model"], config["d_state"], config["d_conv"], config["expand"],
14 config["num_encoder_layers"], config["num_decoder_layers"], 0.0
15)
16state = torch.load("best_model.pt", map_location="cpu")
17model.load_state_dict(state["model"])
18model.eval()
19
20# inference
21def transliterate(word):
22 src_vocab = vocab["src_vocab"]
23 tgt_inv = {v: k for k, v in vocab["tgt_vocab"].items()}
24
25 enc = [1] + [src_vocab.get(c, 3) for c in word] + [2] # SOS=1, EOS=2, UNK=3
26 src = torch.tensor([enc])
27
28 with torch.no_grad():
29 out = model.generate_greedy(src, max_len=64)
30
31 result = []
32 for t in out[0].tolist():
33 if t == 2: break # EOS
34 if t not in (0, 1): result.append(tgt_inv.get(t, ""))
35 return "".join(result)
36
37print(transliterate("tamil")) # தமிழ்d_model: 256
d_state: 16
d_conv: 4
expand: 2
num_encoder_layers: 8
num_decoder_layers: 4mamba_ssm package (CUDA only)@misc{mamba-tamil-xlit,
title={Mamba Tamil Transliteration},
year={2024},
url={https://huggingface.co/cloudrumbles/mamba-tamil-xlit}
}