BAB 2
LANDASAN TEORI
2.1 Text Mining
Text mining, yang juga disebut sebagai Teks Data Mining (TDM) atau Knowledge Discovery in Text (KDT), secara umum mengacu pada proses ekstraksi informasi dari dokumen-dokumen teks tak terstruktur (unstructured). Text mining dapat didefinisikan sebagai penemuan informasi baru dan tidak diketahui sebelumnya oleh komputer, yang secara otomatis mengekstrak informasi dari sumber-sumber teks tak terstruktur yang berbeda. Kunci dari proses ini adalah menggabungkan informasi yang berhasil diekstraksi dari berbagai sumber (Eko, 2011).
Tujuan utama text mining adalah mendukung proses knowledge discovery pada koleksi dokumen yang besar. Pada prinsipnya, text mining adalah bidang ilmu multidisipliner, melibatkan information retrieval (IR), text analysis, information extraction (IE), clustering, categorization, visualization, database technology, natural language processing (NLP), machinelearning, dan data mining. Dapat pula dikatakan bahwa text mining merupakan salah satu bentuk aplikasi kecerdasan buatan (artificial intelligence / AI) (Eko, 2011).
dan mengujinya dalam upaya mengungkap struktur dan arti yang tersembunyi di dalam teks (Eko, 2011).
Perbedaan mendasar antara text mining dan data mining terletak pada sumber data yang digunakan. Pada data mining, pola-pola diekstrak dari basis data yang terstruktur, sedangkan di text mining, pola-pola diekstrak dari data tekstual (natural language). Secara umum, basis data didesain untuk program dengan tujuan melakukan pemrosesan secara otomatis, sedangkan teks ditulis untuk dibaca langsung oleh manusia (Eko, 2011).
2.1.1 Ruang Lingkup Text mining
Text mining merupakan suatu proses yang melibatkan beberapa area teknologi. Namun secara umum proses-proses pada text mining mengadopsi proses data mining. Bahkan beberapa teknik dalam proses text mining juga menggunakan teknik-teknik data mining (Eko, 2011).
Ada empat tahap proses pokok dalam text mining, yaitu pemrosesan awal terhadap teks (text preprocessing), transformasi teks (text transformation), pemilihan fitur (feature selection), dan penemuan pola (pattern discovery) (Eko, 2011).
a. Text Preprocessing
Tahap ini melakukan analisis semantik (kebenaran arti) dan sintaktik (kebenaran susunan) terhadap teks. Tujuan dari pemrosesan awal adalah untuk mempersiapkan teks menjadi data yang akan mengalami pengolahan lebih lanjut. Operasi yang dapat dilakukan pada tahap ini meliputi part-of-speech (PoS) tagging, menghasilkan parse tree untuk tiap-tiap kalimat, dan pembersihan teks.
b. Text Transformation
c. Feature Selection
Pemilihan fitur (kata) merupakan tahap lanjut dari pengurangan dimensi pada proses transformasi teks. Walaupun tahap sebelumnya sudah melakukan penghapusan kata-kata yang tidak deskriptif (stopwords), namun tidak semua kata-kata-kata-kata di dalam dokumen memiliki arti penting. Oleh karena itu, untuk mengurangi dimensi, pemilihan hanya dilakukan terhadap kata-kata yang relevan yang benar-benar merepresentasikan isi dari suatu dokumen. Ide dasar dari pemilihan fitur adalah menghapus kata-kata yang kemunculannya di suatu dokumen terlalu sedikit atau terlalu banyak. Algoritma yang digunakan pada text mining, biasanya tidak hanya melakukan perhitungan pada dokumen saja, tetapi juga pada feature . Empat macam feature yang sering digunakan:
• Character, merupakan komponan individual, bisa huruf, angka, karakter spesial dan spasi, merupakan block pembangun pada level paling tinggi pembentuk semantik feature, seperti kata, term dan concept. Pada umumnya, representasi character-based ini jarang digunakan pada beberapa teknik pemrosesan teks.
• Words.
• Terms merupakan single word dan multiword phrase yang terpilih secara langsung dari corpus. Representasi term-based dari dokumen tersusun dari subset term dalam dokumen.
• Concept, merupakan feature yang di-generate dari sebuah dokumen secara manual, rule-based, atau metodologi lain.
d. Pattern Discovery
interpretasi merupakan tahap akhir dari proses text mining dan akan disajikan ke pengguna dalam bentuk visual (Eko, 2011).
2.2 Ekstraksi Dokumen
Teks yang akan dilakukan proses text mining, pada umumnya memiliki beberapa karakteristik diantaranya adalah memiliki dimensi yang tinggi, terdapat noise pada data, dan terdapat struktur teks yang tidak baik. Cara yang digunakan dalam mempelajari suatu data teks, adalah dengan terlebih dahulu menentukan fitur-fitur yang mewakili setiap kata untuk setiap fitur yang ada pada dokumen. Sebelum menentukan fitur-fitur yang mewakili, diperlukan tahap preprocessing yang dilakukan secara umum dalam teks mining pada dokumen, yaitu case folding, tokenizing, filtering, stemming, tagging dan analyzing.
Gambar 2.1 Tahap Preprocessing
a. Case folding dan Tokenizing
Case folding adalah mengubah semua huruf dalam dokumen menjadi huruf kecil. Hanya huruf “a” sampai dengan “z” yang diterima. Karakter selain huruf dihilangkan dan dianggap delimiter. Tahap tokenizing / parsing adalah tahap pemotongan string input berdasarkan tiap kata yang menyusunnya.
b.Filtering
Filtering adalah tahap mengambil kata-kata penting dari hasil token. Bisa menggunakan algoritma stoplist (membuang kata yang kurang penting) atau wordlist
CASE FOLDING
TOKENIZING
FILTERING
(menyimpan kata penting). Stoplist/stopword adalah kata-kata yang tidak deskriptif yang dapat dibuang dalam pendekatan bag-of-words. Contoh stopwords adalah “yang”, “dan”, “di”, “dari”, dan seterusnya.
c. Stemming
Tahap stemming adalah tahap mencari root kata dari tiap kata hasil filtering. Pada tahap ini dilakukan proses pengembalian berbagai bentukan kata ke dalam suatu representasi yang sama. Tahap ini kebanyakan dipakai untuk teks berbahasa nggris dan lebih sulit diterapkan pada teks berbahasa Indonesia. Hal ini dikarenakan bahasa Indonesia tidak memiliki rumus bentuk baku yang permanen (Eko, 2011). Stemming merupakan suatu proses yang terdapat dalam sistem IR yang mentransformasi kata-kata yang terdapat dalam suatu dokumen ke kata-kata-kata-kata akarnya (root word) dengan menggunakan aturan-aturan tertentu. Sebagai contoh, kata bersama, kebersamaan, menyamai, akan distem ke root wordnya yaitu “sama”. Proses stemming pada teks berbahasa Indonesia berbeda dengan stemming pada teks berbahasa Inggris. Pada teks berbahasa Inggris, proses yang diperlukan hanya proses menghilangkan sufiks. Sedangkan pada teks berbahasa Indonesia, selain sufiks, prefiks, dan konfiks juga dihilangkan (Ledy, 2009).
2.2.1 Stemming dengan Algoritma Nazief dan Adriani
Stemming adalah proses pemetaan variansi morfologikal kata dalam kata dasar atau kata umumnya (stem) (Adhitia, 2009). Misalnya kata "perancangan" dan "merancang" akan diubah menjadi sebuah kata yang sama, yaitu "rancang". Proses stemming sangat tergantung kepada bahasa dari kata yang akan di-stem. Hal ini dikarenakan, dalam melakukan proses stemming harus mengaplikasikan aturan morfologikal dari suatu bahasa.
Aturan imbuhan yang digunakan pada Bahasa Indonesia lebih kompleks, tidak seperti aturan imbuhan Bahasa Inggris. Pada Bahasa Indonesia terdapat aturan imbuhan yang lebih kompleks yang meliputi awalan, akhiran, sisipan, dan konfiks (kombinasi dari awalan dan akhiran).
Banyak penelitian yang dilakukan untuk menemukan algoritma stemming yang tepat dan bagus dalam Bahasa Indonesia, antara lain algoritma Nazief & Adriani, algoritma Arifin & Setiono, dan algoritma Vega (Asian et al, 2005). Menurut penelitian Jelita Asian sebagaimana disebutkan dalam (Novanta, 2009) menyatakan berdasarkan aturan morfologi Bahasa Indonesia dapat dinyatakan bahwa algoritma Nazief & Adriani adalah algoritma yang memiliki hasil terbaik. Nazief & Adriani menyimpulkan sebuah kata dasar dapat ditambahkan imbuhan berupa derivation prefix (DP) di awal dan/atau diakhiri secara berurutan oleh derivation suffix (DS), possesive pronoun (PP), dan particle (P) yang masing-masing bersifat optional. Keterangan diatas dirumuskan pada Gambar 2.2.
Gambar 2.2 Format Kata Berimbuhan dalam Bahasa Indonesia
Adapun langkah-langkah yang digunakan oleh algoritma Nazief dan Adriani yaitu sebagai berikut:
1. Kata dicari di dalam daftar kamus. Bila kata tersebut ditemukan di dalam kamus, maka dapat diasumsikan kata tersebut adalah kata dasar sehingga algoritma dihentikan.
2. Bila kata di dalam langkah pertama tidak ditemukan di dalam kamus, maka diperiksa apakah sufiks tersebut yaitu sebuah partikel (“-lah” atau “-kah”). Bila ditemukan, maka partikel tersebut dihilangkan.
3. Pemeriksaan dilanjutkan pada kata ganti milik (“-ku”, “-mu”, “-nya”). Bila ditemukan, maka kata ganti tersebut dihilangkan.
4. Memeriksa akhiran (“-i”, “-an”). Bila ditemukan, maka akhiran tersebut dihilangkan.
Hingga langkah ke-4 dibutuhkan ketelitian untuk memeriksa apakah akhiran “-an” merupakan hanya bagian dari akhiran “-kan”, dan memeriksa lagi apakah partikel (“-lah”, “-kah”) dan kata ganti milik (“-ku”, “-mu”, “-nya”) yang telah dihilangkan pada langkah 2 dan 3 bukan merupakan bagian dari kata dasar.
5. Memeriksa awalan (“se-“, ”ke-“, “di-“, “te-“, “be-“, “pe-“, “me-“). Bila ditemukan, maka awalan tersebut dihilangkan. Pemeriksaan dilakukan dengan berulang mengingat adanya kemungkinan multi-prefix.
Langkah ke-5 ini juga membutuhkan ketelitian untuk memeriksa kemungkinan peluluhan awalan (Tabel 2.1), perubahan prefix yang disesuaikan dengan huruf-awal kata (Tabel 2.2) dan aturan kombinasi prefix-suffix yang diperbolehkan (Tabel 2.3). 6. Setelah menyelesaikan semua langkah dengan sukses, maka algoritma akan mengembalikan kata dasar yang ditemukan.
Tabel 2.1 Daftar Prefiks yang Meluluh
Jenis Prefiks Huruf Hasil Peluluhan
pe-/me- K -ng-
pe-/me- P -m-
pe-/me- S -ny-
pe-/me- T -n-
Tabel 2.2 Daftar Kemungkinan Perubahan Prefiks
Prefiks Perubahan
se- tidak berubah
ke- tidak berubah
di- tidak berubah
be- ber-
te- ter-
pe- per-, pen-, pem-, peng-
Tabel 2.3 Daftar Kombinasi Prefiks dan Sufiks yang Tidak Diperbolehkan
Prefiks Sufiks yang tidak diperbolehkan
be- -i
di- -an
ke- -i, -kan
me- -an
se- -i, -kan
te- -an
pe- -kan
2.3 Rabin-Karp
Algoritma Rabin-Karp diciptakan oleh Michael O. Rabin dan Richard M. Karp pada tahun 1987 yang menggunakan fungsi hashing untuk menemukan pattern di dalam string teks. Karakteristik Algoritma Rabin-Karp :
1. Menggunakan sebuah fungsi hashing
2. Fase preprocessing menggunakan kompleksitas waktu O(m) 3. Untuk fase pencarian kompleksitasnya : O(mn )
4. Waktu yang diperlukan O(n+m) (Hary, 2009)
Fungsi hashing menyediakan metode sederhana untuk menghindari perbandingan jumlah karakter yang quadratik di dalam banyak kasus atau situasi. Daripada melakukan pemeriksaan terhadap setiap posisi dari teks ketika terjadi pencocokan pola, akan lebih baik efisien untuk melakukan pemeriksaan hanya jika teks yang sedang diproses memiliki kemiripan seperti pada pattern. Untuk melakukan pengecekan kemiripan antara dua kata ini digunakan fungsi hash (Hary, 2009).
Untuk membantu algoritma ini, maka fungsi hash harus memenuhi hal-hal berikut ini :
• dapat dihitung dengan efisien
• memiliki perbedaan yang tinggi untuk berbagai jenis string
• hash (y[j+1 .. j+m] ) dapat dihitung dari hash (y[j.. j+m – 1])dan y[j+m]; yaitu
Untuk setiap word (8 bit) w yang memiliki panjang m, misalkan hash (w) didefinisikan sebagai berikut : (Hary, 2009)
Hash (w[0 .. m – 1])=(w[0]*2m – 1+ w[1]*2m – 2+···+ w[m – 1]*20) mod q (1)
Dimana q merupakan bilangan prima yang cukup besar. Kemudian, lakukan rehash dengan rumus: (Hary, 2009)
Rehash (a,b,h)= ((h – a*2m – 1)*2+b) mod q (2)
Fase preprocessing dari algoritma Rabin-Karp mengandung perhitungan terhadap hash (x). Hal ini dapat dilakukan dalam waktu yang memilki kompleksitas O(m). Selama fase pencarian, hal yang perlu dilakukan cukup membandingkan hash
(x) dengan hash (y[j .. j+m-1]) untuk 0 < = j <n-m (Hary, 2009). Jika kesamaannya ditemukan, masih perlu melakukan pemeriksaan kesamaan
x=y [j..j+m – 1] untuk karakter-karakter selanjutnya. Kompleksitas waktu untuk fase pencarian dari algoritma Rabin-Karp ini adalah O(mn). Diharapkan jumlah karakter teks yang dibandingkan adalah O(m+n) (Hary, 2009).
Algoritma Rabin-Karp ini banyak digunakan dalam pendeteksian pencontekan atau kecurangan. Contohnya pada makalah atau pada paper. Fungsi hash yang digunakan biasanya modulo berbasis bilangan prima besar. Alasan dipilih bilangan prima yang cukup besar adalah untuk mengurangi kemungkinan dua buah correspending number value yang sama. Sedangkan basis dipilih 10 karena banyaknya jenis karakter yang mungkin muncul adalah 0 sampai 9 berjumlah 10 jenis (Hary, 2009).
Bila diberikan source matrial atau dokumennya, algoritma ini dapat dengan cepat mencari seluruh paper dari setiap kalimat, mengabaikan lowercase dan uppercase, tanda titik, tanda seru, tanda tanya serta tanda baca laainnya (Hary, 2009).
Contoh: Jika substringnya “hi” dan basisnya 101, maka nilai hashnya dapat dihitung : 104 x 1011 +105 x 1010 = 10609 (ASCI untuk ‘h’ adalah 104 dan untuk
2.3.1 Hashing
Hashing adalah suatu cara untuk mentransformasi sebuah string menjadi suatu nilai yang unik dengan panjang tertentu (fixed-length) yang berfungsi sebagai penanda string tersebut. Fungsi untuk menghasilkan nilai ini disebut fungsi hash, sedangkan nilai yang dihasilkan disebut nilai hash. Contoh sederhana hashing adalah:
Firdaus, Hari Munir, Rinaldi Rabin, Michael Karp, Richard
menjadi :
7864 = Firdaus, Hari 9802 = Munir, Rinaldi 1990 = Rabin, Michael 8822 = Karp, Richard
Contoh di atas adalah pengunaan hashing dalam pencarian pada database . Apabila tidak di-hash, pencarian akan dilakukan karakter per karakter pada nama- nama yang panjangnya bervariasi dan ada 26 kemungkinan pada setiap karakter. Namun pencarian akan menjadi lebih efisien setelah di-hash karena hanya akan membandingkan empat digit angka dengan cuma 10 kemungkinan setiap angka. Nilai hash pada umumnya digambarkan sebagai fingerprint yaitu suatu string pendek yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam heksadesimal) (Eko, 2011).
string secara Brute-Force. Kunci agar algoritma Rabin-Karp efisien, terdapat pada pemilihan hash value -nya. Salah satu cara yang terkenal dan efektif adalah memperlakukan setiap substring sebagai suatu bilangan dengan basis tertentu (Eko, 2011).
2.3.2 K-grams
K-grams adalah rangkaian terms dengan panjang K. Kebanyakan yang digunakan sebagai terms adalah kata. K-gram merupakan sebuah metode yang diaplikasikan untuk pembangkitan kata atau karakter. Metode k-grams ini digunakan untuk mengambil potongan-potongan karakter huruf sejumlah k dari sebuah kata yang secara kontinuitas dibaca dari teks sumber hingga akhir dari dokumen.
Contoh k-grams dengan k=5 : Text: A do run run run, a do run run
Kemudian dilakukan penghilangan spasi : Adorunrunrunadorunrun
Sehingga dihasilkan rangkaian 5-grams yang diturunkan dari text : adoru dorun orunr runru unrun nrunr runru unrun nruna runad unado nador adoru dorun orunr runru unrun (Eko, 2011)
2.3.3 Konsep Algoritma Rabin-Karp
Algoritma Rabin-Karp sebagai berikut : 1 function RabinKarp
(string s[1..n], string sub[1..m]) 2 hsub :-hash(sub[1..m])
3 hs :- hash(s[1..m]) 4 for i from 1 to n 5 if hs – hsub
6 if s[ i..i+m-1] – sub 7 return i
8 hs :- hash (s[i+1..i+m] )
9 return not found (Alsasian, 2006)
2.4Dice Coefficient Similarity
Dice Coefficient Similarity digunakan untuk menghitung kesamaan dari dokumen. Rumus dari Dice Coefficient Similarity adalah :
2 | X ∩ Y |
D ( X , Y ) = ————— (3)
| X | + | Y | Dimana:
X : Nilai Dokumen 1 Y : Nilai Dokumen 2