Skip to main content

Penerjemah Bahasa Isyarat Indonesia (BISINDO) ke Bahasa Indonesia menggunakan N-gram dan Neural LM

Project description

BisindoTrans

Hybrid Sign Language Translation System for Indonesian

Python License Status NLP


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

bisindo_trans-1.1.0.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bisindo_trans-1.1.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file bisindo_trans-1.1.0.tar.gz.

File metadata

  • Download URL: bisindo_trans-1.1.0.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for bisindo_trans-1.1.0.tar.gz
Algorithm Hash digest
SHA256 52fa11801022de9b07a6a7b0d0f44d1f4393aab6ec0c6d84bd01e9fe08b970e6
MD5 c20ca61fd8be7af2ce6d9dec19fdbf26
BLAKE2b-256 4fd297c78060cf5c9a7067dbd04c461666a58568ff17ceed1cefbf2dc170b923

See more details on using hashes here.

File details

Details for the file bisindo_trans-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: bisindo_trans-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for bisindo_trans-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 535d3f8c5977f58237d65505e9ca7aea7e3183d8021f065ccce354e3d3fe34e7
MD5 452cc100d1f5b76be902f6c0672183a2
BLAKE2b-256 f00253faa58fcd39a81443e5ebe1fedccf6b9710449ff8f67e87fd05d10509c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page