Saka-NLP: Indonesian Language Processing with Prompting and Agentic AI Support
Project description
Saka: Indonesian NLP with Prompting and Agentic AI Support 🇮🇩 v0.2.5
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. Contoh lengkap dapat dilihat di basic_usage.py.
1. Tokenisasi & Normalisasi
import saka
# Tokenisasi (Handle imbuhan & tanda baca)
text = "Belajar NLP di era 5G, seru bgt!"
tokens = saka.tokenize(text)
# ['Belajar', 'NLP', 'di', 'era', '5G', ',', 'seru', 'bgt', '!']
# Normalisasi Slang (Social Media Text)
normalized = saka.normalize("klo gimana ntar gw k kampus")
# 'kalau bagaimana nanti saya ke kampus'
2. Morfologi & KBBI
import saka
# Analisis Morfologi (Handle kata majemuk & peleburan)
word = "mempertanggungjawabkan"
analysis = saka.analyze(word)
print(analysis["root"]) # 'tanggung jawab'
# Live KBBI Search (Web Scraping Real-time)
res = saka.query_kbbi("belajar")
# {'status': 'found', 'definitions': [...]}
3. Stopwords Nusantara
import saka
# Mendukung: id, sunda, jawa, bali, minang, en, jaksel, all
stops = saka.get_stopwords("minang")
print("ampek" in stops) # True
🤖 Agentic AI & Prompting
Membangun aplikasi berbasis LLM dengan kontrol penuh. Contoh lengkap: output_demo.py & multi_agent_edu_demo.py.
import saka
from saka import Agent, OutputFormatter
# 1. Output Formatting (Hemat Token LLM!)
data = [{"word": "saka", "pos": "noun"}]
# Format ke HTML/Markdown secara lokal
markdown_table = OutputFormatter.format(data, "markdown")
# 2. Structured Agent & Tool Calling
bot = Agent("Asisten", "Pakar Bahasa")
bot.add_tool(name="cek_arti", desc="Cek KBBI", func=saka.query_kbbi)
# 3. Prompt Builder (Optimasi Token)
prompt = saka.build_prompt(
role="Analist",
task="Klasifikasi",
input_data="Teks...",
optimize_text=True
)
📊 Saka-Eval Benchmark
Evaluasi model Anda secara asinkron. Contoh: saka_eval_huggingface_demo.py.
from saka.evaluation.benchmarker import SakaEval
evaluator = SakaEval(task="sentiment")
# Load via config name ("sentiment" atau "ner")
evaluator.load_hf_dataset("Muhammad-Ikhwan-Fathulloh/Saka-Eval", name="sentiment")
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.5},
doi = {10.5281/zenodo.20092640},
url = {https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP}
}
🗄️ Sumber & Kredit
Saka-NLP dibangun di atas fondasi riset dan dataset terbuka berikut. Kami berterima kasih kepada para peneliti dan kontributor:
| Kategori | Sumber | Deskripsi |
|---|---|---|
| Dataset | Carant-AI | Indonesian Sentiment Dataset |
| Kiuyha | Surabaya NER Dataset | |
| IndoNLU | Benchmark Standards | |
| Tala Dataset | Indonesian Stopwords | |
| Leksikon | SundaDigi | Kamus Digital Bahasa Sunda |
| Sastra.org | Leksikon Bahasa Jawa | |
| BASAbali Wiki | Kamus Bahasa Bali | |
| Library | HuggingFace | Datasets & Hub Ecoystem |
| scikit-learn | Evaluation Metrics | |
| Emoji/Emot | Social Media Text Handling |
❤️ 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.5.tar.gz.
File metadata
- Download URL: saka_nlp-0.2.5.tar.gz
- Upload date:
- Size: 432.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df992c37e42f9eb12fba33cf1e2059889bb8fa4659c19938b265609a0d9f973e
|
|
| MD5 |
770b1657891a17806dc3a7a4aab03273
|
|
| BLAKE2b-256 |
a7f77b1387a6dd79a77245ff1ec4d7e4227c24f9811429986f7f8d88469b8e71
|
File details
Details for the file saka_nlp-0.2.5-py3-none-any.whl.
File metadata
- Download URL: saka_nlp-0.2.5-py3-none-any.whl
- Upload date:
- Size: 447.8 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 |
9ab4b00e4287e7ea76048b8546acc9879795eba3f621db4102d02853fd6229df
|
|
| MD5 |
6fe840817b3f7bc8e2328071e7c0340b
|
|
| BLAKE2b-256 |
84288adf11faace7bf8bb3451c520f69122c3b50f1013b7e11ee96f52ba80a83
|