Saujana 🇮🇩
Saujana adalah standalone framework Natural Language Processing (NLP) dan Word Embedding native Bahasa Indonesia.
✨ Fitur Utama
- 🚀 Native Engine: Pelatihan Word2Vec dan FastText kustom tanpa dependensi eksternal berat.
- 🧠 Semantic API: Pencarian kemiripan (similarity), analogi kata, dan deteksi OOV (Out-of-Vocabulary).
- 🔗 Multilingual Alignment: Penyelarasan ruang vektor bahasa daerah (Sunda, Jawa, Bali) ke Bahasa Indonesia menggunakan algoritma Procrustes.
- 🛠️ Corpus Builder: Alat untuk membangun dataset pelatihan dari ribuan file teks lokal secara otomatis.
- 🧩 Saka-NLP Ready: Terintegrasi penuh dengan ekosistem Saka-NLP untuk morfologi dan normalisasi Nusantara.
📦 Instalasi
pip install saujana-nlp
🚀 Penggunaan Cepat
1. Memuat Model Vektor
Saujana menyediakan model pre-trained yang siap digunakan untuk ekstraksi fitur semantik.
import saujana
# Memuat model Bahasa Indonesia sedang (~200k kata)
nlp = saujana.load("id_saujana_md")
doc = nlp("Presiden bertolak menuju Jakarta untuk pertemuan tingkat tinggi.")
for token in doc:
print(f"{token.text:12} | POS: {token.pos_:6} | Lemma: {token.lemma_}")
2. Analisis Kemiripan (Similarity)
Bandingkan dokumen atau kata berdasarkan konteks semantiknya.
doc1 = nlp("Jokowi mengunjungi ibu kota.")
doc2 = nlp("Presiden pergi ke Jakarta.")
print(f"Skor Kemiripan: {doc1.similarity(doc2):.4f}")
🛠️ Fitur Lanjut
1. Pelatihan Model Word Embedding Native
Anda dapat melatih model Anda sendiri secara native dengan format .npz yang memuat kilat.
from saujana.vectors.loader import train_word2vec
sentences = [["saya", "suka", "nlp"], ["saujana", "sangat", "cepat"]]
vocab = train_word2vec(sentences, vector_size=100, epochs=10)
# Cari kata terdekat
print(vocab.most_similar("nlp"))
2. Pembangun Korpus (Corpus Builder)
Gunakan ribuan data mentah Anda menjadi korpus siap latih.
from saujana.vectors.training import CorpusBuilder
builder = CorpusBuilder()
builder.add_directory("./data/artikel_berita")
builder.add_file("./data/kamus_tambahan.txt")
# Memproses dan menggabung menjadi satu file korpus bersih
corpus_file = builder.build("data_latih.txt", lang="id")
3. Penyelarasan Bahasa Daerah (Alignment)
Selaraskan model bahasa daerah agar berada dalam ruang vektor yang sama dengan Bahasa Indonesia.
from saujana.vectors.training import FastTextTrainer
trainer = FastTextTrainer()
# Definisi kata jangkar (anchor words)
anchors = [("makan", "tuang"), ("pergi", "angkat"), ("tidur", "kulem")]
# Putar model Sunda agar selaras dengan Indonesia
aligned_model = trainer.align_models(sunda_model, indo_model, anchors)
🤝 Ekosistem Saka-NLP
Saujana bertindak sebagai lapisan semantik (Word Embeddings) yang melengkapi lapisan linguistik (Morfologi/Normalisasi) dari Saka-NLP.
[!TIP] Untuk dokumentasi lengkap mengenai Normalisasi Slang, Stemming Nusantara, Analisis Morfologi Sunda/Jawa/Bali, dan penggunaan modul Saka-NLP lainnya, silakan kunjungi:
📊 API Reference Singkat
| Objek | Properti Utama | Deskripsi |
|---|---|---|
| Token | text, pos_, lemma_, is_stop, vector |
Unit kata tunggal dalam dokumen. |
| Doc | ents, sents, vector, similarity() |
Kontainer teks hasil pemrosesan pipeline. |
| Vocab | most_similar(), analogy(), get_vector() |
Pusat data representasi vektor kata. |
| Span | text, label_, vector |
Potongan dari dokumen (misal: Frasa/Entitas). |
📜 Lisensi
Saujana didistribusikan di bawah lisensi MIT. Bebas digunakan untuk keperluan riset maupun komersial.
Website: saujana-nlp.netlify.app
Creator: Muhammad Ikhwan Fathulloh
Dikembangkan dengan ❤️ untuk memperkuat kedaulatan data bahasa Nusantara.
Metadata
Release files for saujana-nlp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| saujana_nlp-0.1.1.tar.gz | 35.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| saujana_nlp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.8 kB
Release files / saujana_nlp-0.1.1.tar.gz
| Download URL | saujana_nlp-0.1.1.tar.gz |
|---|---|
| Size | 35.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13d903762500a736a43e6869ef63291115694ea478624a52997426428dfae540
|
|
BLAKE2b-256 checksum How to use checksums |
7996041cadb4b34b676751fead65e45d1987b4273317504da36d3ec17b30761b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Release files / saujana_nlp-0.1.1-py3-none-any.whl
| Download URL | saujana_nlp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 37.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b580503eb73ac2dfac99dda2e002d3380063894c772b28fb9a6e07eab8552a63
|
|
BLAKE2b-256 checksum How to use checksums |
34329bc001adb50565e424b68e13dbd2e4bfd31400b914429d58e6eedaa76a17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|