Skip to main content

A fast Indonesian NLP and Word Embedding library.

Project description

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.

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

saujana_nlp-0.1.1.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saujana_nlp-0.1.1-py3-none-any.whl (37.1 kB view details)

Uploaded Python 3

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

Hashes for saujana_nlp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 13d903762500a736a43e6869ef63291115694ea478624a52997426428dfae540
MD5 5568b7b71061bc343d0bc8749bb7cdff
BLAKE2b-256 7996041cadb4b34b676751fead65e45d1987b4273317504da36d3ec17b30761b

See more details on using hashes here.

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

Hashes for saujana_nlp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b580503eb73ac2dfac99dda2e002d3380063894c772b28fb9a6e07eab8552a63
MD5 23160f79fe8f8f28cef7e1fb4c6bc7fd
BLAKE2b-256 34329bc001adb50565e424b68e13dbd2e4bfd31400b914429d58e6eedaa76a17

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