Skip to main content

Saka: Pilar Pemrosesan Bahasa Nusantara

Project description

Saka: The Foundation of Indonesian NLP 🇮🇩

PyPI version Documentation Colab

Secara filosofis, Saka (dalam bahasa Jawa/Sunda) berarti "tiang penyangga" atau "pilar". Saka-NLP dibangun untuk menjadi sebuah architectural framework modern yang solid bagi pemrosesan teks bahasa Indonesia dan daerah.

Saka-NLP mendukung asynchronous processing, memiliki komponen yang dijaga terpisah secara modular (plug-and-play), serta menggunakan fungsi heuristik dan integrasi banyak sumber data terpercaya (seperti leksikon bahasa gaul, integrasi stopword, hingga ekstraksi KBBI resmi secara langsung).


🌐 Links


✨ Fitur Unggulan

  • Asynchronous Processing: Dilengkapi method pendamping async_* (contoh: async_tokenize) menggunakan asyncio untuk pemrosesan dataset besar secara efisien tanpa blocking.
  • Plug-and-Play Components: Fleksibel dalam memilih mesin stemming, tokenisasi, atau mengintegrasikan plugin pihak ketiga.
  • Heuristic Morphology Analyzer: Mendeteksi susunan pola awalan dan akhiran menggunakan aturan tata bahasa Indonesia yang dibekali dengan Early Stopping Validation ke dalam leksikon bahasa daerah dan pemulihan leburan huruf (Morphophonemic).
  • Live KBBI Scraper: Ekstraksi arti kata langsung mendompleng ke Kamus Besar Bahasa Indonesia Daring dari Kemendikbudristekdikti.
  • Agnostic Script Support: Termasuk dukungan untuk skrip bahasa daerah seperti Transliterasi Aksara Sunda, Aksara Jawa, dan Aksara Bali (Hanacaraka).

🚀 Panduan Instalasi

Library saka-nlp menggunakan pyproject.toml dengan bundler setuptools terbaru sehingga proses distribusinya sangat mudah.

Pastikan versi Python Anda adalah Python 3.8 atau lebih baru.

Opsi 1: Instalasi Via PyPI (Direkomendasikan)

Untuk menggunakan rilis stabil Saka-NLP, instal langsung melalui PyPI:

pip install saka-nlp

Opsi 2: Instalasi dari Source Code (Versi Deployment/Development)

Gunakan langkah ini jika Anda ingin turut berkontribusi, memodifikasi script mesin Saka-NLP, ataupun menggunakan snapshot git yang belum dirilis:

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

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

📖 Panduan Penggunaan Modul Inti

Saka-NLP didesain agar kode Python Anda menjadi bersih. Cukup lakukan satu baris import saka untuk mengeluarkan beragam utilitas tanpa membuang namespace.

0. Cek Versi

import saka

print(saka.__version__)
# Output: 0.1.9

1. Tokenisasi Cerdas

import saka

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

2. Normalisasi Bahasa Gaul (Slang)

Menggunakan slang lexicon yang kuat dan lengkap dari data sosial media.

import saka

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

3. Analisis Morfologi Teks

Saka dilengkapi dengan Heuristic Morphology Analyzer mutakhir. Modul ini bukan hanya sekedar memotong imbuhan secara serakah layaknya Stemming pada umumnya. Saka mampu merekonstruksi peleburan huruf (Morphophonemic Restructuring) dari imbuhan, menyelesaikan akar bentuk Kata Majemuk Serangkai, bahkan tervalidasi secara hibrida dengan pangkalan data daerah.

import saka

# Menangani kata majemuk & afiks luluh
print(saka.analyze("menyebarluaskan"))
# Output: {'root': 'sebar luas', 'prefixes': ['meny'], 'suffixes': ['kan'], 'type': 'unknown', 'regional_matches': []}

# Memanfaatkan validasi kamus daerah (*Early Stopping*)
print(saka.analyze("dipikanyaah"))
# Output: {'root': 'nyaah', 'prefixes': ['dipika'], 'suffixes': [], 'type': 'regional', 'regional_matches': ['sunda']}

4. Live Integrasi Pencarian KBBI

Saka menggunakan library pendukung (requests & bs4) untuk mengurai jawaban dari situs kbbi.web.id. Ini wajib menggunakan akses jaringan internet.

import saka

kbbi_result = saka.query_kbbi("belajar")

if kbbi_result["status"] == "found":
    for arti in kbbi_result["definitions"]:
        print(f"Arti: {arti}")
else:
    print("Kata tidak terdaftar di KBBI Daring.")

