Reference Documentation
Panduan lengkap teknis untuk setiap fungsi (methods) dan kapabilitas dalam arsitektur library Saka-NLP.
📦 Panduan Instalasi
Saka-NLP sangat mudah diinstalasi dan dikelola secara resmi melalui repositori Python Package Index (PyPI). Pastikan Anda menggunakan versi Python minimal 3.8.
pip install saka-nlp
Jika Anda tertarik untuk berpartisipasi dan berkontribusi secara mandiri (*source installation*):
git clone https://github.com/Muhammad-Ikhwan-Fathulloh/Saka-NLP.git
cd Saka-NLP
pip install -e .
Pemrosesan Dasar: tokenize
Membelah kalimat Indonesia yang rumit menjadi token-token individual, melestarikan tanda baca dengan cerdas.
| Parameter | Type | Keterangan |
|---|---|---|
text |
str |
Teks string murni yang ingin dipecah ke dalam representasi token. |
import saka
tokens = saka.tokenize("Halo, apa kabar Dunia-ku?!")
print(tokens)
# Output: ['Halo', ',', 'apa', 'kabar', 'Dunia-ku', '?', '!']
Note: Tersedia juga versi asynchronous
await saka.async_tokenize(text) untuk pemrosesan dataset besar berbasis event loop.
Pemurnian Bahasa: normalize
Melakukan standardisasi bahasa gaul (Slang), *typographical error* umum ke dalam standar formal tata bahasa Indonesia.
import saka
text = saka.normalize("gmn nih bro klo bsk ujiann")
print(text)
# Output: "bagaimana ini saudara kalau besok ujian"
Morfologi Tingkat Tinggi: analyze
Sistem heuritistik komprehensif yang mengatasi stemming konvensional. Fitur ini dilengkapi Morphophonemic Fix untuk peleburan kata dan Dictionary Early Stopping via leksikon daerah untuk mencegah over-stemming.
import saka
# Morphophonemic Fusion & Pemisahan Kata Majemuk
res = saka.analyze("menyebarluaskan")
print(res["root"]) # Output: 'sebar luas'
# Deteksi dialek regional (Sunda / Minang)
res2 = saka.analyze("bundokanduang")
print(res2["root"], res2["regional_matches"])
# Output: 'bundo kanduang' ['minang']
Penyaringan Kata: get_stopwords
Memanggil *set* berisi daftar stopwords Nusantara dan Internasional dengan kecepatan baca O(1).
Argumen lang |
Cakupan *Corpus* |
|---|---|
"all" (Default) |
Gabungan seluruh bahasa yang didukung. (900+ kata) |
"id" |
Eksklusif Stopwords Indonesia versi Tala Dataset. |
"sunda" / "jawa" / "bali" / "minang" |
Eksklusif Stopwords region yang diminta. |
"en" / "jaksel" |
Eksklusif Stopwords Internasional (English) dan Slang (Jaksel). |
import saka
# 1. Mengambil semua stopword (gabungan semua bahasa)
all_stops = saka.get_stopwords("all")
print(f"Total Stopwords Gabungan: {len(all_stops)}") # Output: 900+
# 2. Mengambil stopword khusus Sunda
sunda_stops = saka.get_stopwords("sunda")
print(f"Apakah 'saha' adalah stopword? {'saha' in sunda_stops}") # Output: True
# 3. Mengambil stopword Inggris ('en') dan Gaul Jaksel ('jaksel')
en_stops = saka.get_stopwords("en")
jaksel_stops = saka.get_stopwords("jaksel")
print("literally" in jaksel_stops) # Output: True
print("however" in en_stops) # Output: True
Optimalisasi Output: OutputFormatter
Mengonversi data hasil LLM ke berbagai format secara lokal untuk menghemat token dan meningkatkan performa.
def format(data: Any, format_type: str) -> str
| Format Type | Hasil Transformasi |
|---|---|
"html" |
Konversi Markdown/Data ke kode HTML (Local Process). |
"markdown" |
Konversi ke tabel/list Markdown terstruktur. |
"table" |
Konversi ke tabel Plain Text/ASCII. |
"csv" |
Konversi List of Dicts ke format CSV. |
"json" |
Konversi data ke format JSON string terformat. |
import saka
data = [{"id": 1, "text": "makan"}, {"id": 2, "text": "sare"}]
# Format ke HTML secara lokal (Hemat Token!)
html_res = saka.OutputFormatter.format(data, "html")
print(html_res)
# Format ke JSON
json_res = saka.OutputFormatter.format(data, "json")
Prompt Builder LLM: build_prompt
Saka-NLP menyediakan fungsi untuk merakit struktur prompt LLM yang ideal beserta optimasi token dan fitur otomatisasi parsing (penguraian teks).
def parse_llm_output(text: str, format_type: str) -> Any
import saka
prompt = saka.build_prompt(
instruction="Klasifikasikan sentimen dari ulasan berikut.",
context="Anda adalah asisten AI.",
input_data="Makanannya enak bgt tpi pelayanannya lama parah...",
output_indicator="JSON",
optimize_text=True,
max_tokens=50
)
print(prompt)
# Parsing Output LLM (Contoh)
llm_response = "```json\n{\"sentimen\": \"negatif\"}\n```"
hasil_dict = saka.parse_llm_output(llm_response, format_type="json")
print(hasil_dict["sentimen"]) # Output: negatif
Evaluasi & Benchmark: SakaEval
Modul untuk menjalankan evaluasi performa model pada berbagai tugas NLP (Sentiment, NER, QA) secara asynchronous.
def load_hf_dataset(path: str, data_files: Optional[str]) -> None
async def evaluate(model: Any, **column_mapping) -> Dict[str, Any]
from saka.evaluation.benchmarker import SakaEval
evaluator = SakaEval(task="sentiment")
evaluator.load_hf_dataset("Muhammad-Ikhwan-Fathulloh/Saka-Eval", name="sentiment")
# Evaluasi asinkron
results = await evaluator.evaluate(model, text="text", label="label")
evaluator.save_report("report.json")
Integrasi Daring: query_kbbi
Pencarian arti kata langsung mengekstraksi situs resmi Kemendikbud menggunakan pendekatan Web Scraping *Real-time*.
import saka
res = saka.query_kbbi("mahakarya")
print(res["definitions"])
# Output: ['karya besar', 'karya gemilang']
Ekosistem & Leksikon Sunda
Saka-NLP memiliki modul khusus Bahasa Sunda untuk meretrieve definisi secara lokal dan bertukar Aksara.
def latin_to_aksara_sunda(text: str) -> str
def aksara_sunda_to_latin(text: str) -> str
import saka
# Dictionary Definition Search
res = saka.query_sundadigi("wilujeng")
print(res["definitions"]["arti"]) # Output: selamat
# Transliteration
print(saka.latin_to_aksara_sunda("saka")) # Output: ᮞᮊ
Ekosistem & Leksikon Jawa
Sinkronisasi offline kamus bahasa Jawa dan modul konversi Hanacaraka berbasis tata tulis Keraton/Sastra.
def latin_to_aksara_jawa(text: str) -> str
def aksara_jawa_to_latin(text: str) -> str
import saka
# Dictionary Definition Search
res = saka.query_sastra("sugeng")
print(res["definitions"][0]["arti"]) # Output: selamat, sejahtera
# Transliterasi Aksara Jawa
print(saka.latin_to_aksara_jawa("hanacaraka")) # Output: ꦲꦤꦕꦫꦏ
Ekosistem & Leksikon Bali
Integrasi BASAbali Wiki untuk pencarian leksikal dan dukungan transliterasi Aksara Bali (Wreastra) yang komprehensif.
def latin_to_aksara_bali(text: str) -> str
def aksara_bali_to_latin(text: str) -> str
import saka
# Dictionary Definition Search (Offline Fallback)
res = saka.query_basabali("rahajeng")
print(res["definitions"][0]["arti"]) # Output: selamat
# Transliterasi Aksara Bali (Latin -> Aksara)
aksara = saka.latin_to_aksara_bali("bali 2026.")
print(aksara) # Output: ᬩᬮᬶ ᭒᭐᭒᭖᭟
📚 Sitasi (Citation)
Jika Anda menggunakan Saka-NLP dalam penelitian atau proyek Anda, mohon sitasi menggunakan format berikut:
APA
Note: Anda dapat menyitasi seluruh versi Saka-NLP menggunakan DOI 10.5281/zenodo.20092640. DOI ini mewakili seluruh versi dan selalu mengarah ke yang terbaru.
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}
}