Saka-NLP: Indonesian Language Processing with Prompting and Agentic AI Support
Project description
Saka: Indonesian NLP with Prompting and Agentic AI Support 🇮🇩
Saka (Bahasa Jawa/Sunda: Tiang Penyangga) adalah sebuah architectural framework modern untuk pemrosesan teks Bahasa Indonesia dan daerah yang dibangun dengan prinsip asinkron, modular, dan cerdas.
📌 Daftar Isi
✨ Fitur Unggulan
| Fitur | Deskripsi |
|---|---|
| ⚡ Async Processing | Pemrosesan non-blocking untuk dataset skala besar. |
| 🧩 Modular Design | Komponen plug-and-play yang mudah diintegrasikan. |
| 🧠 Morphology Analyzer | Analisis imbuhan hibrida dengan Morphophonemic Restructuring. |
| 📖 Live KBBI | Ekstraksi arti kata langsung dari situs resmi KBBI. |
| 🤖 Agentic AI | Orchestration prompt LLM, Multi-Agent, dan Tool Calling. |
| 🔠 Aksara Nusantara | Transliterasi Aksara Sunda, Jawa, dan Bali. |
| 🔗 Dynamic Compounds | Pemisahan kata majemuk otomatis via dataset JSON dinamis. |
🚀 Instalasi
Pastikan menggunakan Python 3.8+.
# Via PyPI (Rekomendasi)
pip install saka-nlp
# Via Source (Development)
git clone https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP.git
cd Saka-NLP && pip install -e .
📖 Penggunaan Dasar
Saka-NLP didesain agar intuitif. Cukup import saka.
1. Tokenisasi & Normalisasi
import saka
# Tokenisasi
tokens = saka.tokenize("Halo, apa kabar?")
# ['Halo', ',', 'apa', 'kabar', '?']
# Normalisasi Slang
normalized = saka.normalize("klo gimana gw")
# 'kalau bagaimana saya'
2. Morfologi & KBBI
import saka
# Analisis Morfologi (Handle kata majemuk & peleburan)
print(saka.analyze("menyebarluaskan"))
# {'root': 'sebar luas', ...}
# Live KBBI Search
res = saka.query_kbbi("belajar")
3. Stopwords Nusantara
import saka
# Mendukung: id, sunda, jawa, bali, minang, en, jaksel
stops = saka.get_stopwords("minang")
🤖 Agentic AI & Prompting
Membangun aplikasi berbasis LLM dengan kontrol penuh atas prompt dan output.
import saka
# 1. Token Optimization via Local Formatting
data = [{"id": 1, "text": "Saka"}]
output = saka.OutputFormatter.format(data, "json")
# 2. Structured Prompt Builder
prompt = saka.build_prompt(role="Analist", task="Klasifikasi", input_data="Teks...")
# 3. Agent & Tool Calling
bot = saka.Agent("Asisten", "Membantu user")
bot.add_tool(name="calc", desc="Hitung", func=lambda x: x*2)
📊 Saka-Eval Benchmark
Evaluasi model NLP Anda dengan dataset standar Indonesia secara asinkron.
from saka.evaluation.benchmarker import SakaEval
evaluator = SakaEval(task="sentiment")
evaluator.load_hf_dataset("Muhammad-Ikhwan-Fathulloh/Saka-Eval")
results = await evaluator.evaluate(model, text="text", label="label")
print(f"Accuracy: {results['metrics']['accuracy']:.2%}")
🌏 Ekosistem Nusantara
Dukungan mendalam untuk bahasa daerah (Kamus & Aksara).
Klik untuk melihat detail Aksara (Sunda, Jawa, Bali)
Aksara Sunda (Ngalagena)
| Latin | Aksara | Latin | Aksara |
|---|---|---|---|
| ha | ᮠ | na | ᮔ |
| ca | ᮎ | ra | ᮛ |
| ... | ... | ... | ... |
Aksara Jawa (Nglegena)
| Latin | Aksara | Latin | Aksara |
|---|---|---|---|
| ha | ꦲ | na | ꦤ |
| ... | ... | ... | ... |
(Tabel lengkap tersedia di Dokumentasi Web)
🔗 Dynamic Compound Handling
Saka-NLP kini mendukung pemisahan kata majemuk secara dinamis melalui compounds.json.
- Indonesian:
menyebarluaskan→sebar luas,kerjasama→kerja sama - Sunda:
hulunagara→hulu nagara,indungsuku→indung suku - Minang:
bundokanduang→bundo kanduang,ranahminang→ranah minang
🛠️ CLI & Sitasi
CLI Usage
saka --help
saka --normalize "ngapain ke kampus klo libur"
Citation
@software{Fathulloh_Saka-NLP_2026,
author = {Fathulloh, Muhammad Ikhwan},
title = {{Saka-NLP: Indonesian NLP Toolkit}},
year = {2026},
version = {0.2.4},
doi = {10.5281/zenodo.20092640},
url = {https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP}
}
❤️ Credits & Support
- Architect: Muhammad Ikhwan Fathulloh
- License: MIT License
- Support: Saweria | Trakteer
Project details
Release history Release notifications | RSS feed
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 saka_nlp-0.2.4.tar.gz.
File metadata
- Download URL: saka_nlp-0.2.4.tar.gz
- Upload date:
- Size: 430.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c39459731f913327f1014410f5eb5fbb51dd2651d31a8839cedb7bef31855b40
|
|
| MD5 |
1a728d7801646574b4dcbf93e4f2987d
|
|
| BLAKE2b-256 |
36e981bffab104771018579760465b2e3d97a9917d186d490078d860d542e5db
|
File details
Details for the file saka_nlp-0.2.4-py3-none-any.whl.
File metadata
- Download URL: saka_nlp-0.2.4-py3-none-any.whl
- Upload date:
- Size: 446.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f81fc3f73fbdf980d18cc5c5766794f78e0665c80cd2610ffd7c68ed17ca75e
|
|
| MD5 |
8d2b8688b4985eb2551bcd880bc6cff3
|
|
| BLAKE2b-256 |
13808461366f523ad78c9e6a7073a6157b02da07f4343ae5c80dc24805ec21cb
|