Views
No views yet
| Property | Value |
|---|---|
| Architecture | EncoderDecoderModel (BERT encoder + BERT decoder) |
| Hidden size | 512 |
| Layers (enc + dec) | 6 each |
| Attention heads | 8 |
| Feed-forward size | 1024 |
| Encoder vocab size | 1000 (Lao characters) |
| Decoder vocab size | 1000 (IPA characters + tone diacritics) |
| Max sequence length | 128 |
| Best eval loss | 0.5318 (checkpoint 4000, ~6 epochs) |
1from transformers import EncoderDecoderModel, AutoTokenizer
2
3model = EncoderDecoderModel.from_pretrained("byumatrixlab/lao-ipa-tonal")
4encoder_tokenizer = AutoTokenizer.from_pretrained("byumatrixlab/lao-ipa-tonal", subfolder="encoder_tokenizer")
5decoder_tokenizer = AutoTokenizer.from_pretrained("byumatrixlab/lao-ipa-tonal", subfolder="decoder_tokenizer")
6
7def lao_to_ipa(text, num_beams=4):
8 inputs = encoder_tokenizer(
9 text,
10 return_tensors="pt",
11 truncation=True,
12 max_length=128,
13 )
14 output_ids = model.generate(
15 **inputs,
16 max_length=128,
17 num_beams=num_beams,
18 early_stopping=True,
19 )
20 return decoder_tokenizer.decode(output_ids[0], skip_special_tokens=True)
21
22print(lao_to_ipa("ສະບາຍດີ"))
23
24print(lao_to_ipa("ຂອບໃຈ"))1def lao_to_ipa_batch(texts, num_beams=4):
2 inputs = encoder_tokenizer(
3 texts,
4 return_tensors="pt",
5 padding=True,
6 truncation=True,
7 max_length=128,
8 )
9 output_ids = model.generate(
10 **inputs,
11 max_length=128,
12 num_beams=num_beams,
13 early_stopping=True,
14 )
15 return [decoder_tokenizer.decode(ids, skip_special_tokens=True) for ids in output_ids]@inproceedings{shurtz2026mekongphon,
title={MekongPhon: A Large-Scale Parallel IPA Corpus for Lao and Khmer},
author={Shurtz, Ammon and Richardson, Christian and Richardson, Stephen D},
booktitle={Proceedings of the Fifteenth Language Resources and Evaluation Conference (LREC 2026)},
volume={11},
number={16},
pages={1650--1658},
year={2026}
}