Algoritma NMF (Non-Negative Matrix Factorization)


Algoritma NMF (Non-Negative Matrix Factorization) adalah salah satu algoritma yang dapat digunakan untuk menganalisa hubungan antara sebuah frase/kalimat dengan sekumpulan dokumen. Contoh yang dibahas kali ini adalah mengenai penentuan urutan peringkat data berdasarkan query yang digunakan.



Diasumsikan data kalimat yang tersedia adalah sebagai berikut:

Isi kalimat
Saya suka sama suami situ sebab suami situ suka senyum-senyum sama saya.
Santapan kita setiap jam setengah satu siang satu soto sapi sama seratus tusuk sate sapi pula.
Saya sebal sama situ sebab situ suka senyum-senyum sama suami saya sehingga suami saya suka senyum-senyum sendiri saja.
Sempat-sempatnya semut-semut itu saling senyum-senyum dan salam-salaman sama semut-semut yang mau senyum-senyum dan salam-salaman sama semut-semut itu.

Contoh data awal adalah sebagai berikut:



Dan query data yang digunakan adalah

Isi Kalimat
Sapi saling suka

Contoh data baru adalah sebagai berikut:


Langkah-langkah penggunaan algoritma ini adalah

1. Lakukan proses tokenizing dan lowercase pada masing-masing kalimat dan query
Setiap kata akan dijadikan huruf kecil semua,
dan kemudian dilakukan proses penghilangan tanda baca
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Gunakan fungsi ini untuk menghilangkan tanda baca
Tanda baca yang diperhitungkan adalah:
titik ,koma, titik koma, titik dua, hubung -, tanda tanya, tanda seru, kurung biasa (), kurung kotak [], kurung kurawal {}, tanda petik satu, tanda petik ganda, garis miring

2. Susun matriks A dan q sesuai dengan masing-masing kata yang ditemukan dalam semua kalimat (poin 2a – 2c)

2a. Lakukan perulangan pada masing-masing kalimat
Lakukan pemisahan masing-masing kata berdasarkan karakter spasi
Kemudian catat semua kata unik yang belum terdapat pada daftar kata

2b. Lakukan pengurutan kata berdasarkan urutan alfabet
hal ini hanya dilakukan untuk memudahkan pembacaan saja

2c. Lakukan perhitungan pada masing-masing kata yang ditemukan
Catat jumlah dari masing-masing kata yang terdapat dalam masing-masing kalimat

3. Lakukan proses dekomposisi matriks menggunakan metode non-negative matrix factorization
Penjelasan lebih detail tentang fungsi ini dapat dilihat pada penjelasan skrip dibawah ini

* Fungsi utama dari metode ini adalah untuk melakukan dekomposisi matriks sehingga memenuhi persamaan
A = WH
Pada awalnya, matriks W dan matriks H akan bernilai acak,
Kemudian nilai matriks akan diupdate agar hasilnya semakin mendekati A
Matriks H diupdate dengan menggunakan rumus
H = H * (W'A)/(W'WH)
Matriks W diupdate dengan menggunakan rumus
W = W * (AH')/(WHH')

4. Hitung bobot Hi dengan rumus
bobot Hi* = E(Hiq) / E(Hpq)

5. Hitung GRS (Generic Relevance of Sentence) dengan rumus
GRSj = E(Hij * bobot Hi*)

6. Lakukan pengurutan kalimat berdasarkan skor GRS tertinggi
Kemudian tmapilkan hasil akhir perhitungan pada layar


Hasil akhir adalah: (klik untuk perbesar gambar)


Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.

Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *