Skip to main content

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

Bahasa Indonesia | English

PyPI version Documentation Colab DOI

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: menyebarluaskansebar luas, kerjasamakerja sama
  • Sunda: hulunagarahulu nagara, indungsukuindung suku
  • Minang: bundokanduangbundo kanduang, ranahminangranah 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

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

saka_nlp-0.2.5.tar.gz (432.3 kB view details)

Uploaded Source

Built Distribution

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

saka_nlp-0.2.5-py3-none-any.whl (447.8 kB view details)

Uploaded Python 3

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

Hashes for saka_nlp-0.2.5.tar.gz
Algorithm Hash digest
SHA256 df992c37e42f9eb12fba33cf1e2059889bb8fa4659c19938b265609a0d9f973e
MD5 770b1657891a17806dc3a7a4aab03273
BLAKE2b-256 a7f77b1387a6dd79a77245ff1ec4d7e4227c24f9811429986f7f8d88469b8e71

See more details on using hashes here.

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

Hashes for saka_nlp-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9ab4b00e4287e7ea76048b8546acc9879795eba3f621db4102d02853fd6229df
MD5 6fe840817b3f7bc8e2328071e7c0340b
BLAKE2b-256 84288adf11faace7bf8bb3451c520f69122c3b50f1013b7e11ee96f52ba80a83

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