Saka NLP

Saka (Bahasa Jawa/Sunda) berarti "tiang penyangga". Sebuah architectural framework modern yang solid untuk pemrosesan teks Bahasa Indonesia dan daerah.

📖 Docs 📦 Install via PyPI 📝 Medium Blog 📓 Google Colab ⭐ GitHub

🚀 Panduan Instalasi

Pastikan versi Python Anda adalah Python 3.8 atau lebih baru.

Opsi 1: Instalasi Via PyPI (Direkomendasikan)

Gunakan perintah ini untuk rilis stabil Saka-NLP.

pip install saka-nlp

Opsi 2: Instalasi dari Source Code

Gunakan langkah ini jika Anda ingin turut berkontribusi atau menggunakan versi pengembangan.

# 1. Clone repository
git clone https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP.git
cd Saka-NLP

# 2. Instal library beserta dependency
pip install -e .

📖 Panduan Penggunaan Modul Inti

00 Cek Versi

Impor library tunggal untuk mengakses seluruh pilar pemrosesan.

python
import saka

print(saka.__version__)
# Output: 0.2.5

01 Tokenisasi Cerdas

Memecah teks menjadi unit terkecil secara akurat.

python
import saka

text = "Belajar sambil beramal di era konektivitas."
tokens = saka.tokenize(text)
print(tokens)
# Output: ['Belajar', 'sambil', 'beramal', 'di', 'era', 'konektivitas']

02 Normalisasi Bahasa Gaul

Menggunakan slang lexicon yang kuat dari data sosial media.

python
import saka

normalized = saka.normalize("klo gimana gw")
print(normalized)
# Output: 'kalau bagaimana saya'

03 Analisis Morfologi Mutakhir

Pemulihan leburan afiks (*Morphophonemic*) dan Validasi hibrida berbasis Dictionary Early Stopping.

python
import saka

# Pemulihan akar afiks melebur
analysis = saka.analyze("menyebarluaskan")
print(analysis["root"]) # Output: sebar luas

# Validasi kamus daerah (Sunda & Minang)
print(saka.analyze("dipikanyaah")["regional_matches"]) # Output: ['sunda']
print(saka.analyze("bundokanduang")["root"]) # Output: bundo kanduang

04 Integrasi Live KBBI

Mengurai jawaban langsung dari database KBBI Kemendikbudristek secara real-time.

python
import saka

kbbi_result = saka.query_kbbi("belajar")

if kbbi_result["status"] == "found":
    for arti in kbbi_result["definitions"]:
        print(f"Arti: {arti}")
# Output:
# Arti: petunjuk yang diberikan kepada orang supaya diketahui...
# Arti: berusaha memperoleh kepandaian atau ilmu...

05 Stopwords Nusantara & Internasional

Koleksi Stopwords (Indo, Sunda, Jawa, Bali, Jaksel, English) dengan performa baca O(1).

python
import saka

#// Ambil stopword spesifik bahasa (contoh: Sunda)
sunda_stops = saka.get_stopwords("sunda")
print(f"Apakah 'saha' adalah stopword? {'saha' in sunda_stops}") 

// Ambil stopword spesifik bahasa Jawa
jawa_stops = saka.get_stopwords("jawa")

// Ambil stopword spesifik bahasa Bali
bali_stops = saka.get_stopwords("bali")

// Ambil semua stopword (gabungan semua bahasa)
all_stops = saka.get_stopwords("all")
print(f"Total stopwords: {len(all_stops)}")

// Ambil stopword spesifik bahasa Gaul Jaksel
jaksel_stops = saka.get_stopwords("jaksel")
print(f"Jaksel stopword? {'literally' in jaksel_stops}")

06 Prompt Builder LLM

Merakit struktur prompt ideal untuk LLM beserta fitur optimasi token dan parsing output otomatis.

python
import saka

prompt = saka.build_prompt(
    instruction="Klasifikasikan sentimen.",
    input_data="Keren bgt tpi mahal parah",
    output_indicator="JSON",
    optimize_text=True
)

# Mengurai respons LLM ke tipe data bawaan Python
hasil = saka.parse_llm_output(llm_response, format_type="json")

07 Saka-Eval Benchmark

Modul pembanding performa model NLP untuk dataset Bahasa Indonesia (Sentiment/NER).

python
from saka.evaluation.benchmarker import SakaEval

evaluator = SakaEval(task="sentiment")
evaluator.load_hf_dataset("Muhammad-Ikhwan-Fathulloh/Saka-Eval", name="sentiment")

results = await evaluator.evaluate(model, text="text", label="label")

