nusantara-nlp
v0.1.0
Published
Nusantara NLP library for JavaScript/TypeScript — Bahasa Indonesia
Downloads
161
Maintainers
Readme
Nusantara NLP (JS/TS) 🇮🇩
Porting pustaka Nusantara NLP dari Python ke JavaScript/TypeScript. Pustaka ini dirancang khusus untuk pemrosesan bahasa alami (Natural Language Processing - NLP) teks Bahasa Indonesia dengan performa tinggi dan dukungan penuh untuk modul ES (ESModules).
Pustaka ini sangat cocok untuk preprocessing teks sebelum analisis sentimen, klasifikasi teks, pembuatan chatbot, maupun kebutuhan data mining lainnya.
🚀 Fitur Utama
Pustaka ini membagi alur preprocessing teks Bahasa Indonesia menjadi beberapa tahap yang dapat digunakan secara terpisah atau sekaligus melalui satu pipeline utama:
- Text Normalizer:
- Menghapus tanda baca, angka, spasi ganda, email, dan URL.
- Konversi tulisan alay / Leetspeak (contoh:
4➔a,3➔e). - Konversi emoji ke teks Bahasa Indonesia deskriptif (contoh:
😠➔marah). - Normalisasi kata slang / singkatan (contoh:
udh➔sudah,yg➔yang).
- Tokenizer:
- Tokenizer kata yang cerdas dan sadar konteks.
- Mempertahankan kata ulang / reduplikasi (contoh:
sehari-hari➔ tetap satu token). - Sentence Tokenizer untuk memecah teks menjadi daftar kalimat.
- Stopword Removal:
- Menghapus kata-kata umum yang tidak membawa nilai sentimen/makna penting dalam Bahasa Indonesia.
- Stemmer:
- Stemmer Bahasa Indonesia cepat yang mengembalikan kata berimbuhan ke kata dasar menggunakan kamus kata dasar internal.
📦 Instalasi
Instal library menggunakan npm:
npm install nusantara-nlp-jsAtau menggunakan yarn / pnpm:
yarn add nusantara-nlp-js
# atau
pnpm add nusantara-nlp-js💻 Penggunaan
1. Menggunakan Pipeline Utama (NusantaraNLP)
Cara termudah dan direkomendasikan untuk memproses teks secara end-to-end:
import { NusantaraNLP } from 'nusantara-nlp-js';
const nlp = new NusantaraNLP();
const rawText = "gw ga suka pelayanan 😠 parah banget!!";
const result = nlp.process(rawText);
console.log(result);
/*
Output:
{
raw: 'gw ga suka pelayanan 😠 parah banget!!',
cleaned: 'gw ga suka pelayanan marah parah banget',
tokens: [ 'gw', 'ga', 'suka', 'pelayanan', 'marah', 'parah', 'banget' ],
tokensClean: [ 'suka', 'pelayanan', 'marah', 'parah' ],
tokensStem: [ 'suka', 'layan', 'marah', 'parah' ],
result: 'suka layan marah parah'
}
*/2. Menggunakan Komponen Secara Terpisah
A. Text Normalizer
Berguna untuk membersihkan teks kotor dari media sosial:
import { Normalizer } from 'nusantara-nlp-js';
const normalizer = new Normalizer();
// 1. Membersihkan teks dasar
console.log(normalizer.clean("Beli di sini: https://example.com !!!"));
// Output: "Beli di sini"
// 2. Normalisasi Leetspeak / Tulisan Alay
console.log(normalizer.convertLeet("k3r3n b4ng3t"));
// Output: "keren banget"
// 3. Konversi Emoji ke Deskripsi Bahasa Indonesia
console.log(normalizer.convertEmoji("Saya senang sekali 😊"));
// Output: "Saya senang sekali senyum"
// 4. Normalisasi Slang / Singkatan
console.log(normalizer.convertSlang("yg udh msh ga tau"));
// Output: "yang sudah masih tidak tahu"B. Tokenizer
Pecah kalimat atau paragraf dengan benar:
import { Tokenizer } from 'nusantara-nlp-js';
const tokenizer = new Tokenizer();
// Tokenisasi Kata (Mempertahankan kata ulang)
console.log(tokenizer.tokenize("anak-anak bermain sehari-hari."));
// Output: [ 'anak-anak', 'bermain', 'sehari-hari' ]
// Tokenisasi Kalimat
console.log(tokenizer.tokenizeSentence("Saya belajar NLP. Sangat menyenangkan!"));
// Output: [ 'Saya belajar NLP.', 'Sangat menyenangkan!' ]C. Stopword Removal
Saring kata-kata tidak penting:
import { Stopword } from 'nusantara-nlp-js';
const stopword = new Stopword();
const tokens = ["saya", "suka", "makan", "nasi", "yang", "enak"];
console.log(stopword.remove(tokens));
// Output: [ 'suka', 'makan', 'nasi', 'enak' ]D. Stemmer
Kembalikan kata berimbuhan ke kata dasarnya secara presisi:
import { Stemmer } from 'nusantara-nlp-js';
const stemmer = new Stemmer();
console.log(stemmer.stem("mempermasalahkan")); // Output: "masalah"
console.log(stemmer.stem("ketidakhadiran")); // Output: "hadir"
console.log(stemmer.stem("pelajaran")); // Output: "ajar"🛠️ Konfigurasi Tingkat Stopword Removal
Saat menginisialisasi NusantaraNLP, Anda dapat menentukan tingkat agresivitas penghapusan kata stopword (stopwordMode):
'conservative'(Default): Menghapus kata hubung dasar, namun tetap mempertahankan kata-kata penting yang bisa memengaruhi konteks analisis sentimen (misal: "tidak", "belum").'aggressive': Menghapus semua kata yang terdaftar di kamus stopword secara penuh tanpa pengecualian.
import { NusantaraNLP } from 'nusantara-nlp-js';
// Menggunakan mode agresif
const nlpAggressive = new NusantaraNLP('aggressive');📄 Lisensi
Proyek ini dilisensikan di bawah MIT License. Bebas digunakan untuk proyek pribadi maupun komersial.
