T1 672008156 Full text

(1)

1. Pendahuluan

Evaluasi hasil belajar menjadi komponen yang sangat penting dalam proses pembelajaran, karena hasil evaluasi merupakan indikator dari pemahaman siswa terhadap materi ajar yang diberikan. Soal esai merupakan salah satu bentuk dari soal ujian atau evaluasi dimana tidak adanya pilihan jawaban yang disediakan sehingga jawaban dapat bervariasi sesuai dengan pemikiran-pemikiran setiap peserta ujian[1].

Esai dianggap sebagai metode yang paling tepat untuk menilai hasil kegiatan belajar yang kompleks. Namun ternyata esai menimbulkan masalah baru yaitu pemeriksaan esai yang membutuhkan waktu lama serta sifat subjektif dari penilai. Karena itu pengajar membutuhkan sistem yang dapat memeriksa esai secara otomatis.

Tes online adalah sebuah tes yang berbasis komputer. Yang dimaksudkan adalah komputer digunakan sebagai sarana untuk mengadakan tes. Tes online dapat memudahkan pengajar dalam mengoreksi tes karena komputer akan secara otomatis mengoreksinya. Tes online juga dapat menghemat pemakaian kertas karena tidak memerlukan kertas untuk soal dan lembar jawab siswa.

Latent Semantic Analysis (LSA) adalah merupakan sebuah metode statistik yang dapat digunakan untuk menentukan dan merepresentasikan kesamaan makna dari kata-kata dan teks dengan cara melakukan analisis terhadap teks dalam jumlah yang besar. Dengan metode LSA, semantik dari teks dapat ditentukan melalui proses perhitungan semantik similaritas yang merupakan proses keterlibatan beberapa ilmu seperti bahasa, komputer, logika matematika dan domain yang bersangkutan.

Dengan adanya teknologi dan algoritma LSA ini akan diteliti bagaimana membuat sistem tes esai secara online dengan memanfaatkan algoritma LSA. Manfaat yang ingin dicapai didalam penelitian ini adalah agar pengajar dapat dipermudah dalam memeriksa soal berbentuk esai dan mendapatkan patokan bobot nilai yang jelas.

2. Kajian Pustaka

Penelitian terdahulu tentang metode LSA adalah tentang penggunan metode LSA untuk menilai tes esai. Tahap-tahap metode LSA yang dilakukan pada penelitian ini adalah parsing test, pembobotan term dengan TF-IDF, dekomposisi dan reduksi dengan SVD dan perhitungan similarity. Hasil dari penelitian tersebut adalah nilai similarity jawaban kunci dengan jawaban yang lainnya. [2].

Penelitian lain membahas tentang metode LSA dalam pembuatan ringkasan teks dengan menggunakan peringkat dan intisari kalimat dari dokumen asli. Dalam penelitian ini LSA digunakan untuk mengidentifikasi semantik kalimat-kalimat penting dalam pembuatan ringkasan. Sehingga menghasilkan kalimat-kalimat yang mempunyai peringkat tertinggi dan berbeda dari yang lain. Hasil dari penelitian ini dapat membuat ringkasan dokumen dengan cangkupan isi dokumen yang luas dan meminimalisir redundansi [3].

Penelitian yang lain membahas tentang sistem penilaian otomatis jawaban esai menggunakan ontologi pada moodle. Penelitian ini mengemukakan suatu teknik gabungan yang disebut algoritma hybrid pada penilaian esai di sistem


(2)

e-leraning. Proses yang dilakukan pada penelitian ini antara lain pencarian sinonim berdasarkan pengukuran similaritas semantik berbasis WordNet dan pemberian skor pada kemiripan objek pada data ontologi. Hasil dari penelitian ini sudah dapat dilakukan perhitungan kemiripan suatu kalimat berdasarkan kedekatan masing-masing katanya dalam struktur database WordNet. Selain itu jawaban akan dilihat hubungannya lagi berdasarkan pada struktur ontologi yang ada pada jawaban di ontologi yang dimasukkan oleh user [4].

Dalam penelitian ini metode LSA juga dimanfaatkan untuk penilaian tes esai dengan penambahan fungsi sinonim kata sehingga kata-kata yang digunakan dalam pembobotan kata lebih spesifik.

Stemming Algoritma Nazief dan Adriani

Stemming merupakan suatu proses yang terdapat dalam sistem Information Retrieval (IR) yang mentransformasi kata-kata yang terdapat dalam suatu dokumen ke 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 [5].

Algoritma yang dibuat oleh Bobby Nazief dan Mirna Adriani ini memiliki tahap-tahap sebagai berikut:

1. Cari kata yang akan distem dalam kamus. Jika ditemukan maka diasumsikan bahwa kata tesebut adalah root word. Maka algoritma berhenti.

2. Inflection Suffixes (“-lah”, “-kah”, “-ku”, “-mu”, atau “-nya”) dibuang. Jika berupa particles(“-lah”, “-kah”, “-tah” atau “-pun”) maka langkah ini diulangi lagi untuk menghapus Possesive Pronouns (“-ku”, “-mu”, atau “-nya”), jika ada.

3. Hapus Derivation Suffixes (“-i”, “-an” atau “-kan”). Jika kata ditemukan di kamus, maka algoritma berhenti. Jika tidak maka ke langkah 3a

a. Jika “-an” telah dihapus dan huruf terakhir dari kata tersebut adalah “ -k”, maka “-k” juga ikut dihapus. Jika kata tersebut ditemukan dalam kamus maka algoritma berhenti. Jika tidak ditemukan maka lakukan langkah 3b.

b. Akhiran yang dihapus (“-i”, “-an” atau “-kan”) dikembalikan, lanjut ke langkah 4.

