Download tests/test_core.py from adyoi/indigo: direct link, hf CLI and curl.
- Browser
- Download file 2.02 kB
-
https://huggingface.co/adyoi/indigo/resolve/main/tests/test_core.py
- Command line
-
hf download hf://adyoi/indigo/tests/test_core.py
-
curl -L -o test_core.py https://huggingface.co/adyoi/indigo/resolve/main/tests/test_core.py
2.02 kB
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT)) | |
| from indigo.bpe import BPETokenizer | |
| from indigo.common import ( | |
| _kandidat_akar, | |
| load_wordlist, | |
| save_meta, | |
| load_meta, | |
| word_known_ratio, | |
| ) | |
| from indigo.tokenizer import CharTokenizer | |
| def test_bpe_roundtrip(): | |
| teks = "halo dunia, halo lagi! belajar bahasa indonesia bersama." | |
| tok = BPETokenizer.train(teks * 5, 280) | |
| ids = tok.encode(teks) | |
| assert tok.decode(ids) == teks | |
| assert 256 <= tok.vocab_size <= 280 | |
| def test_char_roundtrip(): | |
| tok = CharTokenizer.from_text("abcba") | |
| assert tok.decode(tok.encode("abc")) == "abc" | |
| def test_meta_save_load(tmp_path): | |
| base = str(tmp_path / "ck.safetensors") | |
| (tmp_path / "ck.safetensors").write_bytes(b"") | |
| cfg = {"vocab_size": 10, "block_size": 8} | |
| save_meta(base, cfg, None, 5, 1.23, backend="pytorch", tokenizer={"type": "char"}) | |
| meta = load_meta(base) | |
| assert meta["config"] == cfg and meta["step"] == 5 and meta["val_loss"] == 1.23 | |
| def test_afiks_asimilasi(): | |
| pref = {"meng", "meny", "men", "mem", "pem", "di", "ter"} | |
| suf = {"kan", "annya", "nya", "an", "i", "lah"} | |
| assert "sapu" in _kandidat_akar("menyapu", pref, suf) | |
| assert "pukul" in _kandidat_akar("pemukul", pref, suf) | |
| assert "ambil" in _kandidat_akar("mengambil", pref, suf) | |
| assert "terima" in _kandidat_akar("diterima", pref, suf) | |
| def test_word_known_ratio_naik_dengan_afiks(tmp_path): | |
| kamus = tmp_path / "kamus.txt" | |
| kamus.write_text("paham\nterima\nringan\n", encoding="utf-8") | |
| ws = load_wordlist(str(kamus)) | |
| pref = {"di"} | |
| suf = {"i", "nya"} | |
| teks = "paham dipahami ringannya" | |
| r0 = word_known_ratio(teks, ws) | |
| r1 = word_known_ratio(teks, ws, pref, suf) | |
| assert r0 < r1 <= 1.0 | |
| def test_load_wordlist_normalisasi(tmp_path): | |
| f = tmp_path / "w.txt" | |
| f.write_text("Apa\nBEBEK\n\nbebek\n", encoding="utf-8") | |
| ws = load_wordlist(str(f)) | |
| assert ws == {"apa", "bebek"} | |