130 Views

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

  1. Jika kita ingin membandingkan dua dokumen yang mirip, maka biasanya akan mulai dengan representasi numerik dari dokumen tersebut.
  2. 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

  1. kata benda
  2. kata sifat
  3. kata aktif
  4. kata pasif
  5. 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

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)

  1. aku makan buah, makan adalah hobiku
  2. 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

  1. aku
  2. adalah

seharusnya dibuang atau dibersihkan terlebih dahulu serta beberapa kata

  1. hobiku
  2. 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

  1. I am eating carots and manggos
  2. 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

 

<<VCorpus>>
Metadata:  corpus specific: 0, document level (indexed): 0
Content:  documents: 2
A matrix: 2 × 5 of type dbl
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

  1. menghilangkan stopword
  2. serta stemming -> mengubah kata menjadi kata dasarnya

Document term matrix membutuhkan proses cleaning data seperti

  1. proses pengurangan kata-kata tidak penting -> stopword
  2. tidak mempunyai arti dari database teks atau dokumen, sehingga membuat data lebih terstruktur dan siap untuk diolah
  3. 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 weightingada 4 pembobotan yaitu

  1. weightTf,
  2. weightTfIdf,
  3. weightBin, dan
  4. weightSMART.

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'

Leave a Reply

Your email address will not be published. Required fields are marked *

4 + 1 =