Penerjemah Bahasa Isyarat Indonesia (BISINDO) ke Bahasa Indonesia menggunakan N-gram dan Neural LM
Project description
BisindoTrans
Hybrid Sign Language Translation System for Indonesian
Tentang Proyek
BisindoTrans adalah sistem penerjemahan bahasa isyarat Indonesia (BISINDO) ke teks Bahasa Indonesia natural yang dikembangkan sebagai bagian dari penelitian Skripsi S1 Teknik Informatika.
Proyek ini mengeksplorasi pendekatan Hybrid yang menggabungkan:
- Statistical Language Model (N-gram Bigram) untuk efisiensi dan presisi
- Neural Language Model (GPT-2 Indonesian) untuk fleksibilitas generasi
Sistem ini juga membandingkan dua strategi decoding:
- Beam Search — deterministik, konsisten
- Nucleus Sampling — stokastik, variatif
Evaluasi dilakukan menggunakan metrik standar NLP:
- BLEU Score — n-gram precision
- chrF Score — character-level F-score
Instalasi
# Clone repository
git clone https://github.com/username/bisindo-trans.git
cd bisindo-trans
# Install package (development mode)
pip install -e .
# Dengan dukungan Neural LM (GPT-2)
pip install -e ".[neural]"
Requirements:
- Python 3.9+
- pandas, nltk, openpyxl
- torch, transformers (opsional, untuk mode neural)
Quick Start
from bisindotrans import Translator
# Inisialisasi dengan N-gram model
translator = Translator(model_type="ngram")
# Terjemahkan glosa ke bahasa natural
hasil = translator.translate("SAYA MAKAN NASI", method="beam")
print(hasil) # Output: "Saya makan nasi."
# Dengan nama (ejaan jari)
hasil = translator.translate("NAMA SAYA M U H A M M A D A L D I", method="beam")
print(hasil) # Output: "Nama saya Muhammad Aldi."
# Perbandingan metode
beam_result = translator.translate("SELAMAT PAGI", method="beam")
nucleus_result = translator.translate("SELAMAT PAGI", method="nucleus")
Fitur Unggulan
| Fitur | Deskripsi |
|---|---|
| Hybrid Model | Pilih antara Statistical N-gram atau Neural GPT-2 sesuai kebutuhan |
| Dual Decoding | Beam Search (presisi tinggi) dan Nucleus Sampling (variasi output) |
| Smart NER | Deteksi otomatis nama orang dari ejaan jari (fingerspelling) |
| Auto-Capitalization | Kapitalisasi otomatis untuk nama dan awal kalimat |
| Model Persistence | Simpan/muat model untuk loading instan (~10 detik vs ~5 menit training) |
| Anti-Hallucination | Filter bawaan untuk mencegah output yang tidak relevan pada Neural LM |
| Preprocessing Pipeline | Normalisasi glosa, penggabungan ejaan jari, koreksi frasa |
| Batch Translation | Terjemahkan banyak kalimat sekaligus |
Benchmark
Perbandingan Model
| Model | Decoding | BLEU | chrF | Latency |
|---|---|---|---|---|
| N-gram | Beam Search | |||
| N-gram | Nucleus | |||
| Neural | Beam Search | |||
| Neural | Nucleus |
Konfigurasi Pengujian
| Parameter | N-gram | Neural |
|---|---|---|
| Corpus Size | ~19 juta kata | Pre-trained |
| Vocab Size | ~1.4 juta | 50,257 |
| Beam Width | 3 | 5 |
| Top-p (Nucleus) | 0.5 | 0.7 |
Struktur Package
bisindotrans/
├── __init__.py # Public API
├── translator.py # Main Translator class
├── preprocessing/
│ ├── normalisasi.py # Cleaning & deduplication
│ └── naturalisasi.py # NER & phrase mapping
├── models/
│ ├── ngram.py # Statistical bigram model
│ └── neural.py # GPT-2 wrapper
├── decoding/
│ └── strategies.py # Beam Search & Nucleus Sampling
└── utils/
└── postprocessing.py # Output formatting
Penggunaan Lanjutan
Ganti Model
# Mode N-gram (cepat, offline)
t = Translator(model_type="ngram")
# Mode Neural (butuh GPU/CPU kuat)
t = Translator(model_type="neural")
Custom Model Path
# Load model dari lokasi custom
t = Translator(model_type="ngram", model_path="path/to/custom_model.pkl")
Batch Processing
glosses = ["SELAMAT PAGI", "TERIMA KASIH", "SAMPAI JUMPA"]
results = translator.translate_batch(glosses, method="beam")
Referensi
- Holtzman, A., et al. (2019). The Curious Case of Neural Text Degeneration
- Radford, A., et al. (2019). Language Models are Unsupervised Multitask Learners
- Papineni, K., et al. (2002). BLEU: a Method for Automatic Evaluation of Machine Translation
Author
Muhammad Aldi Alfatih
aldialfatih016@gmail.com7
Skripsi S1 Ilmu Komputer
2026
License
MIT License - Silakan gunakan untuk keperluan akademis dan pengembangan.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bisindo_trans-1.1.1.tar.gz.
File metadata
- Download URL: bisindo_trans-1.1.1.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df78943eb60a749c8a7c18815b3567ac54636fd73c0b53af48b22d77ad4fe776
|
|
| MD5 |
1dc0652f7f5b64e334513d095686464e
|
|
| BLAKE2b-256 |
cfc1bb394906d3172b4858ef5e468bc54b4a7ae71f4b700e680ac44f971e02c7
|
File details
Details for the file bisindo_trans-1.1.1-py3-none-any.whl.
File metadata
- Download URL: bisindo_trans-1.1.1-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
963f70bba4710679a448db49bf854f5836cb7ba5c14de62509c18874f89ae2c6
|
|
| MD5 |
f716fa63001bccded35c6b89adabe6ce
|
|
| BLAKE2b-256 |
277b87bd33dedb6450f5cf8e1a6c7fdd153d339313271790eb724b1ece523969
|