08 Ekosistem Sunda

Dukungan kamus digital SundaDigi dan transliterasi Aksara Sunda (Ngalagena) yang presisi.

python
import saka

# Kamus Sunda (SundaDigi)
res = saka.query_sundadigi("wilujeng")
print(res["definitions"]["arti"]) # Output: selamat

# Transliterasi Aksara Sunda
aksara = saka.latin_to_aksara_sunda("saka")
print(aksara) # Output: ᮞᮊ
Ngalagena ha(ᮠ), na(ᮔ), ca(ᮎ), ra(ᮛ), ka(ᮊ), da(ᮓ), ta(ᮒ), sa(ᮞ), wa(ᮝ), la(ᮜ), pa(ᮕ), ja(ᮏ), ya(ᮚ), nya(ᮑ), ma(ᮙ), ga(ᮌ), ba(ᮘ), nga(ᮍ)

09 Ekosistem Jawa

Integrasi Leksikon Sastra.org dan mesin transliterasi Hanacaraka (Nglegena) yang akurat.

python
import saka

# Kamus Jawa (Sastra.org)
res = saka.query_sastra("sugeng")
print(res["definitions"][0]["arti"]) # Output: selamat

# Transliterasi Aksara Jawa
aksara = saka.latin_to_aksara_jawa("hanacaraka")
print(aksara) # Output: ꦲꦤꦕꦫꦏ
Nglegena ha(ꦲ), na(ꦤ), ca(ꦕ), ra(ꦫ), ka(ꦏ), da(ꦢ), ta(ꦠ), sa(ꦱ), wa(ꦮ), la(ꦭ), pa(ꦥ), dha(ꦝ), ja(ꦗ), ya(ꦪ), nya(ꦚ), ma(ꦩ), ga(ꦒ), ba(ꦧ), tha(ꦛ), nga(ꦔ)

10 Ekosistem Bali

Pemanfaatan BASAbali Wiki dan dukungan penuh Aksara Bali (Wreastra) beserta angka dan tanda baca.

python
import saka

# Kamus Bali (BASAbali)
res = saka.query_basabali("rahajeng")
print(res["definitions"][0]["arti"]) # Output: selamat

# Transliterasi Aksara Bali
aksara = saka.latin_to_aksara_bali("bali 2026")
print(aksara) # Output: ᬩᬮᬶ ᭒᭐᭒᭖
Wreastra ha(ᬳ), na(ᬦ), ca(ᬘ), ra(ᬭ), ka(ᬓ), da(ᬤ), ta(ᬢ), sa(ᬲ), wa(ᬯ), la(ᬮ), ma(ᬫ), pa(ᬧ), ga(ᬕ), ja(ᬚ), ya(ᬬ), nya(ᬜ)
Angka 0(᭐), 1(᭑), 2(᭒), 3(᭓), 4(᭔), 5(᭕), 6(᭖), 7(᭗), 8(᭘), 9(᭙)

11 Terminal CLI

Akses fitur Saka-NLP langsung dari terminal tanpa skrip Python.

bash
saka --help
saka --stem "dimakan"
saka --normalize "ngapain ke kampus klo libur"

🤝 Ingin Berkontribusi?

Saka-NLP adalah proyek open-source. Kami sangat terbuka bagi siapa saja yang ingin membantu memperkuat pilar NLP Nusantara.

Ke Repository GitHub

📚 Sitasi (Citation)

Jika Anda menggunakan Saka-NLP dalam penelitian atau proyek Anda, mohon sitasi menggunakan format berikut:

APA

Fathulloh, M. I. (2026). Saka-NLP: Indonesian NLP Toolkit for Tokenization and Slang Processing with Prompting and Agentic AI Support (Version 0.2.5) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.20092640

Note: Anda dapat menyitasi seluruh versi Saka-NLP menggunakan DOI 10.5281/zenodo.20092640. DOI ini mewakili seluruh versi dan akan selalu mengarah ke versi terbaru.

BibTeX

bibtex
@software{Fathulloh_Saka-NLP_2026,
  author = {Fathulloh, Muhammad Ikhwan},
  title = {{Saka-NLP: Indonesian NLP Toolkit for Tokenization and Slang Normalization}},
  month = {5},
  year = {2026},
  publisher = {Zenodo},
  version = {0.2.5},
  doi = {10.5281/zenodo.20092640},
  url = {https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP}
}

🗄️ Referensi & Sumber Data

❤️ Dukung Proyek Ini

Bantu pengembangan Saka-NLP agar lebih baik lagi.