4. Hapus Derivation Prefix. Jika pada langkah 3 ada sufiks yang dihapus maka pergi ke langkah 4a, jika tidak pergi ke langkah 4b.

a. Periksa tabel kombinasi awalan-akhiran yang tidak diijinkan. Jika ditemukan maka algoritma berhenti jika tidak pergi ke langkah 4b. b. For i = 1 to 3, tentukan tipe awalan kemudian hapus awalan. Jika root

word belum juga ditemukan lakukan langkah 5, jika sudah maka algoritma berhenti. Catatan: jika awalan kedua sama dengan awalan pertama algoritma berhenti.


(3)

6. Jika semua langkah telah selesai tetapi tidak juga berhasil maka kata awal diasumsikan sebagai root word. Proses selesai.

Tipe awalan ditentukan melalui langkah-langkah berikut:

1. Jika awalannya adalah: “di-”, “ke-”, atau “se-” maka tipe awalannya secara berturut-turut adalah “di-”, “ke-”, atau“se”.

2. Jika awalannya adalah “te-”, “me-”, “be-”, atau “pe-” maka dibutuhkan sebuah proses tambahan untuk menentukan tipe awalannya.

3. Jika dua karakter pertama bukan “di-”, “ke-”, “se-”, “te-”, “be-”, “me-”, atau “pe-” maka berhenti.

4. Jika tipe awalan adalah “none” maka berhenti. Jika tipe awalan adalah bukan “none” maka awalan dapat dilihat pada Tabel 2. Hapus awalan jika ditemukan.

Tabel 1. Kombinasi awalan dan akhiran yang tidak diijinkan

Tabel 2. Cara Menentukan Tipe Awalan Kata Yang Diawali Dengan “te-”

Tabel 3. Jenis Awalan Berdasarkan Tipe Awalannya

Untuk mengatasi keterbatasan pada algoritma di atas, maka ditambahkan aturan-aturan dibawah ini:

1. Aturan untuk reduplikasi.

a. Jika kedua kata yang dihubungkan oleh kata penghubung adalah kata yang sama maka root word adalah bentuk tunggalnya, contoh : “buku-buku” root word-nya adalah “buku”.

b. Kata lain, misalnya “bolak-balik”, “berbalas-balasan, dan ”seolah-olah”. Untuk mendapatkan root word-nya, kedua kata diartikan secara terpisah. Jika keduanya memiliki root word yang sama maka diubah menjadi bentuk tunggal, contoh: kata “berbalas-balasan”,“berbalas” dan “balasan” memiliki root word yang sama yaitu “balas”, maka root word “berbalas -balasan” adalah “balas”. Sebaliknya, pada kata “bolak-balik”, “bolak” dan “balik” memiliki root word yang berbeda, maka root word-nya adalah “bolak-balik”


(4)

a. Untuk tipe awalan “mem-“, kata yang diawali dengan awalan “memp-” memiliki tipe awalan “mem-”.

b. Tipe awalan “meng-“, kata yang diawali dengan awalan “mengk-” memiliki tipe awalan “meng-”.

Term Frequency-Inverse Document Frequency (TF-IDF)

Metode Term Frequency-Inverse Document Frequency (TF-IDF) adalah cara pemberian bobot hubungan suatu kata (term) terhadap dokumen. Untuk dokumen tunggal tiap kalimat dianggap sebagai dokumen. Metode ini menggabungkan dua konsep untuk perhitungan bobot, yaitu Term frequency (TF) merupakan frekuensi kemunculan kata (t) pada kalimat (d). Document frequency (DF) adalah banyaknya kalimat dimana suatu kata (t) muncul [6].

Frekuensi kemunculan kata di dalam dokumen yang diberikan menunjukkan seberapa penting kata itu di dalam dokumen tersebut. Frekuensi dokumen yang mengandung kata tersebut menunjukkan seberapa umum kata tersebut. Bobot kata semakin besar jika sering muncul dalam suatu dokumen dan semakin kecil jika muncul dalam banyak dokumen.

Adapun rumus umum TF-IDF adalah sebagai berikut:

Dimana:

Wij : bobot kata/term ke-j dan dokumen ke-i

Tfij : jumlah kemuculan kata/term ke-j dalam dokumen ke-i

N : jumlah semua dokumen yang ada dalam basis data n : jumlah dokumen yang mengandung term ke-j Algoritma Latent Semantic Analysis

Latent Semantic Analysis (LSA) adalah suatu teori atau algoritma untuk mengekstrak dan merepresentasikan kesamaan makna dari kata-kata menggunakan perhitungan statistika yang diterapkan pada keseluruhan teks [7]. LSA menggunakan metode aljabar linear yaitu singular value decomposition (SVD). LSA akan membentuk matriks yang merepresentasikan asosiasi antara term-dokumen yang merupakan semantic space, yakni kata–kata dan dokumen-dokumen yang berasosiasi dekat akan ditempatkan dekat satu sama lain.

Tahapan LSA meliputi 3 tahap utama yaitu: 1. Parsing Text dan Pembobotan dengan TF IDF

Parsing adalah sebuah proses yang dilakukan seseorang untuk menjadikan sebuah kalimat menjadi lebih bermakna atau berarti dengan cara memecah kalimat tersebut menjadi kata-kata atau frase-frase [8]. Parsing di dalam pembuatan aplikasi dokumen yang semula berupa kalimat-kalimat berisi kata-kata dan tanda pemisah antar kata seperti titik (.), koma(,), spasi dan tanda pemisah lainnya menjadi kata-kata saja baik itu berupa kata-kata penting maupun tidak penting. Parsing text dibagi menjadi tiga bagian seperti:


(5)

a. Tokenizing

