Skip to main content

Saujana 🇮🇩

Python Version PyPI Website License: MIT

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:

👉 https://saka-nlp.netlify.app/


📊 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)

Source distribution for saujana-nlp 0.1.1
File Size Uploaded
saujana_nlp-0.1.1.tar.gz 35.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for saujana-nlp 0.1.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page