1. PENDAHULUAN
Membaca
merupakan salah satu kebutuhan manusia, baik membaca buku, surat kabar maupun informasi
berupa teks lainnya. Perkembangan teknologi komunikasi berdampak pada
penggunaan internet untuk mempublikasikan berbagai informasi baik berupa suara,
gambar maupun tulisan. Synopsis pada sebuah film merupakan salah satu contoh
informasi yang banyak dipublikasikan di dunia internet. Sinopis film
dimaksudkan agar pembaca mengetahui inti cerita secara singkat dari sebuah
film. Synopsis film juga dapat dikatakan review seseorang terhadap sebuah film,
sehingga cara penyampaian informasi mengenai sebuah film berbeda-beda setiap
orangnya. Ringkasan dibutuhkan untuk mendapatkan isi dokumen secara ringkas.
Ringkasan merupakan ekspresi yang ketat dari isi utama suatu dokumen, tujuannya
untuk memberitahu kepada pembaca inti dari suatu pikiran utama (Sartuni,
Finozadan Sundari, 1987). Konsep sederhana ringkasan adalah mengmabil bagian
penting dari keseluruhan isi dari sebuah dokumen. Ringkasan adalah mengambil
isi yang paling penting dari sumber iformasi yang kemudian menyajikannya
kembali dalam bentuk yang lebih ringkas bagi penggunanya (Mani dab Mayvury,
1999). Aplikasi peringkasan teks secara otomatis dengan hasil ringkasan
(summary) dari sebuah dokumen teks.
2. TINJAUAN PUSTAKA
2.1 Peringkasan Teks Otomatis
Peringkasan teks
otomatis (automatic text summarization) merupakan proses pembuatan bentuk yang
lebih singkat dan sederhana dari sebuah dokumen dengan memanfaatkan aplikasi
yang dijalankan dan dioperasikan pada komputer. Ringkasan merupakan teks yang
dihasilkan dari sebuah teks atau banyak teks yang mengandung isi informasi dari
teks asli dan panjangnya tidak lebih dari setengah panjang teks aslinya (Hovy,
2001). Penelitian peringkasan teks otomatis dipelopori oleh Luhn sejak tahun
1958. Teknik yang digunakan dalam peringkasan: (1) Teknik pendekatan
statistika: eknik word frequency (Luhn, 1958), position in
text (Baxendale, 1958), cue words and heading (Edmudson, 1969), sentence
position (Lin dan Hoovy, 1997). (2) Teknik pendekatan dengan natural
language analysis: inverse term frequency and NLP technique (Aone,
1990), lexical chain (Mc Keown, 1997), maximal marginal relevance (Cabonell
dan Goldstein, 1998).
2.2 Text Mining
Text mining dapat didefinisikan
secara luas sebagai satu proses menggali informasi dimana seseorang user
berinteraksi dengan sekumpulan dokumen tools asalisis yang merupakan
komponen-komponen dalam data mining yang salah satunya adalah kategorisasi.
Text mining bisa dianggap subjek riset yang tergolong baru. Text mining dapat
memberikan solusi dari permasalahan seperti pemrosesan, pengelompokkan dan
menganalisa unstructured text dalam jumlah besar.
2.3 Tokenisasi
Secara garis
besar tokenisasi adalah tahap pemecah sekumpulan karakter dalam suatu teks ke
dalam satuan kata. Sekumpulan karakter tersebut dapat berupa karakter white
space, seperti enter, tabulasi, spasi. Namun untuk karakter petik tunggal (‗),
titik (.), semi kolon (;), titik dua (J atau lainnya juga dapat memiliki peran
yang cukup banyak sebagai pemisah kata. Sebuah titik (.) biasanya untuk tanda
akhir kalimat, tapi dapat juga muncul dalam singkatan, inisial orang, alamat
internet dll. Kemudian tanda hypen (-) biasanya muncul untuk menggabungkan
kedua token yang berbeda untuk membentuk token tunggal. Tapi dapat pula
ditemukan untuk menyatakan rentang nilai, kata berulang dsb. Atau karakter
slash (/) sebagai pemisah file atau direktori atau url atau untuk menyatakan
―dan atau‖.
2.4 Fitering
Filtering yaitu
proses pembuangan stopwords yang dimaksudkan untuk mengetahui suatu kata masuk
kea lam stopword atau tidak. Pembuangan stopword dalah proses pembuangan term
yang tidak memiliki arti atau tidak relevan. Term yang diperoleh dari tahap
tokenisasi dicek dalam suatu daftar stopword, apabila sebuah kata masuk di
dalam daftar stopword maka kata tersebut akan masuk ke proses selanjutnya.
2.5 TF_IDF
Metode TF_IDF
merupakan metode untuk emnghitung bobot setiap kata yang paling umum digunakan
pada information retrieval. Metode ini juga terkenal efisien, mudah dan
memiliki hasil yang akurat. Metode ini akan menghitung nilai Term Frequency (TF)
dan Inverse Document Frequency (IDF) pada setiap token (kata) di
setiap dokumen dalam korpus. Metode ini akan menghitung bobot setiap token t di
dokumen dengan rumus:
Wdt =tfdt * IDFt
Dimana:
·
d : dokumen ke-d
·
t : kata ke-t dari
kata kunci
·
W : bobot dokumen ke-d terhadap kata ke-t
·
Tf : banyaknya kata yang dicari pada
sebuah dokumen
·
IDF : Inverse Document Frequency
·
Nilai IDF didapatkan
dari IDF : log2 (D/df), dimana D merupakan total
dokumen dan df meupakan banyak dokumen yan mengandung kata yang dicari
Setelah bobot
(W) masingmasing dokumen diketahui, maka dilakukan proses pengurutan dimana
semakin besar nilai W, semakin besar tingkat similarity dokumen tersebut
terhadap kata kunci, demikian sebaliknya.
3. METODOLOGI
- Pada penelitian ini peringkaan teks otomatis yang dibuat merupakan sistem peringkasan dengan inputan berupa single dokumen dan secara otomatis menghasilkan ringkasan (summary). Proses peringkasan teks otomatis pada penelititan ini terdiri dari text mining, tokenisasi, filtering, stemming menggunakan metode TF-IDF.
3.1 Pemecahan Kalimat
Tahap pemecahan
kalimat adalah memecah dokumen menjadi kumpulan kalimat dengan menghilangkan
tandatanda akhir kalimat (delimiter). Tanda baca akhir kalimat seperti tanda
titik ―.‖, tanda Tanya ―?‖ dan tanda seru ―!‖.
Implementasi pada bahasa php
//
metode casefolding
function casefolding($teks)
{
//merubah kalimat ke lowercase
$teks = strtolower($teks);
//menghilangkan special karakter
$teks = preg_replace('/[-0-9+&@#\/%?=~_|$!:^>`{}<*,.;()"-$]/i',
'', $teks);
//menghilangkan backslash
$teks = stripslashes($teks);
// mengembalikan teks
return $teks;
|
3.2 Cae Folding
Pada tahap ini
kumpulan kalimat hasil pemecahan diubah menjadi huruf kecil (lower case),
menghilangkan angka, tanda baca maupun symbol dan hanya menerima karakter.
Implementasi pada bahasa php
//
metode casefolding
function
casefolding($teks)
{
//merubah
kalimat ke lowercase
$teks
= strtolower($teks);
//menghilangkan
special karakter
$teks
= preg_replace('/[-0-9+&@#\/%?=~_|$!:^>`{}<*,.;()"-$]/i', '',
$teks);
//menghilangkan
backslash
$teks
= stripslashes($teks);
//
mengembalikan teks
return
$teks;
}
//
metode stopword
function
hapus_stopword($teks)
{
//
mengganti kata kata yang umum pada situs, semisal dns situs seperti
blabla.com
dll
$replace
= array(
'com',
'co',
'id',
);
$teks
= preg_replace(
array_map(
function($stopword){
return'/\b'.$stopword.'\b/';
},
$replace), '',$teks);
return
$teks;
}
//
untuk penormalan jika spasi berlebih
function
normalkan($teks){
$teks
= preg_replace('/\s\s+/', ' ', $teks); //menghilangkan spasi berlebih
$teks
= trim($teks);
return
$teks;
}
|
3.3 Tokenisasi
Kumpulan hasil
dari case folding kemudian dilakukan proses tokenisasi kata, yaitu menghilangkan
karakter pemisah (delimeter) yang menyusunnya berupa karakter spasi.
Implementasi dalam bahasa php
//
tokenisasi dengan membuang stopwords
$token
= preg_split("/[\d\W\s]+/", strtolower($load_file));
$token
= array_diff($token, $stopwords);
$token
= array_values($token); // perbaiki indeks
//
menyimpan nilai df tiap token
$token
= array_count_values($token); // hilangkan redudansi token
foreach
($token as $key => $value) {
//
jika token sudah ada
if
(array_key_exists($key, $df_token))
$df_token[$key]++;
//
jika token belum ada
else
if (!isset($df_token[$key]))
$df_token[$key]
= 1;
}
}
|
3.4 Filtering
Pada tahap ini
dilakukan pembuanagan kata-kata yang dianggap kurang penting. Stop word adalah
kata-kata yang kurang deskriptif yang dapat dibuang dalam pendekatan bag-of-words.
Pembuangan stop word dilakukan dengan mengecek stop word, jika terdapat kata
yang sama dengan kamus maka akan dihapus.
Implementasi dalahm bahasa php
//fungsi
pencarian akar kata
function
stemming($kata){
$kataAsal
= $kata;
$cekKata
= cekKamus($kata);
if($cekKata
== true){ // Cek Kamus
return
$kata; // Jika Ada maka kata tersebut adalah kata dasar
}else{
//jika tidak ada dalam kamus maka dilakukan stemming
$kata
= Del_Inflection_Suffixes($kata);
if(cekKamus($kata)){
return
$kata;
}
$kata
= Del_Derivation_Suffixes($kata);
if(cekKamus($kata)){
return
$kata;
}
$kata
= Del_Derivation_Prefix($kata);
if(cekKamus($kata)){
return
$kata;
}
}
|
3.5 Stemming
Hasil filtering
kemudian di-stemming untuk mendapatkan kata dasar (root). Proses stemming
menggunakan bantuan kamuskamus kecil untuk membedakan suatu kata yang
mengandung imbuhan baik prefix maupun sufiks yang salah satu suku katanya merupakan
bagian dari imbuhan, terutama dengan kata dasar yang mempunyai suku kata lebih
besar dari dua.
Implementasi dlaam bahasa php
//fungsi
untuk menghapus suffix seperti -ku, -mu, -kah, dsb
function
Del_Inflection_Suffixes($kata){
$kataAsal
= $kata;
if(preg_match('/([km]u|nya|[kl]ah|pun)\z/i',$kata)){
// Cek Inflection Suffixes
$__kata
= preg_replace('/([km]u|nya|[kl]ah|pun)\z/i','',$kata);
return
$__kata;
}
return
$kataAsal;
}
//
Cek Prefix Disallowed Sufixes (Kombinasi Awalan dan Akhiran yang tidak
diizinkan)
function
Cek_Prefix_Disallowed_Sufixes($kata){
if(preg_match('/^(be)[[:alpha:]]+/(i)\z/i',$kata)){
// be- dan -i
return
true;
}
if(preg_match('/^(se)[[:alpha:]]+/(i|kan)\z/i',$kata)){
// se- dan -i,-kan
return
true;
}
if(preg_match('/^(di)[[:alpha:]]+/(an)\z/i',$kata)){
// di- dan -an
return
true;
}
if(preg_match('/^(me)[[:alpha:]]+/(an)\z/i',$kata)){
// me- dan -an
return
true;
}
if(preg_match('/^(ke)[[:alpha:]]+/(i|kan)\z/i',$kata)){
// ke- dan -i,-kan
return
true;
}
return
false;
}
//
Hapus Derivation Suffixes ("-i", "-an" atau
"-kan")
function
Del_Derivation_Suffixes($kata){
$kataAsal
= $kata;
if(preg_match('/(i|an)\z/i',$kata)){
// Cek Suffixes
$__kata
= preg_replace('/(i|an)\z/i','',$kata);
if(cekKamus($__kata)){
// Cek Kamus
return
$__kata;
}else
if(preg_match('/(kan)\z/i',$kata)){
$__kata
= preg_replace('/(kan)\z/i','',$kata);
if(cekKamus($__kata)){
return
$__kata;
}
}
/*–
Jika Tidak ditemukan di kamus –*/
}
return
$kataAsal;
}
//
Hapus Derivation Prefix ("di-", "ke-", "se-",
"te-", "be-", "me-", atau "pe-")
function
Del_Derivation_Prefix($kata){
$kataAsal
= $kata;
/*
—— Tentukan Tipe Awalan ————*/
if(preg_match('/^(di|[ks]e)/',$kata)){
// Jika di-,ke-,se-
$__kata
= preg_replace('/^(di|[ks]e)/','',$kata);
if(cekKamus($__kata)){
return
$__kata;
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
if(preg_match('/^(diper)/',$kata)){
//diper-
$__kata
= preg_replace('/^(diper)/','',$kata);
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^(ke[bt]er)/',$kata)){
//keber- dan keter-
$__kata
= preg_replace('/^(ke[bt]er)/','',$kata);
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
}
if(preg_match('/^([bt]e)/',$kata)){
//Jika awalannya adalah "te-","ter-",
"be-","ber-
"
$__kata
= preg_replace('/^([bt]e)/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata
= preg_replace('/^([bt]e[lr])/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]e)/',$kata)){
$__kata
= preg_replace('/^([mp]e)/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
if(preg_match('/^(memper)/',$kata)){
$__kata
= preg_replace('/^(memper)/','',$kata);
if(cekKamus($kata)){
return
$__kata;
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]eng)/',$kata)){
$__kata
= preg_replace('/^([mp]eng)/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
$__kata
= preg_replace('/^([mp]eng)/','k',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]eny)/',$kata)){
$__kata
= preg_replace('/^([mp]eny)/','s',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]e[lr])/',$kata)){
$__kata
= preg_replace('/^([mp]e[lr])/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]en)/',$kata)){
$__kata
= preg_replace('/^([mp]en)/','t',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
$__kata
= preg_replace('/^([mp]en)/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
if(preg_match('/^([mp]em)/',$kata)){
$__kata
= preg_replace('/^([mp]em)/','',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
$__kata
= preg_replace('/^([mp]em)/','p',$kata);
if(cekKamus($__kata)){
return
$__kata; // Jika ada balik
}
$__kata__
= Del_Derivation_Suffixes($__kata);
if(cekKamus($__kata__)){
return
$__kata__;
}
}
}
return
$kataAsal;
}
|
3.6 TF-IDF
Hasil prose teks
preprocessing dilakukan pembobotan tf-idf. Pembobotan secara otomatis biasanya
berdasarkan jumlah kemunculan suatu kata dalam sebuah dokumen (term
frequency) dan jumlah kemunculannya dalam koleksi dokumen (Inverse
Document Frequency). Bobot kata semakin besar jika sering muncul
dalam suatu dokumen dan semakin kecil jika mncul dalam banyak dokumen. Pembobotan
tf-idf dilakukan untuk pembobotan tahap selanjutnya, yaitu unutk menghitung
bobot query-relevance dan bobot similarity kalimat. Alur aktivitas pada bobot
tf-idf untuk relevance-query adalah sama seperti aktivitas pada bobot tf-idf
untuk similarity kalimat.
3.7 Screenshoot Sebelum dan Sesudah Peringkasan
· tampilan halaman input dokumen
· tampilan input file yang akan diringkas
· tampilan hasil peringkasan
No comments:
Write komentar