Tokenizing merupakan proses mengidentifikasi unit terkecil (token) dari suatu struktur kalimat. Tujuan dilakukannya tokenizing ini adalah untuk mendapatkan term-term yang nantinya akan diindeks. Pengklasifikasian token dilakukan untuk teks yang dipisahkan dengan spasi atau enter adalah suatu dokumen.

b. Filtering

Filtering merupakan proses dimana token-token yang didapat dari proses tokenizing akan diseleksi dari token-token yang dianggap tidak penting (stoplist). Stoplist merupakan kata yang sering muncul dan bisa diabaikan pada proses filtering.

c. Stemming

Stemming adalah suatu proses yang bertujuan untuk mengambil kata dasar dari kata yang berimbuhan atau kata tunggal dari kata bentukan. Hal itu mengurangi jumlah term yang berbeda dalam koleksi.

Setelah proses parsing text dilakukan langkah selanjutnya adalah melakukan pembobotan hasil parsing text dengan menggunakan algoritma TF-IDF.

2. Singular Value Decomposition (SVD)

Singular Value Decomposition (SVD) adalah satu metode untuk memecahkan masalah-masalah matematik linier. Pada SVD, matriks akan didekomposisi menjadi tiga komponen matriks. Komponen matriks pertama mendeskripsikan entitas baris sebagai vektor orthogonal matriks. Komponen matriks kedua mendeskripsikan matriks diagonal yang berisi nilai skalar dan yang ketiga adalah matriks entitas kolom sebagai vektor orthogonal matriks.

Metode SVD berdasarkan pada teori aljabar linier yang menyatakan bahwa suatu matriks A yang berukuran mxn, mempunyai nilai singular yang merupakan akar pangkat dua eigenvalue ATA.

Adapun rumus yang digunakan, yaitu:

Dimana:

A : matriks yang didekomposisi

U : matriks ortogonal U (matriks vektor singular kiri) S : matriks diagonal S (matriks nilai singular)

V : transpose matriks ortogonal V(matriks vektor singular kanan) m : jumlah baris matriks

n : jumlah kolom matriks

Setelah memperoleh 3 matriks dari proses SVD, proses berikutnya yang perlu dilakukan adalah mereduksi dimensi dari matriks dengan cara mengurangi dimensi dari matriks kedua yang berupa matriks diagonal. Pengurangan dimensi matriks diagonal ini dilakukan dengan cara mengeset semua nilai diagonal matriks ke dua menjadi nol kecuali diagonal dimensi yang dipilih. Dan jika ketiga komponen matriks tersebut dikalikan maka menghasilkan matriks rekonstruksi yang lain dengan tujuan untuk nilai korelasi yang diinginkan.


(6)

Jika nilai-nilai singulir dari matriks S diurutkan berdasarkan nilainya, maka k nilai terbesar dapat tetap disimpan dalam matriks tersebut, dan nilai-nilai lain yang lebih kecil dapat diset menjadi nol. Jika baris dan kolom yang berkaitan pada matriks U dan V juga diset menjadi nol, maka hasil kali dari ketiga matrik ini akan membentuk matriks baru yang merupakan matriks least square approximation.

Dengan menghapus elemen yang tidak menunjukkan arti, berarti menghapus noise yang berada pada vektor pada matriks. Sehingga vektor menjadi lebih pendek dan mengandung elemen yang sangat signifikan dengan data awal saja. Karena tujuan dari LSA bukanlah mendeskripsikan vektor secara verbal tetapi mampu untuk merepresentasikan term, dokumen dan menghasilkan query yang tidak ambigu dan beredundansi dengan sesama term, dimensi nilai k untuk mereduksi matrik bisa menggunakan dua atau tiga vektor saja [9].

3. Pengukuran kemiripan (similarity)

Salah satu pengukuran kemiripan (similarity) adalah dengan menghitung sudut antara dua vector yang bersangkutan, disini antara vector dari permintaan (query) dengan vector dokumen yang akan dinilai (document). Adapun rumus yang digunakan yaitu rumus cosine similarity :

Dimana:

A : vektor A B : vektor B

||A|| : panjang vektor A ||B|| : panjang vektor B

Antara vektor A dan B membentuk sudut α dimana cosinus dari sudut tersebut menunjukkan kemiripan (similarity) dari kedua sudut tersebut, bukan menunjukkan jarak (distance) antara vektor yang satu dengan yang lainnya. 3. Metode dan Perancangan

Metode Prototype

Metode penelitian yang digunakan pada perancangan sistem ini adalah prototype. Model prototype merupakan suatu teknik untuk mengumpulkan informasi tertentu mengenai kebutuhan-kebutuhan informasi pengguna secara tepat. Pengguna kebutuhan seringkali menjelaskan sekumpulan sasaran umum perangkat lunak, namun tidak mengidentifikasikan kebutuhan input, proses atau output [10].


(7)

Gambar 1 Tahapan-tahapan Metode Prototype [10]

Ketiga proses pada gambar tersebut akan terus berlangsung hingga semua kebutuhan terpenuhi. Proses-proses yang terjadi dalam metode prototype dapat digambarkan, sebagai berikut :

1. Pengumpulan Kebutuhan

Merupakan proses menganalisa kebutuhan yang terdapat pada permasalahan yang dihadapi, pengumpulan data, kemudian bagaimana membangun aplikasi dengan landasan-landasan teori yang ada. Berdasarkan dari penelitian terdahulu, data-data yang dibutuhkan untuk dapat menerapkan algoritma LSA dalam mengolah tes esai adalah kunci jawaban sebagai patokan, jawaban mahasiswa, list kata dasar, stopword list dan skor nilai untuk masing-masing soal. Sehingga nantinya akan diperoleh hasil similaritas antara kunci jawaban dengan jawaban mahasiswa.

2. Perancangan Sistem

