62 Views

Cara menghitung term frequency dan inverse document frequency atau sering disingkat menjadi TF – IDF merupakan nilai yang penting dalam text minning. Nah dalam postingan kali ini, saya akan bahas cara mendapatkan nilai tersebut serta cara menghitung manualnya, tentunya saya anggap kalian sudah baca mengenai document term matrix disini

Apa itu Term Frequency – TF

Term Frequency (TF) yaitu pembobotan/weight setiap kata (term) pada suatu dokumen berdasarkan jumlah kemunculannya dalam dokumen tersebut. Semakin besar jumlah kemunculan suatu kata dalam dokumen, maka semakin besar pula bobot yang diberikan (TF Tinggi) jadi nilai tertinggi merupakan  jumlah kemunculan/frekuensi. Biasanya term / kata-kata yang sering muncul merupakan topik yang ingin kita cari, namun demikian kata-kata yang sering muncul malah menjadi menjadi kata umum oleh karena hal tersebut dibutuhkan invers document frequency.

Apa itu Inverse Document Frequency – IDF

Inverse Document Frequency (IDF) bertujuan untuk mengetahui apakah term yang dicari cocok dengan kata kunci yang diinginkan, term yang sering muncul akan memberikan pengaruh yang kecil dalam menentukan keterkaitan kata kunci dokumen.

TF-IDF

Pembobotan TF-IDF adalah hasil perkalian dari pembobotan term frequency dan inverse document frequency dari suatu term. TF-IDF dihitung dengan menggunakan persamaan seperti berikut

    \[ W_{i,j} = \frac{n_{i,j}}{\sum_{j=1}^{p}n_{j,i}}log_{2}\frac{D}{d_j} \]

dengan masing-masing keterangan yaitu

W_{i,j} pembobotan tf-idf untuk term ke-j pada dokumen ke-i

n_{i,j} jumlah kemunculan term ke-j pada dokumen ke-i

p banyaknya term yang terbentuk

\sum_{j=1}^{p}n_{j,i} jumlah kemunculan seluruh term pada dokumen ke-i

D jumlah keseluruhan dokumen

d_j banyaknya dokumen yang mengandung term ke-j.

Menggunakan Library RTextTools

Library RTextTools menggunakan library tm sebagai base nya, nah cara menghitung Term Frequency cukup mudah.

library(RTextTools)

kalimat = c("aku suka makan makan buah",
            "jambu biji adalah buah",
            "aku suka makan tomat")

Anggap saja kalimat diatas udah dilakukan pre processing, jadi tidak perlu dilakukan lagi, sehingga False saja semua opsinya.

dtm = RTextTools::create_matrix(kalimat, #fungsi yang diambil dari RTextTools dengan library tm sebagai base nya
                    removeNumbers=FALSE, #sudah dilakukan sebelumnya
                    removePunctuation=FALSE, #sudah dilakukan sebelumnya
                    removeSparseTerms=0, 
                    removeStopwords=FALSE,  #sudah dilakukan sebelumnya
                    stemWords=FALSE, #sudah dilakukan sebelumnya
                    stripWhitespace=TRUE, 
                    toLower=FALSE, #sudah dilakukan sebelumnya
                    weighting=weightTf) #lakukan pembobotan

perhatikan opsi  weighting=weightTf merupakan perintah untuk menghitung TF Рterm frequency. Untuk menampilkan nilai TF yaitu

View(as.matrix(dtm))

Dari nilai diatas dapat diketahui

  1. p term terbentuk yaitu 8
  2. D jumlah keseluruhan dokumen yaitu 3

Nah untuk menghitung TF-IDF cukup mengubah weighting=weightTf menjadi weighting=weightTfIdf . Misalkan saya menggunakan nama variabel dtm2 untuk membedakan dengan sebelumnya

dtm2 = create_matrix(kalimat, #fungsi yang diambil dari RTextTools dengan library tm sebagai base nya
                    removeNumbers=FALSE, #sudah dilakukan sebelumnya
                    removePunctuation=FALSE, #sudah dilakukan sebelumnya
                    removeSparseTerms=0, 
                    removeStopwords=FALSE,  #sudah dilakukan sebelumnya
                    stemWords=FALSE, #sudah dilakukan sebelumnya
                    stripWhitespace=TRUE, 
                    toLower=FALSE, #sudah dilakukan sebelumnya
                    weighting=weightTfIdf) #lakukan pembobotan

perintah untuk menampilkan nilainya yaitu

View(as.matrix(dtm2))

Yuk kita cari nilai dari berikut, berdasarkan rumus diatas

Untuk membaca artikel berikut, kalian wajib login terlebih dahulu, selanjutnya dibawah ini

Existing Users Log In
   

Leave a Reply