SYUKRIYANTO LATIF
SEKOLAH PASCASARJANA
UNIVERSITAS HASANUDDIN
MAKASSAR
2018
Text Mining Untuk Klasifikasi Konten Abstrak Jurnal Bahasa Inggris
Menggunakan metode Reduksi Dimensi dan Naive Bayes
Tesis
Program Studi
Teknik Elektro
SYUKRIYANTO LATIF
P2700214028
Kepada
SEKOLAH PASCASARJANA
UNIVERSITAS HASANUDDIN
MAKASSAR
2018
PERNYATAAN KEASLIAN TESIS
Yang Menyatakan
Syukriyanto Latif
ii
KATA PENGANTAR
Puji syukur dipanjatkan kehadirat Allah SWT. atas berkah dan rahmat-
Nya sehingga tesis penelitian ini dengan judul “Text Mining untuk Klasifikasi
menyangkut judul yang telah kami angkat dan telah melalui proses pencarian
dari berbagai sumber baik jurnal penelitian, buku maupun dari situs-situs di
internet, selain dari penelitian sebelumnya. Untuk itu melalui kesempatan ini
kami ingin mengucapkan terima kasih kepada seluruh pihak yang telah
ST. M.Bus.Sys. MT dan Dr. Eng. Intan Sari Areni, ST., MT. Selaku dosen
Sabang dan Hj. Siti Muliati), dan seluruh saudara yang telah banyak
mendukung dan bersabar dalam perjalanan studi penulis. Dan juga untuk
mengucapkan terima kasih atas dukungan moril dan kerja sama yang tidak
iii
terjaga.
maksimal, namun jika masih ada kekurangan baik dari segi pengetikan
maupun dari segi isi kami mohon maaf dan mohon petunjuk berupa kritik dan
Penulis
iv
ABSTRAK
Kata kunci : text mining, feature selection, akurasi, reduksi dimensi, naive
bayes
ABSTRACT
v
ABSTRACT
DAFTAR ISI
HALAMAN SAMPUL
HALAMAN PENGESAHAN
PERNYATAAN KEASLIAN TESIS
KATA PENGANTAR .................................................................................. ii
ABSTRAK INDONESIA ............................................................................ iv
ABSTRAK INGGRIS .................................................................................. v
DAFTAR ISI .............................................................................................. vi
DAFTAR GAMBAR ................................................................................. viii
DAFTAR TABEL ....................................................................................... ix
DAFTAR LAMPIRAN ................................................................................ xI
BAB I .........................................................................................................1
PENDAHULUAN........................................................................................1
A. LATAR BELAKANG ..........................................................................1
B. RUMUSAN MASALAH ......................................................................4
C. TUJUAN PENELITIAN ......................................................................5
D. MANFAAT PENELITIAN ...................................................................5
E. BATASAN MASALAH .......................................................................5
F. SISTEMATIKA PENULISAN .............................................................6
BAB II TINJAUAN PUSTAKA ....................................................................9
A. LANDASAN TEORI ...........................................................................9
B. PENELITIAN TERKAIT ...................................................................27
C. STATE OF THE ART ......................................................................30
D. KERANGKA PIKIR ..........................................................................32
BAB III METODE PENELITIAN................................................................33
A. TAHAPAN PENELITIAN..................................................................33
B. WAKTU DAN LOKASI PENELITIAN ...............................................35
C. JENIS PENELITIAN ........................................................................35
vii
DAFTAR GAMBAR
DAFTAR TABEL
DAFTAR LAMPIRAN
PENDAHULUAN
A. LATAR BELAKANG
dokumen artikel dan jurnal ilmiah yang mendorong munculnya disiplin ilmu
ilmiah, namun banyaknya variasi data dokumen abstrak jurnal yang tidak
mengetahui kategori abstrak tersebut jika dibaca satu per satu. Sehingga
perubahan yang signifikan dari jumlah kata 500 -275. Pada penelitian
baik dalam proses stemming bahasa Inggris, Lovins dan Porter menjadi
Penelitian klasifikasi berikut Ashis Kumar Mandal dan Rikta Sen pada
mampu menghasilkan akurasi sebesar 92%. Dio Ariadi dan Kartika tahun
Penelitian ini hanya berfokus pada proses klasifikasi dan tingkat akurasi
yang didapatkan.
B. RUMUSAN MASALAH
optimal ?
5
C. TUJUAN PENELITIAN
D. MANFAAT PENELITIAN
penelitian.
E. BATASAN MASALAH
www.computer.org
6
abstrak.
F. SISTEMATIKA PENULISAN
Bab I Pendahuluan
primer seperti buku, artikel, jurnal, prosiding dan tulisan asli lainnya untuk
memecahkan masalah yang diteliti. Dalam bab ini juga diurakan tentang
approach pada obyek penelitian, diuraikan pula cara evaluasi dan proses
telah disampaikan.
BAB II
TINJAUAN PUSTAKA
A. LANDASAN TEORI
1. Text Mining
dan eksplorasi dari suatu pola menarik. Sumber data berupa sekumpulan
dokumen dan pola menarik yang tidak ditemukan dalam bentuk database
a. Text
yaitu jumlah data yang besar, dimensi yang tinggi, data dan struktur
adalah pada data yang digunakan. Pada data mining, data yang
tambahan pada text mining yaitu struktur text yang complex dan tidak
lengkap, arti yang tidak jelas dan tidak standar, dan bahasa yang
b. Text Preprocessing
dapat dilakukan pada tahap ini adalah case folding dan tokenizing.
11
d. Feature Selection
e. Pattern Discovery
f. Interpretation / evaluation
proses evaluasi. Masukan awal dari proses text mining adalah suatu
interpretasi merupakan tahap akhir dari proses text mining dan akan
2. Stemming
menjadi kata dasar. Stem (akar kata) adalah bagian dari kata yang tersisa
infleksional yang umum dari bahasa Inggris. Algoritma ini terdiri dari
*v* berarti stem mengandung sebuah vokal *d berarti stem diakhiri dengan
konsonan dobel
secara berurutan, dan hanya 1 rule dari suatu step yang diterapkan.
didapatkan stem.
(tidak diganti) untuk kata yang hanya memiliki sebuah huruf vokal,
dan dihapus untuk yang memiliki lebih dari satu huruf vokal
Step 1b1 : continued for -ed and -ing rules, berupa tahap lanjutan
akan diganti menjadi kata yang berakhir satu huruf konsonan saja,
jika kata berakhir dengan huruf l, s, atau z maka tidak diganti, dan
ditambahkan e.
Tabel 4. y and i
Step 2 : peel one suffix off for multiple suffixes, dengan kata
(menjadi ance), izer atau ization (menjadi ize), iviti atau iveness
(menjadi ive), ality atau alism atau alli (menjadi al), biliti (menjadi
ble), abli (menjadi able), ently (menjadi ent), eli (menjadi e), ousli
ness akan dihapus, kata berakhiran icate atau iciti atau ical
Tabel 6. Step 3
Step 4 : delete last suffix, dengan kata tersebut memiliki paling kurang
ence, er, ic, able, ible, ant, ement, ment, ent, ion, ou, ism, ate, iti,
Tabel 8. Remove e
konsonan saja
Tabel 9. Reduction
panjangnya dengan kandungan term yang berbeda pula. Hal yag perlu
atau unit hasil indexing lainnya dalam suatu dokumen yang dapat
maka untuk setiap kata tersebut diberikan sebuah indikator, yaitu term
weight.
semakin besar.
20
data (Yang,1997). Oleh karena itu dalam penelitian ini dipilih reduksi
kebanyakan nilainya nol, term tersebut tidak akan dihilangkan jika ada
bernilai nol dapat diabaikan, dengan catatan tidak ada nilai TF yang
bukan 0 kurang dari 40% data yang ada. Kolom ke 5-9 akan
dataset dengan dua kelas data, data ini ditunjukkan pada Gambar 4.
(1)
(2)
24
(3)
ditulis:
(4)
(5)
dengan persamaan :
(6)
Dimana:
pelatihan.
(7)
Dimana :
dengan kategori .
ini dilakukan untuk mengantisipasi jika terdapat suatu kata pada dokumen
Pembelajaran ( Learning )
Klasifikasi (Classify)
1. Hitung untuk
Testing data / data uji setiap kategori vj. kategori dokumen
B. PENELITIAN TERKAIT
berikut.
akademis 82%.
6. Dio Ariadi dkk pada tahun 2015, dengan judul “Klasifikasi Berita
7. Amalia dkk pada tahun 2015 dengan judul “Klasifikasi Artikel Berita
86,97%
8. Fajar R Hariri dkk pada tahun 2015 dengan judul “Learning Vector
dengan reduksi dimensi, rata – rata akurasi yang didapat 90% dari
9. I Gusti A dkk pada tahun 2016 dengan judul “Optimasi naive bayes
Pada Tabel 10. diperlihatkan state of the art dari beberapa penelitian
terkait yang membahas tentang klasifikasi text mining telah dilakukan dari
4 tahun terakhir.
Alg. Ekstraksi
Judul Preproce Tinjauan Data/ Hasil
Peneliti Tahun Fitur/
Penelitian ssing Akurasi
Klasifikasi
Alg. Ekstraksi
Judul Preproce Tinjauan Data/ Hasil
Peneliti Tahun Fitur/
Penelitian ssing Akurasi
Klasifikasi
Klasifikasi Berita
Indonesia
Menggunakan
JURNAL SAINS DAN Case Confix-striping KlasifikasiNBC dengan
Metode Naive
Dio Ariadi dan SENI ITS Vol. 4, folding, stemmer dan TF menerapkan Confix-
Bayesian
Kartika No.2, (2015) 2337- tokenizing,F IDF/ naive bayes striping stemmertext
Classification dan
Fithriasari 3520 (2301-928X iltering, dn support bahasa indonesia / NBC
Support Vector
Print) 2015 stemming Vector machine 82,2% dan SVM 88,1%
Machine dengan
Confix Stripping
Stemmer
Research yang sudah dilakukan
Klasifikasi
ArtikelBerita
Klasifikasi NBC
Amalia Anjani Berbahasa
Case dengan menerapkan
A. Arif Indonesia 2015 Confix-striping
folding, Confix-striping
Djunaidy, BerbasisNaive digili.its.ac.id./ITS- stemmer,
tokenizing, stemmer text bahasa
Renny P. Bayes Classifier Undergraduate - Naive Bayes
Filtering, indonesia / Validasi 10
Kusumaward MenggunakanC 384495210100106 Classifier
stemming cross-validation , NBC
ani onfix-
86.97%.
StrippingStemm
er
Klasifikasit LVQ
Fajar Learning Vector Stop Reduksi
Citec Jurnal ISSN: dengan menerapkan
Rohman Quantization word(Filter dimensi,
2354-5771, APRIL teknik reduksi dimensi
H,Ema utami, untuk Klasifikasi ing),stem learning vector
2015 pada bahasa
Armadyah A Abstrak Tesis ming quantization
indonesia.LVQ 90%
Case
Konten Abstrak TW(Term Classifier dengan 9
folding,
Jurnal Bahasa Weighting)RD( kali uji coba pada
tokenizing,
Syukriyanto Inggris Reduksi reduksi dimensi
2017 Filtering,St
Latif Menggunakan Dimensi), / program dan
emming(P
metode Reduksi Naive Bayes menggunakan
orter
dimensi dan Classifier Confusion Matrix
stemmer)
Naive Bayes dengan hasil 95,33%
Classifier
32
D. KERANGKA PIKIR
Problem
Fitur Kata : Banyaknya jumlah kata dalam suatu dokumen yang tidak
muncul pada dokumen lain.
Klasifikasi : kesulitan dalam mengambil satu keputusan kategori manakah
konten abstrak tersebut dengan cara manual
Solution
Target Implementation
Measurement
Result
METODE PENELITIAN
A. TAHAPAN PENELITIAN
Pengambilan Data
Analisis dan
pembuatan laporan
150 Konten Abstrak, dan akan digunakan untuk data latih dan data uji.
angka/ nilai vector dan proses feature selection sebagai pemilihan fitur
kata dan memberikan bobot nilai pada tiap kata kemudian dilakukan
5. Uji coba sistem dan analisa. Pada tahapan ini, sistem yang sudah
1. Waktu
2. Lokasi
Universitas Hasanuddin.
C. JENIS PENELITIAN
D. SUMBER DATA
Hal pertama yang dilakukan adalah pengambilan data file PDF berupa
konten abstrak jurnal bahasa inggris yang didownload dari internet pada
www.computer.org. Data yang digunakan pada sistem ini terdiri atas 2 jenis
data yaitu :
1. Data Latih
Data latih adalah data yang telah melalui proses latih pada sistem
(a)
(b)
37
(c)
Gambar 9. (a),(b) dan (c) antar muka sistem sebagian data latih pada tiap
kategori
2. Data Uji
Data Uji merupakan data konten abstrak jurnal yang diinput dan
klasifikasi. Data yang digunakan untuk data uji adalah konten abstrak
Gambar 10. Antar muka sistem sebagian data uji pada sistem.
E. PERANCANGAN SISTEM
Gambar 11.
Training Process
Testing Process
Input konten Preproces Feature Pengujian NBC
abstrak jurnal sing Selection
Hasil
Penelitian ini terbagi atas 2 tahapan yaitu tahap pelatihan dan tahap
berjumlah 150 file. Pada lampiran memperlihatkan Inputan data latih dan
data uji yang digunakan pada penelitian ini. Sampel isi file konten abstrak
jurnal yang menjadi data masukan pada sistem diperlihatkan pada Gambar
12.
1. Tahap Preprocessing
A. Text Preprocessing.
a) Case Folding
b) Tokenizing / parsing
c) Filtering
code berikut.
<?php
function hapusStopWords($input){
// Stop words
'concerning','consequently','consider','considering','contain','containing','cn
tains','corresponding','could','couldn\'t','course','c\'s','currently','d','dare','d
aren\'t','definitely','described','despite','did','didn\'t','different','directly','do
','does','doesn\'t','doing','done','don\'t','down','downwards','during','e','eac
h','edu','eg','eight','eighty','either','else','elsewhere','end','ending','enough',
'entirely','especially','et','etc','even','ever','evermore',‘every','everybody','e
veryone','everything','everywhere','ex','exactly','example','except','f','fairly',
'far','farther','few','fewer','fifth','first','five','followed','following','follows','f
or','forever','former','formerly','forth','forward','found','four','from','further
','furthermore','g','get','gets','getting','given','gives','go','goes','going','gone',
'got','gotten','greetings','h','had','hadn\'t','half','happens','hardly','has','has
n\'t','have','haven\'t','having','he','he\'d','he\'ll','hello','help','hence','her','h
ere','hereafter','hereby','herein','here\'s','hereupon','hers','herself','he\'s','h
i','him','himself',
return preg_replace('/\b('.implode('|',$commonWords).')\b/','-',$input);
?>
44
d) Stemming
Tahap mencari root kata dari tiap kata hasil filtering. Pada
gambar 17.
// Part b
if (substr($word, -2, 1) != 'e' OR !self::replace($word, 'eed',
'ee', 0)) { // First rule
$v = self::$regex_vowel;
// ing and ed
if ( preg_match("#$v+#", substr($word, 0, -4)) &&
self::replace($word, 'ging', 'ge')
OR preg_match("#$v+#", substr($word, 0, -4)) &&
self::replace($word, 'ting', 't')
OR preg_match("#$v+#", substr($word, 0, -3)) &&
self::replace($word, 'ing', 'ing')
OR preg_match("#$v+#", substr($word, 0, -2)) &&
self::replace($word, 'ed', 'ed')) { // Note use of && and OR, for
precedence reasons
// If one of above two test successful
if ( !self::replace($word, 'at', 'ate')
AND !self::replace($word, 'bl', 'ble')
AND !self::replace($word, 'iz', '')) {
return $word;
* Step 2
*
* @param string $word Word to stem
*/
46
.
case 'g':
self::replace($word, 'logi', 'log', 0);
break;
case 'l':
self::replace($word, 'entli', 'ent', 0)
OR self::replace($word, 'ousli', 'ous', 0)
OR self::replace($word, 'alli', 'al', 0)
OR self::replace($word, 'bli', 'ble', 0)
OR self::replace($word, 'eli', 'e', 0);
break;
case 'o':
self::replace($word, 'ization', 'ize', 0)
OR self::replace($word, 'ication', 'ication',0)
OR self::replace($word, 'lation', 'lation',0)
OR self::replace($word, 'ation', 'ate', 0)
OR self::replace($word, 'ator', 'ate', 0);
break;
case 's':
self::replace($word, 'iveness', 'ive', 0)
OR self::replace($word, 'fulness', 'ful', 0)
OR self::replace($word, 'ousness', 'ous', 0)
OR self::replace($word, 'alism', 'al', 0);
break;
case 't':
self::replace($word, 'biliti', 'ble', 0)
OR self::replace($word, 'aliti', 'al', 0)
OR self::replace($word, 'iviti', 'ive', 0);
break;
}
return $word;
}
B. Feature Selection
e) TW(Term Weighting)
18.
berikut.
<?php
$no=1;
$N = mysql_num_rows(mysql_query("SELECT * FROM
dokumen"));
$row = mysql_query("SELECT * FROM tfidf ORDER BY
File_Id
<td style='width:20px;'>$no</td>
<td>$dok[File_Judul]</td>
<td>$r[Kata]</td>
<td style='text-align:center;'>$idf</td>
</tr>";
$no++;
?>
DESC");
while($r = mysql_fetch_array($row)){
$dok = mysql_fetch_array(mysql_query("SELECT
* FROM dokumen WHERE File_Id='$r[File_Id]'"));
$df = mysql_fetch_array(mysql_query("SELECT tf,
48
sum(tf) AS
jml FROM tfidf WHERE Kata='$r[Kata]'"));
$idf = round(log10($N/$df['jml']),3)+1;
echo "
<tr class='gradeX'>
<td style='width:20px;'>$no</td>
<td>$dok[File_Judul]</td>
<td>$r[Kata]</td>
<td style='text-align:center;'>$idf</td>
</tr>";
$no++;
?>
Intelligence
tiap kata akan dihitung Transport
probabilitasnya untuk mendapat nilai
Data Mining System Multimedia
Term TF Term
probabilitas pada tiap kategori. TF Term TF
accuracy 15 ability 7 access 11
f) achieve
Reduksi Dimensi
7 agent 11 achieve 10
active 4 algorithm 23 adapt 5
Tahap reduksi 11
acupoint
dimensianalysis
dilakukan untuk9 mengecilkan
address
dimensi data
7
addition 5 application 20 algorithm 7
sehingga waktu komputasi dibutuhkan lebih sedikit. Menggunakan
algorithm 20 architecture 10 application 23
amount
150 data 9 abstrak
konten areadengan 75247kata. Dari
approach 17
7524 kata yang
analysi 19 artificial 7 architecture 17
ada, ada
application beberapa
16 kata yang hanya8 muncul
average disatu atau dua
bandwidth 7
applied 9 background 8 based 17
konten
approach abstrak12 saja, based
sehingga kata 27
tersebut dapat dihiraukan.
called 7
approache 11 behavior 7 capturing 9
Berikut Tabel 11 menunjukan term dan jumlah term dengan
article 9 called 8 challenge 8
automat
reduksi dimensi9 menggunakan
center 10 30%.
parameter code 11
based 27 column 11 cognit 8
biolog 10 concentrate 10 communication 8
biomed 10 congestion 7 computer 8
cancer 9 context 10 content 20
challenge 8 control 20 control 11
character 21 controller 7 data 43
class 11 data 33 design 8
classification 14 deep 7 designed 8
clustering 13 delay 6 develop 11
common 7 demand 9 device 22
complex 6 describe 8 document 7
composed 5 design 24 domain 10
computate 5 detection 8 due 10
concept 7 develop 17 environ 12
condition 6 developed 11 event 10
content 10 device 9 experi 15
context 7 digital 9 experimental 10
create 6 dynamic 13 human 7
49
Intelligence Transport
Data Mining Multimedia
System
Term TF Term TF Term TF
<?php
/**
* Flattens a multi demensional array into a one dimensional
* to be compatible with hidden html fields.
. *
* @param array $array
* Array in the form:
* array(
* 'a' => term_DM(
* 'b' => '30%'
* )
* )
*@param array $array
* Array in the form:
* array(
* 'a' => term_ITS(
* 'b' => '30%'
* )
* )
* @param array $array
* Array in the form:
* array(
* 'a' => term_MM(
* 'b' => '30%'
* )
* )
*/
function flatten_array($array) {
// Continue until $array is a one-dimensional array.
$continue = TRUE;
while ($continue) {
$continue = FALSE;
/
foreach ($array as $key => $value) {
if (is_array($value)) {
$continue = TRUE
foreach ($value as $term_key => $term_value) {
$array[$key . '[' . $term_key . ']'] = $term_value;
}
unset($array[$key]);
}
}
}
return $array;
}
?>
53
untuk setiap kelas, dan hanya perlu meranking dari pada menghitung
tidak ada hubungan antara kata yang satu dengan kata yang lain.
lebih sering muncul bersama dari pada muncul secara individual, tapi
P( │ )= (8)
adalah probabilitas Wk
sebagai berikut:
P(kata│kategori)= (9)
1. Proses training
Pada proses ini dilakukan training set yang sudah diketahui label-
P( ) (10)
12.
P( │ ) (11)
P(kategori) (12)
P( │ )
(13)
berikut:
56
data mining
wk nk+1 n P(wk/ci)=(nk+1)/n+│vocabulary│
accuracy 15 116 0,003249567
achieve 7 116 0,001516464
active 4 116 0,000866551
acupoint 11 116 0,002383016
addition 5 116 0,001083189
algorithm 20 116 0,004332756
amount 9 116 0,00194974
analysi 19 116 0,004116118
application 16 116 0,003466205
applied 9 116 0,00194974
approach 12 116 0,002599653
approache 11 116 0,002383016
article 9 116 0,00194974
automat 9 116 0,00194974
based 27 116 0,00584922
biolog 10 116 0,002166378
biomed 10 116 0,002166378
cancer 9 116 0,00194974
challenge 8 116 0,001733102
57
Transport System
Multimedia
Wk nk+1 n P(wk/ci)=(nk+1)/n+│vocabulary│
Access 11 97 0,002392865
Achieve 10 97 0,002175332
Adapt 5 97 0,001087666
Address 7 97 0,001522732
Algorithm 7 97 0,001522732
Application 23 97 0,005003263
Approach 17 97 0,003698064
Architecture 17 97 0,003698064
Bandwidth 7 97 0,001522732
Based 17 97 0,003698064
Called 7 97 0,001522732
Capturing 9 97 0,001957799
Challenge 8 97 0,001740265
Code 11 97 0,002392865
Cognit 8 97 0,001740265
63
Communication 8 97 0,001740265
Computer 8 97 0,001740265
Content 20 97 0,004350663
Control 11 97 0,002392865
Data 43 97 0,009353926
Design 8 97 0,001740265
Designed 8 97 0,001740265
Develop 11 97 0,002392865
Device 22 97 0,00478573
Document 7 97 0,001522732
Domain 10 97 0,002175332
Due 10 97 0,002175332
Environ 12 97 0,002610398
Event 10 97 0,002175332
Experi 15 97 0,003262998
Experimental 10 97 0,002175332
Human 7 97 0,001522732
Image 18 97 0,003915597
Import 7 97 0,001522732
Improve 8 97 0,001740265
Informate 30 97 0,006525995
Interface 11 97 0,002392865
Internet 11 97 0,002392865
Introduce 8 97 0,001740265
Knowledge 9 97 0,001957799
Learning 12 97 0,002610398
Manag 8 97 0,001740265
Mep 10 97 0,002175332
Metadata 8 97 0,001740265
Method 17 97 0,003698064
Mobile 21 97 0,004568197
Model 17 97 0,003698064
Multimedia 103 97 0,022405917
Multiple 11 97 0,002392865
Network 35 97 0,007613661
Object 11 97 0,002392865
Operate 9 97 0,001957799
Optim 8 97 0,001740265
Order 10 97 0,002175332
Packet 10 97 0,002175332
Paper 29 97 0,006308462
64
Platform 9 97 0,001957799
Present 14 97 0,003045464
Presented 7 97 0,001522732
Process 11 97 0,002392865
Processing 13 97 0,002827931
Production 6 97 0,001305199
Professional 7 97 0,001522732
Propose 13 97 0,002827931
Proposed 33 97 0,007178595
Protocol 7 97 0,001522732
Prototype 6 97 0,001305199
Provide 10 97 0,002175332
Provider 6 97 0,001305199
Quality 20 97 0,004350663
Realtime 8 97 0,001740265
Research 10 97 0,002175332
Resource 7 97 0,001522732
Result 22 97 0,00478573
Retrieval 8 97 0,001740265
Scheme 7 97 0,001522732
Service 17 97 0,003698064
Session 7 97 0,001522732
Set 10 97 0,002175332
Show 14 97 0,003045464
Solution 15 97 0,003262998
Source 13 97 0,002827931
Support 14 97 0,003045464
System 32 97 0,006961062
Task 7 97 0,001522732
Teaching 7 97 0,001522732
Technique 9 97 0,001957799
Technology 12 97 0,002610398
Text 10 97 0,002175332
Tradition 9 97 0,001957799
Traffic 8 97 0,001740265
Type 9 97 0,001957799
User 40 97 0,008701327
Video 23 97 0,005003263
Web 22 97 0,00478573
Wireless 13 97 0,002827931
Work 9 97 0,001957799
65
2. Proses testing
Tabel 16. Probabilitas kata dan nilai maksimal pada sampel data uji 1
0,461582900, maka sampel data uji 1 terpilih sebagai kategori dari Data
Mulai
DataMulai
Konten
Abstrak jurnal
Preprocessing
(Data
case Konten
folding)
Abstrak jurnal
(Tokenizing)
(Filtering)
(Stemming)
Feature Selection
( Term Weighting)
(Reduksi dimensi)
Preprocessing
( case folding)
(Tokenizing)
Klasifikasi NBC
(Filtering) >
P(Yes│kategori)
(Stemming) ?
P(NO│Kategori)
Ya Feature Selection Tidak
( Term Weighting)
(Reduksi dimensi)
Klasifikasi NBC
Kelas YES jika P(Yes│kategori) > Kelas NO jika
Klasfikasi benar P(NO│Kategori) ? Klasifikasi salah
selesai
Pengukuran
selesai
Gambar 19. Diagram Alir Klasifikasi dengan NBC
performasi
Untuk menganalisis data dari konten abstrak yang diperoleh akan dilakukan
17.
69
Selain itu juga akan dilakukan analisis dengan reduksi dimensi yang
berbeda-beda. Dengan proses reduksi dimensi, jumlah data latih dan data
F. INSTRUMENTASI PENELITIAN
1. Software:
a. Windows 7.
c. XAMP 1.8.3
2. Hardware:.
14”
70
penelitian ini metode validasi yang digunakan adalah Confusion matrix yang
data dengan benar atau salah. Jika dataset hanya terdiri dari dua kelas
maka kelas yang satu dianggap sebagai positif dan yang lainnya negatif
data latih.
Prediction Class
Actual
True positives(TP) False negatives(FN)
Class posiive +
Actual Actual False
True negatives(TN)
Negative - positives(FP)
71
diklasifikasikan dengan benar dibagi dengan jumlah data uji, Semakin tinggi
nilai akurasi yang dihasilkan maka semakin bagus dan akurat model
(14)
Keterangan:
probabilias jumlah kata pada data latih. Sehingga pada proses klasifikasi
perancangan sistem.
Hasil jumlah kata yang dihasilkan setelah dilakukan proses reduksi dimensi
Nilai % diatas berarti kata yang diambil adalah kata yang muncul dilebih
Persentase 10-90
Dengan 100% data yang digunakan sebagai data latih dan data uji juga
20. Berikut:
74
Tabel 20. Hasil uji coba 1 dengan parameter reduksi dimensi 10%
confusion matrix Tabel 20 pada uji coba 1 dengan reduksi dimensi 10%.
Tabel 21. Menunjukkan hasil confusion matrix pada uji coba 2 dengan reduksi
dimensi 20%.
Tabel 21. Hasil uji coba 2 dengan parameter reduksi dimensi 20%
confusion matrix Tabel 21 pada uji coba 2 dengan reduksi dimensi 20%.
Tabel 22. menunjukkan hasil confusion matrix pada uji coba 3 dengan reduksi
dimensi 30%.
Tabel 22. Hasil uji coba 3 dengan parameter reduksi dimensi 30%
confusion matrix Tabel 22 pada uji coba 3 dengan reduksi dimensi 30%.
76
Tabel 23. menunjukkan hasil confusion matrix pada uji coba 4 dengan reduksi
dimensi 40%.
Tabel 23. Hasil uji coba 4 dengan parameter reduksi dimensi 40%
Tabel 24. menunjukkan hasil confusion matrix pada uji coba 5 dengan reduksi
dimensi 50%.
Tabel 24.. Hasil uji coba 5 dengan parameter reduksi dimensi 50%
confusion matrix Tabel 24 pada uji coba 5 dengan reduksi dimensi 50%.
Tabel 25. Hasil uji coba 6 dengan parameter reduksi dimensi 60%
confusion matrix Tabel 25 pada uji coba 6 dengan reduksi dimensi 60%.
78
Tabel 26 menunjukkan hasil confusion matrix pada uji coba 7 dengan reduksi
dimensi 70%.
Tabel 26. Hasil uji coba 7 dengan parameter reduksi dimensi 70%
confusion matrix Tabel 26 pada uji coba 7 dengan reduksi dimensi 70%.
Tabel 27 menunjukkan hasil confusion matrix pada uji coba 8 dengan reduksi
dimensi 80%.
Tabel 27. Hasil uji coba 8 dengan parameter reduksi dimensi 80%
Tabel 28 menunjukkan hasil confusion matrix pada uji coba 9 dengan reduksi
dimensi 90%.
Tabel 28. Hasil uji coba 9 dengan parameter reduksi dimensi 90%
confusion matrix Tabel 28. pada uji coba 9 dengan reduksi dimensi 90%.
80
Dari hasil beberapa uji coba parameter reduksi dimensi yang telah
Tabel 30.
Selain itu dilakukan juga uji coba tanpa menggunakan reduksi dimensi pada
confusion matrix Tabel 31. pada uji coba tanpa menggunakan reduksi
dimensi.
Pada Tabel 31. diketahui nilai akurasi adalah 75,33% didapat pada saat
dilakukan skenario uji coba dengan mengubah data learning dan testing
Gambar 20.
Pada Gambar 20. diketahui nilai akurasi terbaik adalah 95,33%, dengan
skenario 75% data latih - 25% data testing dan nilai Learning rate antara
83
dimensi, jumlah data learning dan uji coba menghasilkan akurasi yang
berbeda pula. Dalam penelitian ini, nilai reduksi dimensi sebesar 30%
75% data learning dan 25% data testing. Metode NB berhasil mengenali
dapat mengenali 100% pada kategori DM, 96% untuk kategori ITS dan 90%
Reduksi Dimensi dan Naive Bayes dapat di simpulkan hal- hal seperti
berikut.
proses klasifikasi.
dapat mengenali 100% pada kategori DM, 96% untuk kategori ITS
DAFTAR PUSTAKA
Feldman, R. & Sanger, J. (2007). The Text Mining Handbook. New York:
Cambridge University Press
G. Keerthika dan D. Saravana Priya, 2015. Feature Subset Evaluation and
Classification usingNaive Bayes Classifier, Journal of Network
87
Tan, Ah-Hwee, 1999, Text Mining: The state of the art and the challenges,
Kent Ridge Digital Labs 21 Heng Mui Keng Terrace Singapore
119613.
Toyota, T., Nobuhara, H., 2012, Visualization of the Internet News Based
on Efficient Self-Organizing Map Using Restricted Region Search
and Dimensionality Reduction, Journal of Advanced Computational
Intelligence and Intelligent Informatics, Vol 16, No 2, hal 219-226.
Lampiran 13 : Tabel pemberian nilai Probabilitas kata data uji pada kategori
Data mining
Data Mining
No sampel data uji 1
P(C1,C2...Cn│Wk)
1 data 0,006715771
2 semantic 0,001516464
3 multimedia 0,000216638
4 iarm 0,000216638
5 concept 0,001516464
6 develop 0,002166378
7 reranking 0,000216638
8 correlation 0,000216638
9 text 0,02729636
10 effect 0,002816291
11 rule 0,000216638
12 mining 0,009315425
13 posit 0,000216638
14 approach 0,002599653
15 reveal 0,000216638
16 introduced 0,000216638
17 associate 0,000216638
18 paper 0,008015598
19 explored 0,000216638
20 studied 0,000216638
21 interconcept 0,000216638
22 enhance 0,000216638
23 hidden 0,000216638
24 perform 0,002599653
25 neg 0,000216638
26 indirect 0,000216638
27 multiple 0,000216638
28 benchmark 0,000216638
29 trecvid 0,000216638
30 result 0,000216638
31 classification 0,003032929
32 dataset 0,002816291
33 show 0,003682842
34 process 0,003466205
35 factor 0,002166378
95
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
36 optimal 0,000216638
37 achieve 0,001516464
38 analysi 0,004116118
39 correspond 0,000216638
40 modality 0,000216638
41 mca 0,000216638
42 normal 0,000216638
43 perform 0,002599653
44 integrate 0,000216638
45 score 0,000216638
46 evaluated 0,002166378
47 order 0,00194974
48 approach 0,002599653
49 attention 0,000216638
50 research 0,003466205
51 draw 0,000216638
52 efficiently 0,000216638
53 retrieve 0,000216638
54 keywordbased 0,000216638
55 inadequacy 0,000216638
56 manage 0,000216638
57 trend 0,000216638
58 unstopp 0,000216638
59 massive 0,000216638
60 propagate 0,000216638
61 lead 0,000216638
62 amount 0,00194974
63 form 0,001733102
64 video 0,000216638
65 audio 0,000216638
66 image 0,004549393
67 search 0,000216638
68 retrieval 0,000216638
69 growing 0,000216638
70 rapidly 0,000216638
71 highlevel 0,000216638
72 topic 0,000216638
73 regard 0,000216638
74 representate 0,002383016
96
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
75 technolog 0,000216638
76 detection 0,002166378
77 specifically 0,000216638
78 incomplete 0,000216638
79 nonexist 0,000216638
80 due 0,000216638
81 annotate 0,000216638
82 called 0,000216638
83 framework 0,000216638
84 manag 0,000216638
85 contentbased 0,000216638
86 derived 0,000216638
Nilai probabilitas max P(C1,C2│wk)P(wk) 0,461582900
Lampiran 14 : Tabel pemberian nilai Probabilitas kata data uji pada Intelligent
Transport System
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
1 data 0,007152146
2 semantic 0,000222222
3 multimedia 0,000222222
4 iarm 0,000222222
5 concept 0,000222222
6 develop 0,003684439
7 reranking 0,000222222
8 correlation 0,000222222
9 text 0,000222222
10 effect 0,001733853
11 rule 0,000222222
12 mining 0,000222222
13 posit 0,000222222
14 approach 0,000222222
15 reveal 0,000222222
16 introduced 0,000222222
17 associate 0,000222222
18 paper 0,007368877
19 explored 0,000222222
97
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
20 interconcept 0,000222222
21 perform 0,003467707
22 neg 0,000222222
23 indirect 0,000222222
24 multiple 0,000222222
25 benchmark 0,000222222
26 trecvid 0,000222222
27 result 0,00520156
28 classification 0,000222222
29 dataset 0,000222222
30 show 0,00390117
31 process 0,000222222
32 factor 0,000222222
33 proposed 0,003467707
34 optimal 0,000222222
35 achieve 0,000222222
36 analysi 0,000222222
37 correspond 0,000222222
38 modality 0,000222222
39 mca 0,000222222
40 normal 0,000222222
41 perform 0,003467707
42 integrate 0,001517122
43 score 0,000222222
44 evaluated 0,000222222
45 order 0,000222222
46 approach 0,000222222
47 attention 0,000222222
48 research 0,00260078
49 draw 0,000222222
50 efficiently 0,000222222
51 retrieve 0,000222222
52 keywordbased 0,000222222
53 inadequacy 0,000222222
54 manage 0,000222222
55 trend 0,000222222
56 unstopp 0,000222222
57 massive 0,000222222
58 propagate 0,000222222
98
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
59 form 0,000222222
60 video 0,001950585
61 audio 0,000222222
62 image 0,002167317
63 search 0,000222222
64 retrieval 0,000222222
65 growing 0,000222222
66 rapidly 0,000222222
67 highlevel 0,000222222
68 topic 0,000222222
69 regard 0,000222222
70 representate 0,000222222
71 identify 0,00130039
72 technolog 0,002384049
73 detection 0,001733853
74 specifically 0,000222222
75 incomplete 0,000222222
76 nonexist 0,000222222
77 due 0,000222222
78 annotate 0,000222222
79 called 0,001733853
80 framework 0,004117902
81 manag 0,000222222
82 contentbased 0,000222222
83 derived 0,000222222
Nilai probabilitas max P(C1,C2│wk)P(wk) 0,083860501
99
Multimedia
No sampel data uji 1
P(C1,C2...Cn│Wk)
1 data 0,009353926
2 semantic 0,000217533
3 multimedia 0,022405917
4 iarm 0,000217533
5 concept 0,000217533
6 develop 0,002392865
7 reranking 0,000217533
8 correlation 0,000217533
9 text 0,002175332
10 effect 0,000217533
11 rule 0,000217533
12 mining 0,000217533
13 posit 0,000217533
14 approach 0,003698064
15 reveal 0,000217533
16 introduced 0,001740265
17 associate 0,000217533
18 paper 0,006308462
19 explored 0,000217533
20 studied 0,000217533
21 interconcept 0,000217533
22 enhance 0,000217533
23 hidden 0,000217533
24 perform 0,000217533
25 neg 0,000217533
26 indirect 0,000217533
27 multiple 0,002392865
28 benchmark 0,000217533
29 trecvid 0,000217533
30 result 0,00478573
31 classification 0,000217533
32 dataset 0,000217533
33 show 0,003045464
34 process 0,002392865
36 proposed 0,007178595
100
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
37 achieve 0,002175332
38 analysi 0,000217533
39 correspond 0,000217533
40 modality 0,000217533
41 mca 0,000217533
42 normal 0,000217533
43 perform 0,000217533
44 integrate 0,000217533
45 score 0,000217533
46 evaluated 0,000217533
47 order 0,002175332
48 approach 0,003698064
49 attention 0,000217533
50 research 0,002175332
51 draw 0,000217533
52 efficiently 0,000217533
53 retrieve 0,000217533
54 keywordbased 0,000217533
55 inadequacy 0,000217533
56 manage 0,001740265
57 trend 0,000217533
58 unstopp 0,000217533
59 massive 0,000217533
60 propagate 0,000217533
61 lead 0,000217533
62 amount 0,000217533
63 form 0,000217533
64 video 0,005003263
65 audio 0,000217533
66 image 0,003915597
67 search 0,000217533
68 retrieval 0,001740265
69 growing 0,000217533
70 rapidly 0,000217533
71 highlevel 0,000217533
72 topic 0,000217533
73 regard 0,000217533
76 identify 0,000217533
77 technolog 0,002610398
101
ITS
No sampel data uji 1
P(C1,C2...Cn│Wk)
78 specifically 0,000217533
79 incomplete 0,000217533
80 nonexist 0,000217533
81 due 0,002175332
82 annotate 0,000217533
83 called 0,001522732
84 framework 0,000217533
85 manag 0,001740265
86 contentbased 0,004350663
87 derived 0,000217533
Nilai probabilitas max P(C1,C2│wk)P(wk) 0,116815314
function decodeAsciiHex($input) {
$output = "";
$isOdd = true;
$isComment = false;
if($isComment) {
if ($c == '\r' || $c == '\n')
$isComment = false;
continue;
}
switch($c) {
case '\0': case '\t': case '\r': case '\f': case '\n': case ' ': break;
case '%':
$isComment = true;
break;
default:
$code = hexdec($c);
if($code === 0 && $c != '0')
return "";
102
if($isOdd)
$codeHigh = $code;
else
$output .= chr($codeHigh * 16 + $code);
$isOdd = !$isOdd;
break;
}
}
if($input[$i] != '>')
return "";
if($isOdd)
$output .= chr($codeHigh * 16);
return $output;
}
function decodeAscii85($input) {
$output = "";
$isComment = false;
$ords = array();
if($isComment) {
if ($c == '\r' || $c == '\n')
$isComment = false;
continue;
}
if ($state == 5) {
$state = 0;
for ($sum = 0, $j = 0; $j < 5; $j++)
$sum = $sum * 85 + $ords[$j];
for ($j = 3; $j >= 0; $j--)
$output .= chr($sum >> ($j * 8));
}
}
if ($state === 1)
return "";
elseif ($state > 1) {
for ($i = 0, $sum = 0; $i < $state; $i++)
$sum += ($ords[$i] + ($i == $state - 1)) * pow(85, 4 - $i);
for ($i = 0; $i < $state - 1; $i++)
$ouput .= chr($sum >> ((3 - $i) * 8));
}
return $output;
}
function decodeFlate($input) {
return @gzuncompress($input);
}
function getObjectOptions($object) {
$options = array();
if (preg_match("#<<(.*)>>#ismU", $object, $options)) {
$options = explode("/", $options[1]);
@array_shift($options);
$o = array();
for ($j = 0; $j < @count($options); $j++) {
$options[$j] = preg_replace("#\s+#", " ", trim($options[$j]));
if (strpos($options[$j], " ") !== false) {
$parts = explode(" ", $options[$j]);
$o[$parts[0]] = $parts[1];
} else
$o[$options[$j]] = true;
}
$options = $o;
unset($o);
}
return $options;
}
function getDecodedStream($stream, $options) {
104
$data = "";
if (empty($options["Filter"]))
$data = $stream;
else {
$length = !empty($options["Length"]) ? $options["Length"] : strlen($stream);
$_stream = substr($stream, 0, $length);
if (preg_match("#<([0-9a-f]{4})>\s+<([0-9a-f]{4})>\s+<([0-9a-f]{4})>#is",
trim($current[$k]), $map)) {
$from = hexdec($map[1]);
$to = hexdec($map[2]);
$_from = hexdec($map[3]);
for ($m = $from, $n = 0; $m <= $to && $n < count($parts); $m++, $n++)
$transformations[sprintf("%04X", $m)] = sprintf("%04X", hexdec($parts[$n]));
}
}
}
}
function getTextUsingTransformations($texts, $transformations) {
$document = "";
for ($i = 0; $i < count($texts); $i++) {
$isHex = false;
$isPlain = false;
$hex = "";
$plain = "";
for ($j = 0; $j < strlen($texts[$i]); $j++) {
$c = $texts[$i][$j];
switch($c) {
case "<":
$hex = "";
$isHex = true;
break;
case ">":
$hexs = str_split($hex, 4);
for ($k = 0; $k < count($hexs); $k++) {
$chex = str_pad($hexs[$k], 4, "0");
if (isset($transformations[$chex]))
$chex = $transformations[$chex];
$document .= html_entity_decode("&#x".$chex.";");
}
$isHex = false;
break;
case "(":
$plain = "";
106
$isPlain = true;
break;
case ")":
$document .= $plain;
$isPlain = false;
break;
case "\\":
$c2 = $texts[$i][$j + 1];
if (in_array($c2, array("\\", "(", ")"))) $plain .= $c2;
elseif ($c2 == "n") $plain .= '\n';
elseif ($c2 == "r") $plain .= '\r';
elseif ($c2 == "t") $plain .= '\t';
elseif ($c2 == "b") $plain .= '\b';
elseif ($c2 == "f") $plain .= '\f';
elseif ($c2 >= '0' && $c2 <= '9') {
$oct = preg_replace("#[^0-9]#", "", substr($texts[$i], $j + 1, 3));
$j += strlen($oct) - 1;
$plain .= html_entity_decode("&#".octdec($oct).";");
}
$j++;
break;
default:
if ($isHex)
$hex .= $c;
if ($isPlain)
$plain .= $c;
break;
}
}
$document .= "\n";
}
return $document;
}
function pdf2text($filename) {
$infile = @file_get_contents($filename, FILE_BINARY);
if (empty($infile))
return "";
$transformations = array();
$texts = array();
$options = getObjectOptions($currentObject);
if (!(empty($options["Length1"]) && empty($options["Type"]) &&
empty($options["Subtype"])))
continue;
?>
Fungsi Casefolding
$casefolding = strtolower($pisahkata[0]);
Fungsi Tokenizing
Fungsi Stopword
function hapusStopWords($input){
bviously','of','off','often','oh','ok','okay','old','on','once','one','ones','one\'s','only','
onto','opposite','or','other','others','otherwise','ought','oughtn\'t','our','ours','ours
elves','out','outside','over','overall','own','p','particular','particularly','past','per','pe
rhaps','placed','please','plus','possible','presumably','probably','provided','provides
','q','que','quite','qv','r','rather','rd','re','really','reasonably','recent','recently','regar
ding','regardless','regards','relatively','respectively','right','round','s','said','same','s
aw','say','saying','says','second','secondly','see','seeing','seem','seemed','seeming','
seems','seen','self','selves','sensible','sent','serious','seriously','seven','several','sha
ll','shan\'t','she','she\'d','she\'ll','she\'s','should','shouldn\'t','since','six','so','some','
somebody','someday','somehow','someone','something','sometime','sometimes','
somewhat','somewhere','soon','sorry','specified','specify','specifying','still','sub','su
ch','sup','sure','t','take','taken','taking','tell','tends','th','than','thank','thanks','thanx
','that','that\'ll','thats','that\'s','that\'ve','the','their','theirs','them','themselves','th
en','thence','there','thereafter','thereby','there\'d','therefore','therein','there\'ll','t
here\'re','theres','there\'s','thereupon','there\'ve','these','they','they\'d','they\'ll','t
hey\'re','they\'ve','thing','things','think','third','thirty','this','thorough','thoroughly',
'those','though','three','through','throughout','thru','thus','till','to','together','too','
took','toward','towards','tried','tries','truly','try','trying','t\'s','twice','two','u','un','u
nder','underneath','undoing','unfortunately','unless','unlike','unlikely','until','unto',
'up','upon','upwards','us','use','used','useful','uses','using','usually','v','value','vario
us','versus','very','via','viz','vs','w','want','wants','was','wasn\'t','way','we','we\'d','
welcome','well','we\'ll','went','were','we\'re','weren\'t','we\'ve','what','whatever','
what\'ll','what\'s','what\'ve','when','whence','whenever','where','whereafter','wh
ereas','whereby','wherein','where\'s','whereupon','wherever','whether','which','w
hichever','while','whilst','whither','who','who\'d','whoever','whole','who\'ll','whom
','whomever','who\'s','whose','why','will','willing','wish','with','within','without','w
onder','won\'t','would','wouldn\'t','x','y','yes','yet','you','you\'d','you\'ll','your','you
\'re','yours','yourself','yourselves','you\'ve','z','zero');
return preg_replace('/\b('.implode('|',$commonWords).')\b/','-
',$input);
}
Fungsi Stemming
class PorterStemmer
{
$word = self::step1ab($word);
$word = self::step1c($word);
$word = self::step2($word);
$word = self::step3($word);
$word = self::step4($word);
$word = self::step5($word);
return $word;
}
/**
* Step 1
*/
private static function step1ab($word)
{
// Part a
if (substr($word, -1) == 's') {
}
111
// Part b
if (substr($word, -2, 1) != 'e' OR !self::replace($word, 'eed', 'ee', 0)) { // First
rule
$v = self::$regex_vowel;
// ing and ed
if ( preg_match("#$v+#", substr($word, 0, -4)) && self::replace($word,
'ging', 'ge')
OR preg_match("#$v+#", substr($word, 0, -4)) && self::replace($word,
'ting', 't')
OR preg_match("#$v+#", substr($word, 0, -3)) && self::replace($word,
'ing', 'ing')
OR preg_match("#$v+#", substr($word, 0, -2)) && self::replace($word,
'ed', 'ed')) { // Note use of && and OR, for precedence reasons
return $word;
}
112
/**
* Step 1c
*
* @param string $word Word to stem
*/
private static function step1c($word)
{
$v = self::$regex_vowel;
return $word;
}
/**
* Step 2
*
* @param string $word Word to stem
*/
private static function step2($word)
{
switch (substr($word, -2, 1)) {
case 'a':
self::replace($word, 'ational', 'ate', 0)
OR self::replace($word, 'ical', 'e', 0)
OR self::replace($word, 'tional', 'tion', 0);
break;
case 'c':
self::replace($word, 'enci', 'ence', 0)
OR self::replace($word, 'anci', 'ance', 0);
break;
case 'e':
self::replace($word, 'izer', 'ize', 0)
OR self::replace($word, 'izet', '', 0)
OR self::replace($word, 'iz', '', 0)
OR self::replace($word, 'set', '', 0);
break;
113
case 'g':
self::replace($word, 'logi', 'log', 0);
break;
case 'l':
self::replace($word, 'entli', 'ent', 0)
OR self::replace($word, 'ousli', 'ous', 0)
OR self::replace($word, 'alli', 'al', 0)
OR self::replace($word, 'bli', 'ble', 0)
OR self::replace($word, 'eli', 'e', 0);
break;
case 'o':
self::replace($word, 'ization', 'ize', 0)
OR self::replace($word, 'ication', 'ication',0)
OR self::replace($word, 'lation', 'lation',0)
OR self::replace($word, 'ation', 'ate', 0)
OR self::replace($word, 'ator', 'ate', 0);
break;
case 's':
self::replace($word, 'iveness', 'ive', 0)
OR self::replace($word, 'fulness', 'ful', 0)
OR self::replace($word, 'ousness', 'ous', 0)
OR self::replace($word, 'alism', 'al', 0);
break;
case 't':
self::replace($word, 'biliti', 'ble', 0)
OR self::replace($word, 'aliti', 'al', 0)
OR self::replace($word, 'iviti', 'ive', 0);
break;
}
return $word;
}
/**
* Step 3
*
* @param string $word String to stem
114
*/
private static function step3($word)
{
switch (substr($word, -2, 1)) {
case 'a':
self::replace($word, 'ical', 'ic', 0);
break;
case 's':
self::replace($word, 'ness', '', 0);
break;
case 't':
self::replace($word, 'icate', 'ic', 0)
OR self::replace($word, 'iciti', 'ic', 0);
break;
case 'u':
self::replace($word, 'ful', '', 0);
break;
case 'v':
self::replace($word, 'ative', 'e', 0);
break;
case 'z':
self::replace($word, 'alize', 'al', 0);
break;
}
return $word;
}
/**
* Step 4
*
* @param string $word Word to stem
*/
private static function step4($word)
{
switch (substr($word, -2, 1)) {
case 'a':
115
case 'c':
self::replace($word, 'ance', '', 1)
OR self::replace($word, 'gence', 'gent', 1)
OR self::replace($word, 'ence', '', 1);
break;
case 'e':
if (substr($word, -3) == 'hes'){
self::replace($word, 'es', '', 1);
}else{
self::replace($word, 'er', 'er', 1);
}
break;
case 'i':
self::replace($word, 'ic', 'ic', 1);
break;
case 'l':
self::replace($word, 'able', '', 1)
OR self::replace($word, 'ible', '', 1);
break;
case 'n':
self::replace($word, 'ant', '', 1)
OR self::replace($word, 'ement', '', 1)
OR self::replace($word, 'ments', 'ment', 1)
OR self::replace($word, 'ent', 'ent', 1);
break;
case 'o':
if (substr($word, -4) == 'tion' OR substr($word, -4) == 'sion') {
self::replace($word, 'ion', 'e', 1);
} else {
self::replace($word, 'ou', '', 1);
}
break;
case 's':
self::replace($word, 'ism', '', 1);
116
break;
case 't':
self::replace($word, 'modate', 'moda', 1)
OR self::replace($word, 'uate', 'uate', 1)
//OR self::replace($word, 'ate', '', 1)
OR self::replace($word, 'iti', '', 1);
break;
case 'u':
self::replace($word, 'ous', '', 1);
break;
case 'v':
self::replace($word, 'ive', '', 1);
break;
case 'z':
self::replace($word, 'ize', '', 1);
break;
}
return $word;
}
/**
* Step 5
*
* @param string $word Word to stem
*/
private static function step5($word)
{
// Part a
if (substr($word, -1) == 'e') {
if (self::m(substr($word, 0, -1)) > 1) {
self::replace($word, 'e', 'e');
if (!self::cvc(substr($word, 0, -1))) {
self::replace($word, 'e', 'e');
}
117
}
}
// Part b
if (self::m($word) > 1 AND self::doubleConsonant($word) AND
substr($word, -1) == 'l') {
$word = substr($word, 0, -1);
}
return $word;
}
/**
* Replaces the first string with the second, at the end of the string. If third
* arg is given, then the preceding string must match that m count at least.
*
* @param string $str String to check
* @param string $check Ending to check for
* @param string $repl Replacement string
* @param int $m Optional minimum number of m() to meet
* @return bool Whether the $check string was at the end
* of the $str string. True does not necessarily mean
* that it was replaced.
*/
private static function replace(&$str, $check, $repl, $m = null)
{
$len = 0 - strlen($check);
return true;
}
return false;
}
/**
* What, you mean it's not obvious from the name?
118
*
* m() measures the number of consonant sequences in $str. if c is
* a consonant sequence and v a vowel sequence, and <..> indicates arbitrary
* presence,
*
* <c><v> gives 0
* <c>vc<v> gives 1
* <c>vcvc<v> gives 2
* <c>vcvcvc<v> gives 3
*
* @param string $str The string to return the m count for
* @return int The m count
*/
private static function m($str)
{
$c = self::$regex_consonant;
$v = self::$regex_vowel;
return count($matches[1]);
}
/**
* Returns true/false as to whether the given string contains two
* of the same consonant next to each other at the end of the string.
*
* @param string $str String to check
* @return bool Result
*/
private static function doubleConsonant($str)
{
$c = self::$regex_consonant;
/**
119
$no=1;
$row = mysql_query("SELECT * FROM term_training WHERE
training_id='$data'");
while($r = mysql_fetch_array($row)){
//$idf = round(log10($N/$df['jml']),4);
//$w = $r['tf']*$idf;
echo "
<tr class='gradeX'>
<td style='width:20px;'>$no</td>
<td>$r[Kata]</td>
<td style='text-align:center;'>$r[tf]</td>
</tr>";
$no++;}
?>
$no=1;
$N = mysql_num_rows(mysql_query("SELECT * FROM dokumen"));
120
/**
* Flattens a multi demensional array into a one dimensional
* to be compatible with hidden html fields.
*
* @param array $array
* Array in the form:
* array(
* 'a' => term_DM(
* 'b' => '30%'
* )
* )
*@param array $array
* Array in the form:
* array(
* 'a' => term_ITS(
* 'b' => '30%'
* )
* )
* @param array $array
* Array in the form:
* array(
* 'a' => term_MM(
* 'b' => '30%'
* )
* )
*/
function flatten_array($array) {
// Continue until $array is a one-dimensional array.
$continue = TRUE;
while ($continue) {
$continue = FALSE;
121
/
foreach ($array as $key => $value) {
if (is_array($value)) {
$continue = TRUE
foreach ($value as $term_key => $term_value) {
$array[$key . '[' . $term_key . ']'] = $term_value;
}
unset($array[$key]);
}
}
}
include"../config/koneksi.php";
$uji=implode(',',$_POST['datauji']);
$latih =implode(',',$_POST['datalatih']);
$pecahUji = explode(",",$uji);
$pecahLatih = explode(",",$latih);
$probUji = count($_POST['datauji']);
$probLatih = count($_POST['datalatih']);
<?php
$nu = 1;
$uji = mysql_query("select * from dokumen where
pakai='Y'");
while($uj = mysql_fetch_array($uji)){
echo"<p>$nu. $uj[File_Judul]</p>";
$nu++;}
122
?>
$nh = 1;
$sdfsf = array();
$hasiluji = mysql_query("select * from dokumen where pakai='Y'");
while($hu = mysql_fetch_array($hasiluji)){
//$rows = mysql_fetch_row(mysql_query("SELECT Kata FROM
tfidf WHERE File_Id='$hu[File_Id]'"));
$terms =array();
$terms2=array();
$hitProbKat = mysql_query("select
*,sum(vocabulary.voca_nilai) As pci from tfidf,vocabulary WHERE
vocabulary.voca_kata=tfidf.Kata AND tfidf.File_Id='$hu[File_Id]' GROUP BY
vocabulary.voca_label");
//SELECT Kata,voca_nilai,voca_label FROM tfidf,vocabulary
WHERE vocabulary.voca_kata=tfidf.Kata AND tfidf.File_Id='$hu[File_Id]'
while($hp = mysql_fetch_array($hitProbKat)){
$pci = round($hp['pci'],4);
$terms[] = "$pci=>$hp[voca_label]<br/>";
$terms2[] = "$pci=>$hp[voca_label]";
}
$dtrain = implode('',$terms);
echo"
<tr>
<td style='text-align:center;'>$nh</td>
<td>$hu[File_Judul]</td>
<td style='text-align:center;'>$dtrain</td>
<td style='text-align:center;'>";
$max = max($terms2);
$pecah = explode("=>",$max);
$sdfsf[] = $pecah['1'];
echo "<strong>$pecah[1]</strong>";
echo"</td>
</tr>