Pada tahap ini dilakukan pembuatan desain sistem berdasarkan kebutuhan yang telah dikumpulkan pada tahap pertama. Pembuatan desain dilakukan agar prototype yang nantinya dibuat, dapat menjawab atau memenuhi kebutuhan yang ada. Dengan adanya desain yang jelas maka permbuatan prototype akan lebih terarah. Tahapan ini merupakan proses pembuatan yang meliputi pembuatan UML atau yang lebih spesifik lagi yaitu use case diagram, activity diagram, sequence diagram, dan class diagram. Kemudian setelah UML selesai dibuat maka tahap selanjutnya adalah pembuatan desain antarmuka. Pada tahap ini prototype memang tidak langsung akan menjadi sempurna sesuai dengan apa yang diinginkan, tetapi dengan adanya pengujian dan evaluasi di tahap berikutnya dan beberapa kali pengulangan, prototype akan dapat menjawab kebutuhan.

3. Uji Coba

Proses selanjutnya adalah proses uji coba yang dilakukan untuk mengetahui apakah sistem yang ada sudah sesuai dengan kebutuhan. Apabila sistem belum memenuhi permintaan maka proses akan berulang ke tahap pertama yaitu pengumpulan kebutuhan dan selanjutnya melakukan perubahan rancangan sistem lalu di uji coba lagi. Begitu seterusnya hingga permasalahan terpecahkan.


(8)

Perancangan Sistem 4. Hasil dan Pembahasan Pembahasan Aplikasi 1. Halaman Login

Tampilan awal dari sistem tes online adalah halaman login. Halaman login ini meliputi login untuk mahasiswa, dosen dan administrator.

Gambar 7 Halaman Login

Pada Gambar 7 user diharuskan memasukkan id dan password yang valid. Setelah user memasukkan id dan password yang valid, maka sistem akan menampilkan halaman utama.

2. Halaman Pengerjaan Tes

Halaman ini adalah halaman yang menampilkan form pengerjaan tes yang hanya bisa diakses oleh mahasiswa.

Gambar 8 Halaman Pengerjaan Tes

Pada Gambar 8 mahasiswa dapat melihat soal-soal yang ada dalam tes yang sedang dikerjakan dan dapat menginputkan jawaban sesuai dengan soal yang ada. Setiap tes yang ada memiliki batasan lama pengerjaan sesuai dengan kriteria yang telah ditentukan oleh dosen pengampu. Lama pengerjaan tes dapat dilihat dibagian pojok kanan sebagai pengingat mahasiswa. Ketika waktu pengerjaan telah habis, halaman ini akan secara otomatis menyimpan jawaban mahasiswa. Mahasiswa tidak dapat mengerjakan tes yang sama lebih dari sekali.


(9)

Halaman ini merupakan halaman yang hanya bisa diakses oleh dosen pengampu. Halaman ini menampilkan form yang dapat diisi oleh dosen pengampu untuk membuat tes matakuliah baru.

Gambar 9 Halaman Pembuatan Tes

Pada Gambar 9 dosen dapat menginputkan data-data yang dibutuhkan untuk membuat tes baru seperti nama tes, tanggal tes dilaksanakan, rentang waktu tes dapat diakses, mata kuliah, lama pengerjaan tes, jumlah soal yang dikeluarkan dalam tes, sola-soal yang akan dikeluarkan, kunci jawaban untuk setiap soal, menambahkan gambar jika diperlukan dan skor untuk tiap-tiap soal yang ada. Implementasi Algoritma LSA

1. Parsing Text

Parsing text merupakan tahapan pertama dalam algoritma LSA. Pada tahapan ini jawaban soal dari mahasiswa melakukan proses tokenizing yaitu proses pengidentifikasian term-term dengan menghilangkan tanda baca, spasi dan enter. Setelah itu akan melakukan proses filtering dimana term-term yang dihasilkan dari proses pertama akan diseleksi dari term yang dianggap tidak penting atau yang biasa disebut dengan stopword. Kemudian akan dilakukan penghilangan imbuhan pada term tersebut sehingga menghasilkan kata dasar.

Kode Program 1 menjelaskan tentang fungsi untuk proses parsing text menggunakan algoritma Nazief dan Adriani.


(10)

2. Sinonim kata

Setelah proses parsing text selesai dilakukan proses selanjutnya adalah melakukan pencarian sinonim kata, sehingga kata-kata yang digunakan sebagai kata kunci tidak terlalu luas.

Kode Program 2 Perintah untuk sinonim kata

3. Pembobotan dengan TF-IDF

Setelah proses sinonim kata selesai dilakukan proses selanjutnya adalah melakukan pembobotan kata menggunakan algoritma TF-IDF.

Kode Program 3 Perintah untuk menghitung pembobotan kata TF-IDF

Kode program 3 menjelaskan tentang fungsi algoritma TF-IDF yaitu perkalian antara TF yang merupakan frekuensi kemunculan term pada kalimat

1. for($t = 0;$t < count($df);$t++){

2. for($d = 0; $d < count($data); $d++){

3. $tfidf[$d][$t] = round($data[$d][$t] *

4. (log10(count($data) / $df[$t])+1), 4);

5. }

6. }

1. function stemming($kata){

2. $teks = strtolower($kata);

3. $pre = new Preprocessing;

4. $teks = $pre->tokenText($teks);

5. $teks = $pre->removeStopword();

6. $teks = $pre->text;

7. $tok = strtok($teks, " \n\t");

8. $i=0; $a=array();

9. while ($tok !== false) {

10. $teks = Enhanced_CS(trim($tok));

11. $a[$i]=$teks;

12. $i++;

13. $tok = strtok(" \n\t");

14. } return $a;

15.}

1. function ceksinonim($kata){

2. $query = "select * from sinonim where kata_1 = '".$kata."'";

3. $result = mysql_query($query) or die(mysql_error());

4. $id=0;

5. while($row = mysql_fetch_array($result)){

6. $hasil[$id] = $row['kata_2'];

7. $id++;

8. }

9. return $hasil;

10.}

