Badword Filter adalah library Node.js sederhana untuk mendeteksi kata kasar atau tidak pantas menggunakan pendekatan normalisasi teks dan perhitungan similarity (Levenshtein Distance).
Dirancang ringan, fleksibel, dan cocok untuk bot chat, REST API, maupun aplikasi teks lainnya.
- Case insensitive (tidak sensitif huruf besar/kecil)
- Normalisasi karakter non-alfanumerik
- Deteksi kata hasil modifikasi (typo, plesetan, variasi penulisan)
- Threshold similarity dapat dikonfigurasi
- 3 mode utama:
flag(text)→ boolean deteksicensor(text)→ sensor otomatisanalyze(text)→ analisis detail
- Mudah diintegrasikan
git clone <repository-url>
cd badword-filterAtau salin manual file:
index.jswords.jsonwhitelist.json
.
├── index.js
├── words.json
└── whitelist.json
const badwords = require('./index');badwords.flag('anjir tolol banget');
// truebadwords.flag('assassin creed');
// false (whitelist)badwords.censor('anjir tolol banget');
// "*** *** banget"badwords.analyze('anjir tolol banget');Output:
{
text: 'anjir tolol banget',
words: 3,
badwords: ['anjir', 'tolol'],
count: 2,
censored: '*** *** banget',
locations: [0, 1]
}- Normalisasi teks (lowercase, hapus simbol, kompres karakter)
- Cek whitelist (jika ada → aman)
- Hilangkan vokal untuk pencocokan konsonan
- Hitung Levenshtein similarity
- Kata dianggap terlarang jika melewati threshold bawaan
Contoh normalisasi:
anjiiir → anjir
ngentttod → ngentod
Atur threshold di index.js:
if (consonantMatch && sim >= 0.70) return true;
if (sim >= 0.75) return true;Lebih ketat:
if (consonantMatch && sim >= 0.80) return true;
if (sim >= 0.85) return true;Berisi daftar kata kasar, contoh:
[
"anjing",
"bangsat",
"kontol",
"memek",
"tolol"
]Berisi kata aman:
[
"anjing laut",
"konyol"
]Kontribusi sangat terbuka dan dihargai 🙌
- Fork repository ini
- Buat branch baru
- Lakukan perubahan
- Ajukan Pull Request
Atau:
- Laporkan bug
- Ajukan ide / saran
melalui Issues GitHub.
- Library ini berbasis heuristik, bukan NLP
- Tidak semua kata mirip ejaan bermakna negatif
- Sesuaikan threshold dengan konteks aplikasi
- Gunakan whitelist untuk menghindari false-positive
MIT License