# Output:
# Arti: petunjuk yang diberikan kepada orang supaya diketahui (diturut)
# Arti: ilmu yang dituntut secara tidak sempurna, tidak akan berfaedah
# Arti: berusaha memperoleh kepandaian atau ilmu:
# Arti: berlatih:
# Arti: berubah tingkah laku atau tanggapan yang disebabkan oleh pengalaman

5. Koleksi Stopwords Nusantara (Hybrid)

Kumpulan Stopwords yang langsung dirender ke dalam object Set Python agar latensinya O(1) untuk kebutuhan ML. Mendukung corpus Indonesia (Tala), Sunda, dan Jawa.

import saka

# 1. Mengambil semua stopword (Indonesia, Sunda, Jawa digabung)
all_stops = saka.get_stopwords(lang="all") # "all" adalah parameter default
print(f"Total Stopwords Gabungan: {len(all_stops)}") # Output: 817

# 2. Mengambil stopword khusus bahasa Sunda
sunda_stops = saka.get_stopwords(lang="sunda")
print(f"Apakah 'saha' stopword Sunda? {'saha' in sunda_stops}") # Output: True

# 3. Mengambil stopword khusus Jawa ('jawa') atau Bali ('bali')
jawa_stops = saka.get_stopwords(lang="jawa")
bali_stops = saka.get_stopwords(lang="bali")

1. Ekosistem Sunda

Dukungan penuh untuk kamus digital SundaDigi dan transliterasi Aksara Sunda.

import saka

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

# Aksara Sunda
print(saka.latin_to_aksara_sunda("saka")) # Output: ᮞᮊ

2. Ekosistem Jawa

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

import saka

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

# Aksara Jawa
print(saka.latin_to_aksara_jawa("hanacaraka")) # Output: ꦲꦤꦕꦫꦏ

3. Ekosistem Bali

Pemanfaatan BASAbali Wiki dan dukungan penuh Aksara Bali (Wreastra).

import saka

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

# Aksara Bali
print(saka.latin_to_aksara_bali("bali 2026.")) 
# Output: ᬩᬮᬶ ᭒᭐᭒᭖᭟

🏛️ Detail Aksara Nusantara

Saka-NLP menggunakan pemetaan standar untuk transliterasi dasar bahasa daerah.

1. Aksara Sunda (Ngalagena)

Latin Aksara Latin Aksara
ha na
ca ra
ka da
ta sa
wa la
pa ja
ya nya
ma ga
ba nga

2. Aksara Jawa (Nglegena)

Latin Aksara Latin Aksara
ha na
ca ra
ka da
ta sa
wa la
pa dha
ja ya
nya ma
ga ba
tha nga

3. Aksara Bali (Wreastra)

Konsonan (Wreastra)

Latin Aksara Latin Aksara
ha da
na ta
ca sa
ra wa
ka la
ma pa
ga ja
ba ya
nga nya

Angka Bali

Angka Aksara Angka Aksara
0 5
1 6
2 7
3 8
4 9

Pangangge Suara (Sandhangan Bali)

Bunyi Aksara Nama
-i Ulu
-u Suku
Taling
-o Taling Detia
-e / -ě Pepet

🛠️ Penggunaan Melalui Command Line (CLI)

Saka-NLP menyertakan perintah langsung alias di dalam instalasinya. Anda dapat mengakses ini langsung di terminal!

# Melihat bantuan list CLI
saka --help

# Membedah morfologi kata secara cepat di Shell/CMD Anda
saka --stem "dimakan"

# Melakukan Normalisasi
saka --normalize "ngapain ke kampus klo libur"

🗄️ Referensi & Sumber Data

❤️ Credits

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.1.9.tar.gz (417.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.1.9-py3-none-any.whl (425.9 kB view details)

Uploaded Python 3

File details

Details for the file saka_nlp-0.1.9.tar.gz.

File metadata

  • Download URL: saka_nlp-0.1.9.tar.gz
  • Upload date:
  • Size: 417.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for saka_nlp-0.1.9.tar.gz
Algorithm Hash digest
SHA256 4ad401310b71440aabc933c1b8f452b4c6d56c15354a63f87148501b028d15e9
MD5 8fda4763b8ef066c9802969e48f30205
BLAKE2b-256 2769ccfe3d44fd50b8e5cfdada743fc9601852be9fee070855e63c469f87b564

See more details on using hashes here.

File details

Details for the file saka_nlp-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: saka_nlp-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 425.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for saka_nlp-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6014b407f56fc861807e03a7158b78d3494f0fed545b4f258b5fe8963ac28d3c
MD5 c9ba4801fdbca30a14657de5a0d5c521
BLAKE2b-256 e99c0b7d9f2e8f7d0799138d49aaea016f6bb62993224a9c884935fac264056d

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