11.$sin=array();

12.for($i=0;$i<count($h[0]);$i++){

13. $sin=ceksinonim($h[0][$i]);

14. for($m=0;$m<count($sin);$m++){

15. for($j=1;$j<count($h);$j++){

16. for($k=0;$k<count($h[$j]);$k++){

17. if($sin[$m]==$h[$j][$k]){

18. $h[$j][$k]=$h[0][$i];


(11)

dengan IDF yaitu log hasil pembagian jumlah seluruh dokumen dengan jumlah dokumen yang mengandung term.

4. Singular Value Decomposition (SVD)

Proses selanjutnya adalah SVD yaitu proses mendekomposisikan suatu matrik menjadi tiga komponen matrik.

Kode Program 4 Perintah untuk menghitung SVD

Kode program 4 menjelaskan fungsi SVD dari matrik A menjadi tiga komponen matrik U,S dan V. Dijelaskan juga kode program untuk melakukan aproksimasi matrik S dan V dengan dimensi k = 2. Dimana matrik S merupakan matrik nilai singulir dan matrik V merupakan matrik singular kanan dari matrik A. Perkalian dari kedua matrik V dan S merepresentasikan koordinat dokumen pada semantic space.

5. Cosine Similarity

Langkah terakhir dari algoritma LSA adalah pengukuran kemiripan antar dokumen menggunakan cosine similarity.

Kode Program 5 Perintah untuk menghitung similaritas antar dua dokumen

1. function dotProduct($a, $b){

2. $dotProduct = 0;

3. $n = count($a);

4. for($i = 0 ; $i<$n; $i++){

5. $dotProduct += $a[$i]*$b[$i];

6. }

7. return round(($dotProduct),4);

8. }

9. function length($a){

10. $length = 0;

11. $n = count($a);

12. for($i = 0; $i<$n; $i++){

13. $length += ($a[$i]*$a[$i]);

14. }

15. return round(sqrt($length),4);

16.}

17.function cosinus($a,$b){

18. return abs(round(dotProduct($a,$b)/(length($a)*length($b)),3));

19.}

1. $A = new Matrix($tfidf);

2. $A = $A -> transpose();

3. $SVD = $A -> svd();

4. $S = $SVD -> getS(); $V = $SVD -> getV();

5. //aproksimasi matrix S dan V dengan k = 2

6. $S1 = $S->getArray();

7. for($i=0;$i<2;$i++){

8. for($j=0;$j<2;$j++){

9. $So[$i][$j]=$S1[$i][$j];

10. }

11. }

12. $S2 = new Matrix($So); //S2 merupakan aproksimasi matriks S

13. $V1 = $V->getArray();

14. for($i=0;$i<2;$i++){

15. for($j=0;$j<count($V1[0]);$j++){

16. $Vo[$i][$j]=$V1[$i][$j];

17. }

18. }

19. $V2 = new Matrix($Vo); //V2 merupakan aproksimasi matriks V


(12)

Kode program 5 menjelaskan fungsi dari cosine simlarity yaitu perkalian vector a dengan vector b dibagi dengan perkalian length vector a dengan length vector b. Setelah proses ini dilakukan akan menghasilkan nilai similaritas kedua dokumen yang kemudian akan dikalikan dengan skor yang dimiliki oleh soal tersebut.

Pengujian Aplikasi

Pada bagian ini dilakukan pengujian terhadap aplikasi yang telah dibangun. Pengujian ini dilakukan untuk mengetahui sejauh mana aplikasi ini dapat berjalan dan apa saja kekurangan dari aplikasi ini.

Ujicoba dilakukan dengan 5 peserta dengan 30 soal esai. Tabel 4 Hasil nilai peserta human raters

Peserta

soal 1 2 3 4 5

1 10 7 2 4 10

2 8 2 8 3 5

3 6 2 10 3 10

4 10 2 10 8 10

5 10 10 6 10 10

6 10 4 10 6 10

7 10 8 10 10 10

8 6 10 10 8 10

9 10 6 4 10 10

10 10 10 0 10 0

11 10 10 0 10 0

12 10 10 10 10 10

13 10 10 10 10 10

14 10 10 10 10 10

15 6 10 10 10 6

16 6 10 10 10 6

17 10 10 10 10 10

18 5 10 10 10 5

19 5 10 10 10 5

20 0 0 0 10 0

21 5 0 10 10 5

22 0 2 10 10 0

23 10 10 0 10 10

24 10 0 0 0 10

25 10 10 10 10 0

26 10 10 10 10 10

27 10 10 10 10 10


(13)

29 10 10 10 10 10

30 10 10 10 10 10

SUM 1172

Tabel 5 Hasil nilai menggunakan aplikasi

Peserta

soal 1 2 3 4 5

1 6 0 6.8 0 7.5

2 10 0 10 0 10

3 10 0 10 0 10

4 10 7.7 3.8 1.9 3.4

5 10 6.2 9.5 8.9 6

6 8 6.8 7.1 6.9 8.3

7 9.3 4.8 9.8 9.8 9.5

8 9.4 6 9.8 9.9 9.5

9 7.9 8.6 0 9.5 9.5

10 7.2 10 0 9.8 0

11 8 10 0 10 0

12 9.6 7.2 8.4 9.8 7.5

13 9.9 7.4 7.5 9.8 6.7

14 10 5.2 5.1 9.9 9.4

15 3.8 8.6 10 9.7 5.6

16 4.2 8.1 10 9.6 6.5

17 9.5 9.2 7.8 9.2 6.4

18 3.9 9.1 8.8 8.6 3.9

19 10 4.6 9.6 8.7 10

20 6.4 3.9 5.8 5.4 6.4

21 5 0 10 8 7.6

22 0.2 8.4 9.9 9.3 0.4

23 6.5 8.2 8 9.3 5.1

24 6.5 5.8 9.5 8.8 4.8

25 5 9.9 10 10 0.1

26 6.7 9.3 9.8 9.3 5.2

27 6.9 10 9.4 9.2 6.5

28 8 10 9.3 9 6.5

29 2.7 8.4 9.2 9.4 2.1

30 6.2 10 10 9.8 5.6

SUM 1074.6

Standar deviasi digunakan untuk mengamati perubahan nilai kenaikan dan nilai penurunan vriabel atau data dari rata-ratanya. Semakin kecil standar deviasi


(14)

semakin kecil pula perubahan variabel dari rata-ratanya dan sebaliknya. Standar deviasi didapat dari:

(

� − �

)

2

(

� −

1)

Dimana :

x = data ke-n � = nilai rata-rata n = banyaknya data

Dari tabel 4.1 dan 4.2 diperoleh standar deviasi untuk hasil nilai human raters sebesar 3.48 dan untuk hasil nilai menggunakan LSA sebesar 3.08.

Mean Squared Error (MSE) berfungsi untuk membandingkan ketepatan dua atau lebih metode yang berbeda, sebagai alat ukur apakah teknik yang diambil dapa dipercaya atau tidak dan membantu mencari sebuah metode yang optimal.

���= 1

� �� − � �

2 �

�=1

Dimana:

��= nilai aktual waktu ke-t � �= nilai ramalan waktu ke-t

Dari rumus tersebut diperoleh MSE sebesar 10,12. 5. Simpulan

Kesimpulan dari penelitian yang telah dilakukan ini adalah algoritma Latent Semantic Analysis dapat digunakan untuk menilai soal berbentuk esai dengn cara membuat basis data untuk menyimpan data kunci jawaban sebagai patokan, jawaban mahasiswa, list kata dasar, stopword list dan skor nilai. Kemudian melakukan proses stemming, pembobotan kata, memecahkan matriks dan mencari nilai similaritas. Hasil dari penilitian ini adalah standar deviasi hasil nilai human raters sebesar 3.48, standar deviasi untuk hasil nilai menggunakan LSA sebesar 3.08, Mean Square Error (MSE) sebesar 10,12. Saran pengembangan aplikasi ini adalah dengan menambahkan kosakata-kosakata yang lebih luas baik untuk stopword dan kata dasar. Lebih memperhatikan pemilihan kunci jawaban, menyusun daftar persamaan kata kunci jawaban dan pembobotan terhadap posisi kata kunci dalam kalimat.

6. Pustaka

[1] Tarhadi, dkk. 2007. Penggunaan Tes Uraian dibandingkan dengan Tes Pilihan Ganda Terstruktur dan Tes Pilihan Ganda Biasa. Jurnal Pendidikan : Vol. 8 No. 2.

[2] Ardiansyah, Adryan. 2011. Pengembangan Aplikasi Pendeteksi Plagiarisme Menggunakan Metode Latent Semantic Analysis (LSA). Bandung: Universitas Pendidikan Indonesia.

[3] Gong Yihong, Xin Liu. 2001. Generic Text Summarization Using Relevance Measure and Latent Semantic Analysis. USA: Sigir


(15)

[4] Firdausiah Andi Besse, dkk. 2008. Sistem Penilaian Otomatis Jawaban Essay Menggunakan Ontologi pada Moodle. Surabaya: Institut Teknologi Sepuluh November.

[5] Agusta, Ledy. 2009. Perbandingan Algoritma Stemming Porter dengan Algoritma Nazief & Adriani untuk Stemming Dokumen Teks Bahasa Indonesia. Salatiga: Universitas Kristen Satya Wacana.

[6] Robertson, S., 2004. “Understanding Inverse Document Frequency: On theoretical arguments for IDF”, Journal of Documentation, Vol.60, no.5, pp. 503-520.

[7] Landauer, T. K., Foltz, P. W., & Laham, D. 1998. Introduction to Latent Semantic Analysis. Discourse Processes: 25, 259-284.

[8] Triawati, Chandra. 2009. Metode Pembobotan Statistical Concept Based untuk Klastering dan Kategorisasi Dokumen Berbahasa Indonesia. Institut Teknologi Telkom. Bandung.

[9] S. Deerwester, S. T. Dumais, G. W. Furnas, T. K. Landauer, R. Harshman. 1990. “Indexing by Latent Semantic Analysis”. Journal of the American Society for Information Science: 41 (6), 391-407.

[10] Pressman, Roger. 2001. Rekayasa Perangkat Lunak Pendekatan Praktisi (Buku Satu). Yogyakarta: Andi.

[11] Nugroho, Adi. 2005. Rational Rose untuk Pemodelan Berorientasi Objek. Bandung: Informatika.


(1)

2. Sinonim kata

Setelah proses parsing text selesai dilakukan proses selanjutnya adalah melakukan pencarian sinonim kata, sehingga kata-kata yang digunakan sebagai kata kunci tidak terlalu luas.

Kode Program 2 Perintah untuk sinonim kata

3. Pembobotan dengan TF-IDF

Setelah proses sinonim kata selesai dilakukan proses selanjutnya adalah melakukan pembobotan kata menggunakan algoritma TF-IDF.

Kode Program 3 Perintah untuk menghitung pembobotan kata TF-IDF

Kode program 3 menjelaskan tentang fungsi algoritma TF-IDF yaitu perkalian antara TF yang merupakan frekuensi kemunculan term pada kalimat

1. for($t = 0;$t < count($df);$t++){

2. for($d = 0; $d < count($data); $d++){

3. $tfidf[$d][$t] = round($data[$d][$t] * 4. (log10(count($data) / $df[$t])+1), 4);

5. }

6. }

1. function stemming($kata){ 2. $teks = strtolower($kata); 3. $pre = new Preprocessing; 4. $teks = $pre->tokenText($teks); 5. $teks = $pre->removeStopword(); 6. $teks = $pre->text;

7. $tok = strtok($teks, " \n\t"); 8. $i=0; $a=array();

9. while ($tok !== false) {

10. $teks = Enhanced_CS(trim($tok)); 11. $a[$i]=$teks;

12. $i++;

13. $tok = strtok(" \n\t"); 14. } return $a;

15.}

1. function ceksinonim($kata){

2. $query = "select * from sinonim where kata_1 = '".$kata."'"; 3. $result = mysql_query($query) or die(mysql_error()); 4. $id=0;

5. while($row = mysql_fetch_array($result)){ 6. $hasil[$id] = $row['kata_2'];

7. $id++;

8. }

9. return $hasil; 10.}

11.$sin=array();

12.for($i=0;$i<count($h[0]);$i++){ 13. $sin=ceksinonim($h[0][$i]); 14. for($m=0;$m<count($sin);$m++){ 15. for($j=1;$j<count($h);$j++){

16. for($k=0;$k<count($h[$j]);$k++){

17. if($sin[$m]==$h[$j][$k]){

18. $h[$j][$k]=$h[0][$i];


(2)

dengan IDF yaitu log hasil pembagian jumlah seluruh dokumen dengan jumlah dokumen yang mengandung term.

4. Singular Value Decomposition (SVD)

Proses selanjutnya adalah SVD yaitu proses mendekomposisikan suatu matrik menjadi tiga komponen matrik.

Kode Program 4 Perintah untuk menghitung SVD

Kode program 4 menjelaskan fungsi SVD dari matrik A menjadi tiga komponen matrik U,S dan V. Dijelaskan juga kode program untuk melakukan aproksimasi matrik S dan V dengan dimensi k = 2. Dimana matrik S merupakan matrik nilai singulir dan matrik V merupakan matrik singular kanan dari matrik A. Perkalian dari kedua matrik V dan S merepresentasikan koordinat dokumen pada semantic space.

5. Cosine Similarity

Langkah terakhir dari algoritma LSA adalah pengukuran kemiripan antar dokumen menggunakan cosine similarity.

Kode Program 5 Perintah untuk menghitung similaritas antar dua dokumen 1. function dotProduct($a, $b){

2. $dotProduct = 0; 3. $n = count($a);

4. for($i = 0 ; $i<$n; $i++){

5. $dotProduct += $a[$i]*$b[$i];

6. }

7. return round(($dotProduct),4); 8. }

9. function length($a){ 10. $length = 0; 11. $n = count($a);

12. for($i = 0; $i<$n; $i++){

13. $length += ($a[$i]*$a[$i]); 14. }

15. return round(sqrt($length),4); 16.}

17.function cosinus($a,$b){

18. return abs(round(dotProduct($a,$b)/(length($a)*length($b)),3)); 19.}

1. $A = new Matrix($tfidf); 2. $A = $A -> transpose(); 3. $SVD = $A -> svd();

4. $S = $SVD -> getS(); $V = $SVD -> getV(); 5. //aproksimasi matrix S dan V dengan k = 2 6. $S1 = $S->getArray();

7. for($i=0;$i<2;$i++){

8. for($j=0;$j<2;$j++){ 9. $So[$i][$j]=$S1[$i][$j]; 10. }

11. }

12. $S2 = new Matrix($So); //S2 merupakan aproksimasi matriks S 13. $V1 = $V->getArray();

14. for($i=0;$i<2;$i++){

15. for($j=0;$j<count($V1[0]);$j++){ 16. $Vo[$i][$j]=$V1[$i][$j];

17. }

18. }

19. $V2 = new Matrix($Vo); //V2 merupakan aproksimasi matriks V 20.$At = $V2 -> times($S2);


(3)

Kode program 5 menjelaskan fungsi dari cosine simlarity yaitu perkalian vector a dengan vector b dibagi dengan perkalian length vector a dengan length vector b. Setelah proses ini dilakukan akan menghasilkan nilai similaritas kedua dokumen yang kemudian akan dikalikan dengan skor yang dimiliki oleh soal tersebut.

Pengujian Aplikasi

Pada bagian ini dilakukan pengujian terhadap aplikasi yang telah dibangun. Pengujian ini dilakukan untuk mengetahui sejauh mana aplikasi ini dapat berjalan dan apa saja kekurangan dari aplikasi ini.

Ujicoba dilakukan dengan 5 peserta dengan 30 soal esai. Tabel 4 Hasil nilai peserta human raters

Peserta

soal 1 2 3 4 5

1 10 7 2 4 10

2 8 2 8 3 5

3 6 2 10 3 10

4 10 2 10 8 10

5 10 10 6 10 10

6 10 4 10 6 10

7 10 8 10 10 10

8 6 10 10 8 10

9 10 6 4 10 10

10 10 10 0 10 0

11 10 10 0 10 0

12 10 10 10 10 10

13 10 10 10 10 10

14 10 10 10 10 10

15 6 10 10 10 6

16 6 10 10 10 6

17 10 10 10 10 10

18 5 10 10 10 5

19 5 10 10 10 5

20 0 0 0 10 0

21 5 0 10 10 5

22 0 2 10 10 0

23 10 10 0 10 10

24 10 0 0 0 10

25 10 10 10 10 0

26 10 10 10 10 10

27 10 10 10 10 10


(4)

29 10 10 10 10 10

30 10 10 10 10 10

SUM 1172

Tabel 5 Hasil nilai menggunakan aplikasi

Peserta

soal 1 2 3 4 5

1 6 0 6.8 0 7.5

2 10 0 10 0 10

3 10 0 10 0 10

4 10 7.7 3.8 1.9 3.4

5 10 6.2 9.5 8.9 6

6 8 6.8 7.1 6.9 8.3

7 9.3 4.8 9.8 9.8 9.5

8 9.4 6 9.8 9.9 9.5

9 7.9 8.6 0 9.5 9.5

10 7.2 10 0 9.8 0

11 8 10 0 10 0

12 9.6 7.2 8.4 9.8 7.5

13 9.9 7.4 7.5 9.8 6.7

14 10 5.2 5.1 9.9 9.4

15 3.8 8.6 10 9.7 5.6

16 4.2 8.1 10 9.6 6.5

17 9.5 9.2 7.8 9.2 6.4

18 3.9 9.1 8.8 8.6 3.9

19 10 4.6 9.6 8.7 10

20 6.4 3.9 5.8 5.4 6.4

21 5 0 10 8 7.6

22 0.2 8.4 9.9 9.3 0.4

23 6.5 8.2 8 9.3 5.1

24 6.5 5.8 9.5 8.8 4.8

25 5 9.9 10 10 0.1

26 6.7 9.3 9.8 9.3 5.2

27 6.9 10 9.4 9.2 6.5

28 8 10 9.3 9 6.5

29 2.7 8.4 9.2 9.4 2.1

30 6.2 10 10 9.8 5.6

SUM 1074.6

Standar deviasi digunakan untuk mengamati perubahan nilai kenaikan dan nilai penurunan vriabel atau data dari rata-ratanya. Semakin kecil standar deviasi


(5)

semakin kecil pula perubahan variabel dari rata-ratanya dan sebaliknya. Standar deviasi didapat dari:

(

� − �

)

2

(

� −

1)

Dimana : x = data ke-n � = nilai rata-rata n = banyaknya data

Dari tabel 4.1 dan 4.2 diperoleh standar deviasi untuk hasil nilai human raters sebesar 3.48 dan untuk hasil nilai menggunakan LSA sebesar 3.08.

Mean Squared Error (MSE) berfungsi untuk membandingkan ketepatan dua atau lebih metode yang berbeda, sebagai alat ukur apakah teknik yang diambil dapa dipercaya atau tidak dan membantu mencari sebuah metode yang optimal.

���= 1

� �� − � �

2

� �=1 Dimana:

��= nilai aktual waktu ke-t � �= nilai ramalan waktu ke-t

Dari rumus tersebut diperoleh MSE sebesar 10,12.

5. Simpulan

Kesimpulan dari penelitian yang telah dilakukan ini adalah algoritma Latent Semantic Analysis dapat digunakan untuk menilai soal berbentuk esai dengn cara membuat basis data untuk menyimpan data kunci jawaban sebagai patokan, jawaban mahasiswa, list kata dasar, stopword list dan skor nilai. Kemudian melakukan proses stemming, pembobotan kata, memecahkan matriks dan mencari nilai similaritas. Hasil dari penilitian ini adalah standar deviasi hasil nilai human raters sebesar 3.48, standar deviasi untuk hasil nilai menggunakan LSA sebesar 3.08, Mean Square Error (MSE) sebesar 10,12. Saran pengembangan aplikasi ini adalah dengan menambahkan kosakata-kosakata yang lebih luas baik untuk stopword dan kata dasar. Lebih memperhatikan pemilihan kunci jawaban, menyusun daftar persamaan kata kunci jawaban dan pembobotan terhadap posisi kata kunci dalam kalimat.

6. Pustaka

[1] Tarhadi, dkk. 2007. Penggunaan Tes Uraian dibandingkan dengan Tes Pilihan Ganda Terstruktur dan Tes Pilihan Ganda Biasa. Jurnal Pendidikan : Vol. 8 No. 2.

[2] Ardiansyah, Adryan. 2011. Pengembangan Aplikasi Pendeteksi Plagiarisme Menggunakan Metode Latent Semantic Analysis (LSA). Bandung: Universitas Pendidikan Indonesia.

[3] Gong Yihong, Xin Liu. 2001. Generic Text Summarization Using Relevance Measure and Latent Semantic Analysis. USA: Sigir


(6)

[4] Firdausiah Andi Besse, dkk. 2008. Sistem Penilaian Otomatis Jawaban Essay Menggunakan Ontologi pada Moodle. Surabaya: Institut Teknologi Sepuluh November.

[5] Agusta, Ledy. 2009. Perbandingan Algoritma Stemming Porter dengan Algoritma Nazief & Adriani untuk Stemming Dokumen Teks Bahasa Indonesia. Salatiga: Universitas Kristen Satya Wacana.

[6] Robertson, S., 2004. “Understanding Inverse Document Frequency: On theoretical arguments for IDF”, Journal of Documentation, Vol.60, no.5, pp. 503-520.

[7] Landauer, T. K., Foltz, P. W., & Laham, D. 1998. Introduction to Latent Semantic Analysis. Discourse Processes: 25, 259-284.

[8] Triawati, Chandra. 2009. Metode Pembobotan Statistical Concept Based untuk Klastering dan Kategorisasi Dokumen Berbahasa Indonesia. Institut Teknologi Telkom. Bandung.

[9] S. Deerwester, S. T. Dumais, G. W. Furnas, T. K. Landauer, R. Harshman. 1990. “Indexing by Latent Semantic Analysis”. Journal of the American Society for Information Science: 41 (6), 391-407.

[10] Pressman, Roger. 2001. Rekayasa Perangkat Lunak Pendekatan Praktisi (Buku Satu). Yogyakarta: Andi.

[11] Nugroho, Adi. 2005. Rational Rose untuk Pemodelan Berorientasi Objek. Bandung: Informatika.