---
language:
- id
license: mit
tags:
- cognitive-language-model
- indonesian
- bahasa-indonesia
- knowledge-representation
- explicit-reasoning
- morphology
- semantic-parsing
- common-sense
- graph-of-states
library_name: aksara
pipeline_tag: text-generation
model-index:
- name: AKSARA-CLM-v1
results:
- task:
type: text-generation
name: Cognitive Language Modeling
metrics:
- name: Loss
type: loss
value: 1.858
- name: Correctness (E1)
type: accuracy
value: 0.70
- name: Morphology (E2)
type: accuracy
value: 1.00
- name: Generalization (E3)
type: accuracy
value: 1.00
- name: Inference Chain (E4)
type: accuracy
value: 1.00
- name: Context Tracking (E5)
type: accuracy
value: 1.00
---
# AKSARA
**Adaptive Knowledge & Semantic Architecture for Bahasa Representation & Autonomy**
*Framework yang menghasilkan CLM (Cognitive Language Model) — model bahasa Indonesia yang memahami makna, bukan memprediksi token.*
[](https://python.org)
[](LICENSE)
[](https://huggingface.co/emylton/AKSARA-CLM-v1)
> *"Kami tidak mengajarkan model bahasa Indonesia. Kami membuat model lahir sebagai bahasa Indonesia."*
>
> — Emylton Leunufna
---
## Apa itu AKSARA?
AKSARA adalah **framework** yang menghasilkan **CLM (Cognitive Language Model)** — model bahasa Indonesia yang **memahami makna**, bukan memprediksi token. Jika Transformer menghasilkan LLM, maka AKSARA menghasilkan CLM. Setiap keputusan komputasi punya **justifikasi linguistik eksplisit** berdasarkan TBBBI (Tata Bahasa Baku Bahasa Indonesia).
```python
from aksara import AksaraFramework
fw = AksaraFramework.dari_kbbi("kbbi_core_v2.json")
state = fw.proses("Hakim menjatuhkan vonis kepada terdakwa.")
print(state.ringkasan())
# → status=VALID | skor=0.85 | pelanggaran=0 | morfem=6
print(state.krl_result.jelaskan())
# → Proposisi: AKSI(jatuh, agen=hakim, pasien=vonis, penerima=terdakwa)
# Frame: VONIS_HUKUM (skor=0.92)
# Inferensi: terdakwa STATUS_MENJADI terpidana
# terdakwa WAJIB menjalani putusan
```
**CLM ini MEMAHAMI MAKNA** — "terdakwa menjadi terpidana" bukan di-retrieve dari database dan bukan diprediksi secara statistik, tapi **di-derive** dari aturan general: *"jika profesi hukum melakukan aksi hukum terhadap warga, maka status warga berubah"*.
---
## Transformer → LLM vs AKSARA → CLM
| Aspek | Transformer → LLM | AKSARA → CLM |
|-------|-------------------|---------------|
| **Tujuan utama** | Memprediksi token berikutnya | **Memahami makna prompt** |
| **Unit dasar** | Subword token statistik | Morfem (root + afiks TBBBI) |
| **Pengetahuan** | Implisit di miliaran bobot | Eksplisit di Knowledge Base |
| **Reasoning** | Emergent (tidak dijamin) | Forward chaining deterministik |
| **Update pengetahuan** | Retrain/fine-tune | Edit KB, langsung berlaku |
| **Interpretabilitas** | Black box | Setiap inferensi bisa dilacak |
| **Ukuran model** | 4GB — 700GB | ~5MB |
| **Hardware minimum** | GPU 8GB+ | CPU cukup (inference) |
---
## Instalasi
```bash
pip install aksara
```
Atau dari source:
```bash
git clone https://github.com/aksara-id/aksara.git
cd aksara
pip install -e .
```
### Dependensi
- Python 3.11+
- PyTorch 2.0+
- NumPy 1.24+
---
## Arsitektur Pipeline
```
Kalimat (string)
↓
┌─────────────────────────────────────────────────────────────┐
│ [ LPS ] Linguistic Parse System │
│ Dekomposisi morfem deterministik (TBBBI rules) │
│ "mempublikasikan" → me- + publikasi + -kan │
├─────────────────────────────────────────────────────────────┤
│ [ SFM ] Semantic Field Manifold │
│ Grounding semantik ke KBBI (71,211 kata, 10 domain) │
├─────────────────────────────────────────────────────────────┤
│ [ CPE ] Constraint Propagation Engine │
│ Evaluasi constraint morfosintaktik │
├─────────────────────────────────────────────────────────────┤
│ [ CMC ] Categorical Meaning Composer │
│ Komposisi makna kategorial │
├─────────────────────────────────────────────────────────────┤
│ [ TDA ] Topological Dependency Analyzer │
│ Analisis dependensi topologis │
├─────────────────────────────────────────────────────────────┤
│ [ KRL ] Knowledge Representation Layer │
│ Proposisi + Frame matching + Inferensi │
└─────────────────────────────────────────────────────────────┘
↓
AksaraState — output terstruktur + penjelasan + inferensi
```
---
## Cara Pakai
### Analisis Kalimat
```python
from aksara import AksaraFramework
fw = AksaraFramework.dari_kbbi("kbbi_core_v2.json")
state = fw.proses("Dokter merawat pasien di rumah sakit.")
# Ringkasan
print(state.ringkasan())
# Penjelasan lengkap (bahasa Indonesia)
print(state.jelaskan())
# Analisis morfologi
for m in state.morfologi:
print(f" {m['teks']} → root={m['root']}, afiks={m['afiks']}")
```
### Penalaran (Inference)
```python
state = fw.proses("Petani menanam padi di sawah.")
if state.krl_result:
krl = state.krl_result
print(krl.jelaskan())
# Proposisi: AKSI(tanam, agen=petani, pasien=padi, lokasi=sawah)
# Inferensi: hasil AKAN_TERSEDIA setelah proses
# petani MENGHASILKAN hasil
# petani BERGANTUNG_PADA kondisi alam
# Query inferensial
for inf in krl.tanya("MENGHASILKAN"):
print(f" {inf.subjek} {inf.relasi} {inf.objek}")
```
### Penalaran Multi-Langkah (Chain Reasoning)
```python
from aksara.primitives.krl.wacana import JendelaWacana
fw = AksaraFramework.dari_kbbi("kbbi_core_v2.json")
wacana = JendelaWacana()
# Langkah 1: penetapan regulasi
s1 = fw.proses("Menteri menetapkan peraturan baru tentang lingkungan.")
wacana.tambah(s1)
# Langkah 2: kewajiban dari regulasi
s2 = fw.proses("Peraturan itu mewajibkan semua pabrik mengurangi emisi.")
wacana.tambah(s2)
# Query: apa kewajiban pabrik?
# → pabrik WAJIB patuhi peraturan (derived dari chain 2 aturan)
```
---
## Extend Knowledge Base (Tanpa Training)
Ini keunggulan utama AKSARA — tambah pengetahuan domain baru **langsung berlaku**:
```python
from aksara.primitives.krl.kb import KnowledgeBase, TipeEntitas, AturanDunia
kb = KnowledgeBase()
# 1. Tambah kata baru → tipe entitas
kb.tambah_kata("drone", TipeEntitas.PRODUK_TEKNOLOGI)
kb.tambah_kata("blockchain", TipeEntitas.PRODUK_TEKNOLOGI)
# 2. Tambah aturan reasoning baru
kb.tambah_aturan(AturanDunia(
nama="TEKNOLOGI_MENGUBAH_PROSES",
tipe_aksi="buat",
tipe_agen=TipeEntitas.PROFESI_TEKNOLOGI,
tipe_pasien=TipeEntitas.PRODUK_TEKNOLOGI,
kesimpulan=[
"pasien MENGOTOMASI proses",
"efisiensi MENINGKAT",
],
domain="teknologi", prioritas=2,
))
# Langsung bisa bernalar tentang drone — tanpa training!
```
Lihat `examples/extend_kb.py` untuk contoh lengkap.
---
## Knowledge Base Saat Ini
| Komponen | Jumlah | Deskripsi |
|----------|--------|-----------|
| **TipeEntitas** | 61 | Hierarki ontologis (profesi, institusi, lokasi, benda, abstrak) |
| **KATA_KE_TIPE** | 504 | Pemetaan kata → tipe entitas |
| **VERBA_KE_TIPE_AKSI** | 369 | Pemetaan verba → tipe aksi semantik |
| **SEMUA_ATURAN** | 32 | Aturan kausal general per domain |
| **KBBI Leksikon** | 71,211 | Kata dasar + 10 domain semantik |
### Domain yang Dicakup
Hukum, Kesehatan, Pendidikan, Pertanian, Militer, Ekonomi, Seni/Budaya, Keagamaan, Politik, Transportasi, Bencana, Sosial, Pertambangan, Maritim, Media
---
## Evaluasi
```bash
python tools/evaluasi_model.py
```
| Evaluasi | Skor | Deskripsi |
|----------|------|-----------|
| **E1** Generalisasi State | 70% | Constraint satisfaction kalimat baru |
| **E2** Morfologi Kata Baru | 100% | Dekomposisi afiks TBBBI (deterministik) |
| **E3** Kalimat Baru | 100% | Realisasi proposisi → kalimat (deterministik) |
| **E4** Penalaran KRL | 100% | Forward chaining multi-langkah |
| **E5** Wacana Lintas Kalimat | 100% | Entity tracking + resolusi referensi |
| **Total** | **94%** | |
---
## CLI
```bash
python -m aksara audit # Framework audit
python -m aksara info --checkpoint ./ckpt # Info checkpoint
python -m aksara generate --checkpoint ./ckpt --prompt "anak membaca"
```
---
## Struktur Proyek
```
aksara/
framework.py ← AksaraFramework (orkestrator utama)
config.py ← AksaraConfig
primitives/
lps/ ← Linguistic Parse System (morfologi TBBBI)
sfm/ ← Semantic Field Manifold (grounding KBBI)
cpe/ ← Constraint Propagation Engine
cmc/ ← Categorical Meaning Composer
tda/ ← Topological Dependency Analyzer
krl/ ← Knowledge Representation Layer
kb.py ← Knowledge Base (entitas, aksi, aturan)
encoder.py ← PropositionalEncoder
inference.py ← InferenceEngine (forward chaining)
wacana.py ← JendelaWacana (discourse tracking)
base/
state.py ← AksaraState (output pipeline)
tools/
evaluasi_model.py ← Evaluasi E1-E5
run_training.py ← Training BSU/MEB
examples/
extend_kb.py ← Contoh extend knowledge base
```
---
## Untuk Developer: 3 Jalur Pengembangan
### Jalur 1: Pakai Pre-trained + Extend KB
- Download model pre-trained
- Tambah domain knowledge via KB API
- **Tanpa training, tanpa GPU**
### Jalur 2: Fine-tune
- Mulai dari pre-trained weights
- Tambahkan corpus domain spesifik
- Retrain BSU/MEB untuk constraint satisfaction lebih tajam
### Jalur 3: Build dari Nol
- Framework sama, ganti KB + aturan afiks
- Untuk bahasa lain (Melayu, Jawa, Sunda)
---
## Dokumentasi Tambahan
- [Panduan Corpus](docs/CORPUS_GUIDE.md)
---
## Penulis
**Emylton Leunufna**
---
## Lisensi
MIT