A fast Indonesian NLP and Word Embedding library.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file saujana_nlp-0.1.1.tar.gz.
File metadata
- Download URL: saujana_nlp-0.1.1.tar.gz
- Upload date:
- Size: 35.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13d903762500a736a43e6869ef63291115694ea478624a52997426428dfae540
|
|
| MD5 |
5568b7b71061bc343d0bc8749bb7cdff
|
|
| BLAKE2b-256 |
7996041cadb4b34b676751fead65e45d1987b4273317504da36d3ec17b30761b
|
File details
Details for the file saujana_nlp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: saujana_nlp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 37.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b580503eb73ac2dfac99dda2e002d3380063894c772b28fb9a6e07eab8552a63
|
|
| MD5 |
23160f79fe8f8f28cef7e1fb4c6bc7fd
|
|
| BLAKE2b-256 |
34329bc001adb50565e424b68e13dbd2e4bfd31400b914429d58e6eedaa76a17
|