Document Term Matrix merupakan algoritma – Metode perhitungan yang sering kita temui dalam text minning. Document Term Matrix merupakan sebuah representasi numerik dari dokumen dalam corpus. Corpus hanyalah kumpulan dokumen. Dengan kumpulan kata yang “lebih besar” ini,
Melalui Document Term Matrix, kita dapat melakukan analisis yang lebih menarik. Mudah untuk menentukan jumlah kata individual untuk setiap dokumen atau untuk semua dokumen. Misalkan untuk menghitung agregat dan statistik dasar seperti jumlah istilah rata-rata, mean, median, mode, varians, dan deviasi standar dari panjang dokumen, serta dapat mengetahui istilah mana yang lebih sering dalam kumpulan dokumen dan dapat menggunakan informasi tersebut untuk menentukan istilah mana yang lebih mungkin “mewakili” dokumen tersebut.
Penggunaan Document Term Matri adalah cara yang cukup sederhana untuk merepresentasikan dokumen sebagai struktur numerik. Merepresentasikan teks sebagai struktur numerik adalah titik awal umum untuk penambangan teks dan analitik seperti pencarian dan peringkat, membuat taksonomi, kategorisasi, kesamaan dokumen, dan pembelajaran mesin berbasis teks. Misalkan
- Jika kita ingin membandingkan dua dokumen yang mirip, maka biasanya akan mulai dengan representasi numerik dari dokumen tersebut.
- Selain itu dalam algoritma text minning juga membutuhkan document term matrix yang merepresentasi tersebut sebagai ciri fitur.
Pada dasarnya dalam menyusun corpus-kumpulan kata/dokumen membutuhkan banyak langkah mengingat setiap kata dasar sendiri bisa saja terdiri dari
- kata benda
- kata sifat
- kata aktif
- kata pasif
- mempunyai imbuhan
Contohnya sebuah kalimat “Toni mempunyai hobi sebagai pelukis” harus diolah menjadi sebuah kata dasar “toni punya hobi bagai lukis”
Membuat Document Term Matrix
Contents
Untuk membuat document term matrix sangatlah mudah, kalian bisa menggunakan library RTextTools atau tm.
Library RTextTools sebenarnya menggunakan library tm dalam membuat document term matrix, oleh hal tersebut. Kita akan coba satu-persatu saja untuk memahami Document Term Matrix
Pada library RTextTools source code create_matrix.R line 23-24 disitu tertera jelas menggunakan library tm dalam membuat Document Term Matrix bisa kalian cek source code
https://github.com/timjurka/RTextTools/blob/master/RTextTools/R/create_matrix.R
Menggunakan RTextTools untuk membuat Document Term Matrix
Pastikan kalian sudah install packages nya dengan perintah
install.packages("RTextTools")
Misalkan saya mempunyai 2 kalimat berikut (sengaja tidak melakukan stemming-tokenizing kata)
- aku makan buah, makan adalah hobiku
- buah dimakan monyet
Kita buat saja dalam bentuk vector
library(RTextTools) text = c("aku makan buah, makan adalah hobiku", "buah dimakan monyet") b = create_matrix(text) #fungsi yang diambil dari RTextTools b_matrix = as.matrix(b) b_matrix
hasilnya bisa lihat bahwa kata “makan” diulang sebanyak 2 kali,
adalah | aku | buah | dimakan | hobiku | makan | monyet | |
---|---|---|---|---|---|---|---|
aku makan buah, makan adalah hobiku | 1 | 1 | 1 | 0 | 1 | 2 | 0 |
buah dimakan monyet | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
kata stopword seperti
- aku
- adalah
seharusnya dibuang atau dibersihkan terlebih dahulu serta beberapa kata
- hobiku
- dimakan
juga harus diubah kedalam kata dasarnya. Tapi kalau kalian menggunakan library tm karena defaultnya support bahasa inggris, maka langkah-langkah seperti membuat stopword serta mengubah menjadi kata dasar akan secara otomatis dilakukan oleh library tersebut.
Namun kalau kalian ingin tetap menggunakan opsi diatas, cara mudah di library RTextTools cukup berikan opsi sebagai berikut
dtm = create_matrix(text, removeNumbers=TRUE, removePunctuation=TRUE, removeSparseTerms=0, removeStopwords=TRUE, stemWords=TRUE, stripWhitespace=TRUE, toLower=TRUE, weighting=weightTf) #fungsi yang diambil dari RTextTools as.matrix(dtm)
Menggunakan tm untuk membuat Document Term Matrix
Perhatikan 2 kalimat dibawah ini yang akan dihitung document term matrixnya
- I am eating carots and manggos
- My Hobby is Traveling
Jangan lupa untuk install library tm nya
install.packages("tm")
Kita hitung
library(tm) text = c("I am eating carots and manggos","My Hobby is Traveling") traintestcorpus = VCorpus(VectorSource(text)) traintestcorpus #fungsi yang diambil dari tm dtm = DocumentTermMatrix(traintestcorpus,control=list(tolower=TRUE, removeNumbers=TRUE, stopwords=TRUE, removePunctuation=TRUE, stemming=TRUE)) dtm_matrix = as.matrix(dtm) dtm_matrix
hasilnya
Terms Docs carot eat hobbi manggo travel 1 1 1 0 1 0 2 0 0 1 0 1
carot | eat | hobbi | manggo | travel | |
---|---|---|---|---|---|
1 | 1 | 1 | 0 | 1 | 0 |
2 | 0 | 0 | 1 | 0 | 1 |
Kalian bisa lihat sendiri library tm secara otomatis akan melakukan
- menghilangkan stopword
- serta stemming -> mengubah kata menjadi kata dasarnya
Document term matrix membutuhkan proses cleaning data seperti
- proses pengurangan kata-kata tidak penting -> stopword
- tidak mempunyai arti dari database teks atau dokumen, sehingga membuat data lebih terstruktur dan siap untuk diolah
- serta mengubah kata menjadi kata dasarnya
Perbedaan DTM-Document term matrix dan TDM-term document matrix
Tadinya ketika saya menggunakan DTM dan TDM d library tm, agak bingung, tapi itu sama saja koq, yaitu hanya masalah tampilan tabel nya saja yang sedikit berbeda.
Document Term Matrix akan menampilkan seperti create_matrix di RTextTools sedangkan Term Document Matrix akan diubah transpose hasilnya
tdm = TermDocumentMatrix(traintestcorpus, control=list(tolower=TRUE, removeNumbers=TRUE, stopwords=TRUE, removePunctuation=TRUE, stemming=TRUE)) tdm_matrix = as.matrix(tdm) tdm_matrix
hasilnya
Docs Terms 1 2 carot 1 0 eat 1 0 hobbi 0 1 manggo 1 0 travel 0 1
Pembobotan weightTf dan weightTfIdf
term-weighting-tf-idf mudah dilakukan menggunakan RTextTools dengan mengubahnya menjadi berikut, kalian bisa baca dokumentasi disini
dtm = create_matrix(text, removeNumbers=TRUE, removePunctuation=TRUE, removeSparseTerms=0, removeStopwords=TRUE, stemWords=TRUE, stripWhitespace=TRUE, toLower=TRUE, weighting=weightTfIdf) #fungsi yang diambil dari RTextTools as.matrix(dtm)
Sedangkan untuk libary tm juga demikian, bisa kalian baca dokumentasi disini
#dengan pembobotan dtm = DocumentTermMatrix(traintestcorpus, control=list(tolower=TRUE, removeNumbers=TRUE, stopwords=TRUE, removePunctuation=TRUE, stemming=TRUE, weighting =weightTfIdf)) dtm_matrix = as.matrix(dtm) dtm_matrix
Untuk cara manualnya perhitungan pembobotan bisa kalian pelajari disini atau disini juga bisa disini
Intinya cukup mengubah paramater weightTf
menjadi weightTfIdf
Khusus untuk library tm mengenai weighting
ada 4 pembobotan yaitu
weightTf
,weightTfIdf
,weightBin
, danweightSMART
.
Cara Mengubah kata menjadi kata dasar
Sebenarnya tahap ini digunakan pada saat text pre processing sebelum menghitung DTM Document Term Matrix.
Untuk mengubah kata menjadi kata dasarnya dalam bahasa indonesia, kalian bisa menggunakan library katadasaR yaitu https://github.com/nurandi/katadasaR
Contoh hasil pengubahan kata dasar dari library katadasaR
> katadasar("sebagai") [1] "bagai" > katadasar("menampar") [1] "tampar" > katadasar("buktikan") [1] "bukti"
Sedangkan untuk mengubah kata dasar pada sebuah kalimat, bisa kalian lakukan dengan berikut
kalimat = "buah dimakan oleh monyet" b = unlist(strsplit(kalimat, "\\s+")) #dipisah kemudian dibuat list d = paste(lapply(b, function (x) katadasar(x)),collapse= " ") d
hasilnya
'buah makan oleh monyet'