www.digizoneku.com
TUGAS MATA KULIAH PENGGANTI UJIAN TENGAH SEMESTER
KECERDASAN BUATAN
(TIF212)
SISTEM PEMBANGKIT CERITA BERBASIS WEB
DENGAN MENGGUNAKAN JAVASCRIPT
Disusun Oleh :
Bimo Adi Pradono
05/187940/TK/31045
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2008
www.digizoneku.com
BAB I
PENDAHULUAN
A. Latar Belakang Masalah
Menurut Kamus Besar Bahasa Indonesia, cerita adalah tuturan yang membentangkan
bagaimana terjadinya suatu hal (peristiwa, kejadian, dan sebagainya). Macam-macam cerita antara
lain dongeng, fabel, mitos, dan legenda. Beberapa manfaat dari cerita antara lain adalah sebagai
hiburan, pendidikan (sejarah), penyampaian nilai-nilai moral tertentu secara tersirat maupun
tersurat, dan lain-lain. Perkembangan teknologi yang ada menyebabkan cerita tidak hanya
disampaikan secara lisan, tetapi juga secara tertulis seperti buku cerita, novel, dan lain-lain. Bahkan
dengan teknologi yang ada sekarang ini, cerita dapat disampaikan melalui media elektronik seperti
televisi (film), radio, komputer dan website.
Penyampaian cerita melalui komputer dapat menggunakan Kecerdasan Buatan (Artificial
Intelligence). Kecerdasan Buatan (Artificial Intelligence) adalah bidang yang mempelajari simulasi
proses-proses cerdas seperti belajar, beralasan, dan memahami informasi simbolik sesuai
konteksnya. Salah satu implementasi dari kecerdasan buatan adalah pembangkit cerita/pembangkit
narasi yang dapat membangkitkan cerita dalam bahasa alami berdasarkan sekumpulan basis
pengetahuan (knowledge base) yang tersedia, melalui serangkaian aturan-aturan (rules) tertentu.
Sistem pembangkit cerita yang dirancang oleh penulis di sini merupakan sistem yang berbasis
web sehingga mempunyai Interoperabilitas tinggi dan bahasa pemrograman yang digunakan adalah
Javascript sehingga server web tidak terlalu terbebani.
B. Maksud dan Tujuan
Maksud dan tujuan penulis membuat sistem ini antara lain :
1. Merancang dan mengaplikasikan sistem pembangkit cerita berbahasa Indonesia sederhana
dengan menggunakan teori Joseph berbasis bahasa pemrograman Javascript.
2. Membangun sebuah sistem pembangkit cerita dengan Interoperabilitas tinggi. 3. Sebagai penerapan disiplin ilmu yang telah didapatkan, serta untuk memenuhi tugas pengganti
Ujian Tengah Semester mata kuliah Kecerdasan Buatan.
C. Manfaat Sistem
www.digizoneku.com
Manfaat sistem yang diharapkan oleh penulis :
1. Sistem dapat membangkitkan suatu cerita dengan memanfaatkan web browser.
2. Sistem dapat diakses dengan menggunakan berbagai jenis komputer dan sistem operasi, selama
komputer tersebut terhubung dengan internet dan mempunyai webbrowser dengan setting
Javascript di-enable.
www.digizoneku.com
BAB II
STUDI PUSTAKA DAN LANDASAN TEORI
A. STUDI PUSTAKA
Perkembangan pengetahuan dalam bidang kecerdasan buatan turut memicu perkembangan
cabang pemrosesan bahasa alami, yang merupakan salah satu cabang dari bidang kecerdasan buatan.
Penelitian-penelitian tentang sistem pembangkit cerita (story generator) juga semakin berkembang.
Salah satunya adalah penelitian yang dilakukan oleh Lang. Penelitian Lang menemukan beberapa
kelemahan di dalam metode pembangkitan cerita yang terdahulu. Dalam proses membuat metode
pembangkitan cerita yang lebih baik, Lang mempelajari beberapa penelitian :
a) Penelitian Vladimir Propp (1968). Vladimir Propp melakukan penelitian terhadap cerita-
cerita rakyat Rusia yang menghasilkan suatu penyederhanaan cerita-cerita rakyat menjadi
serangkaian tindakan yang dilakukan oleh tokoh utama di dalam setiap cerita. Penelitian
Propp ini mengungkapkan bahwa di dalam cerita-cerita rakyat tersebut terdapat beberapa
kemiripan sepanjang elemen plot dasar. Bagaimanapun juga, analisis ini keliru dalam hal
penyebutan bahwa seluruh cerita memiliki plot yang seragam. Analisis Propp juga tidak
mampu mengenali bagaimana pentingnya beberapa bagian cerita seperti sifat, suasana hati,
dan lain-lain.
b) Penelitian David Rummelhart (1975). Rummelhart berhasil mengembangkan sebuah model
untuk organisasi berfokus pada percakapan yang saling terhubung, tetapi tanpa kalimat sama
sekali. Secara umum, seringkali diperlukan untuk mengambil kesimpulan hubungan sebab-
akibat untuk memahami maksud dari kelompok kalimat-kalimat. Hubungan sebab-akibat ini
menghubungkan kalimat satu dengan yang lainnya. Rummelhart menyajikan sebuah
tatabahasa yang menggambarkan ikatan antar kalimat yang terdapat dalam sebuah cerita
sederhana. Tata bahasa ini sifatnya tidak tergantung kepada konteks, dan terdiri dari aturan-
aturan penulisan sintaks, yang mana setiap aturan memiliki aturan interpretasi semantik yang
saling berhubungan.
Attempt → Plan + Application
MOTIVATE(Plan, Application)
Application → (Preaction*) + Action + Consequence
ALLOW(AND (Preaction, Preaction, ....) {CAUSE | INITIATE | ALLOW} (Action,
Consequence))
www.digizoneku.com
Dalam tata bahasa Rummelhart, hubungan antara satu komponen cerita dengan komponen
cerita lainnya diwujudkan dalam anotasi semantik yang sifatnya melengkapi aturan sintaks.
c) Penelitian James Meehan (1976). Sistem yang dikembangkan oleh James Meehan ini
memiliki fokus pada penciptaan karakter dan interaksi masing-masing karakter dengan
elemen plot. Hal ini dicapai dengan memodelkan perilaku karakter-karakter dengan
pengetahuan tentang tujuan umum dan rencananya. Model ini menceritakan suatu cerita
dengan menentukan tujuan umum, untuk kemudian dilakukan simulasi permasalahan dan
proses pemecahannya untuk mencapai tujuan tersebut. James Meehan mengimplementasikan
teorinya ke dalam sebuah sistem bernama Tale-spin, yang kemudian diperbaiki oleh Warren
Sack menjadi Micro Tale-Spin.
d) Penelitian Michael Lebowitz (1985). Hampir sama dengan teori Meehan, Lebowitz
mengembangkan sebuah model pembangkitan cerita yang didasarkan kepada pustaka berisi
fragmen-fragmen plot, yang mana pustaka ini dapat diperluas saat diperlukan. Fragmen-
fragmen plot ini menyediakan metode naratif untuk mencapai tujuan yang diinginkan oleh
penulis. Beberapa tujuan mungkin menjadi tidak perlu apabila dilihat dari sisi aktor, namun
diperlukan apabila dilihat dari sisi penulis. Sebagai contoh, penulis menginginkan sebuah
cerita dimana ada sepasang kekasih yang dipisahkan oleh jarak, maka, agar cerita ini dapat
terwujud, dimasukkanlah elemen-elemen di dalam cerita yang mencegah sepasang kekasih
ini bertemu. Teori yang digunakan oleh Lebowitz ini mirip dengan teori Mechan, kecuali
pada mekanisme penentuan tujuan. Jika pada Meehan lebih menekankan kepada
karakter/aktor cerita, pada Lebowitz lebih menekankan pada maksud/tujuan cerita. Teori
Lebowitz diimplementasikan ke dalam sistem yang dinamai Universe.
e) Metode Minstrel. Metode ini diperkenalkan oleh Turner (2004). Dalam sistem ini sudah
mampu membangkitkan cerita dengan logika yang konsisten. Secara keseluruhan, sistem ini
meniru bagaimana manusia menceritakan suatu cerita. Bahasan pokok Turner adalah di
dalam peniruan kreatifitas manusia. Dia menggunakan cerita Raja Arthur sebagai domain
utamanya.
Tiga langkah pembangkitan cerita menurut metode Minstrell adalah :
Menentukan permasalahan masa lalu yang mirip dengan permasalahan yang dihadapi
pada masa sekarang.
Menyesuaikan pemecahan masalah yang lalu ke dalam permasalahan masa sekarang.
www.digizoneku.com
Menerapkan pemecahan masalah tersebut ke dalam permasalahan yang dihadapi saat ini.
Teori ini mengintegrasikan langkah “mencari” dan “adaptasi” untuk meningkatkan kreatifitas
sistem.
Walaupun metode Minstrell dianggap sudah mampu membangkitkan cerita dengan logika
yang konsisten, metode Minstrell tetap memiliki kelemahan yang ditemui dalam metode
sebelumnya, yaitu sifatnya yang ambigu dan kurang spesifik sehingga sulit
mengimplementasikannya. Menyadari kelemahan-kelemahan yang timbul pada teori-teori
sebelumnya, muncullah metode Joseph yang dipublikasikan Lang pada tahun 1997.
Metode yang digunakan Lang dalam pembangkitan cerita adalah pemfokusan pada
karakter-karakter dan plot saat membangkitkan teks dengan berpegang pada pedoman yang
terdefinisi dalam story grammar. Story gramar yang digunakan Lang merupakan pengembangan
dari story grammar Rummelhart. Dalam pengembangan aplikasinya, Lang menggunakan bahasa
Prolog.
B. LANDASAN TEORI
1. Konsep Pembangkitan Narasi Metode Joseph Dalam sistem Joseph, narasi sederhana dapat direpresentasikan sebagai pola ertentu yang
terdiri atas keadaan (state) dan kejadian (event) yang terdapat di dalamnya. Terdapat banyak
cara untuk menampilkan keadaan dan kejadian tersebut, serta hubungan antara keduanya.
Joseph menangkap isi dari suatu cerita sebagai sekumpulan ekspresi kalkulus predikat,
menunjukkan keadaan atau kejadian yang menyusun narasi. Keadaan dan kejadian dibedakan
sebagai berikut:
Kejadian adalah segala sesuatu yang terjadi di dalam cerita: peristiwa yang menggerakkan
plot maju.
Keadaan adalah ekspresi yang menunjukkan bahwa fakta yang ada adalah benar dalam
rentang waktu tertentu. Dalam Joseph, keadaan ini digunakan untuk memodelkan bagian
awal dari narasi, dan untuk memodelkan efek dari suatu perbuatan.
Menggambarkan pola antara keadaan dan kejadian membutuhkan representasi relasi
antara kedua komponen tersebut. Terdapat tiga relasi koheren antara keadaan dan kejadian,
yaitu:
Relasi antara keadaan dan kejadian, yang mana keadaan-keadaan tertentu dapat memicu
suatu kejadian tertentu.
www.digizoneku.com
Relasi antara keadaan dan kejadian, yang mana setelah terjadi suatu kejadian tertentu akan
mengakibatkan keadaan-keadaan tertentu.
Relasi antara perbuatan yang ditujukan untuk meraih tujuan tertentu, yang mana
menghubungkan antara keadaan dari agen yang memiliki tujuan dan aksi-aksi yang
dilakukan oleh agen.
Beberapa, walaupun tidak semua, perbuatan adalah dilakukan untuk meraih tujuan, atau
merupakan tindakan yang disengaja. Untuk dapat merepresentasikan tindakan semacam ini,
Joseph merepresentasikan “mental state” yaitu pengetahuan, kepercayaan, dan tujuan dari agen
yang dimiliki ketika melakukan suatu tindakan.
2. Proses Pembangkitan Cerita Proses pembangkitan cerita dapat dibagi menjadi dua tahapan, yaitu proses
pembangkitan dan proses penuangan ke dalam bahasa alami (natural language). Proses
pembangkitan cerita dimulai dari pencarian elemen penyusun cerita ke dalam basis data. Dalam
teori Joseph, basis data ini disebut dengan word model . Proses pencarian ke dalam basis data
dinyatakan selesai ketika sistem tidak menemukan elemen yang memenuhi aturan story
grammar.
Proses berikutnya adalah penuangan ke dalam bahasa alami. Bahasa alami adalah bahasa
yang dapat dimengerti oleh manusia, dalam hal ini penulis menggunakan bahasa Indonesia.
Komponen bahasa alami ini dapat dipisahkan menjadi dua bagian, yaitu :
Penerjemah pohon, berfungsi untuk menerjemahkan struktur cerita dan menghubungkan
kejadian-kejadian yang terjadi di dalam suatu cerita.
Penerjemah daun, berfungsi untuk membentuk kalimat yang sesuai dengan tiap-tiap elemen
cerita.
Komponen utama dari sistem Joseph adalah komponen story grammar. Komponen-
komponen lainnya dapat disesuaikan, diubah, dan diatur sesuai dengan kebutuhan. Karena
cerita yang dibangkitkan dalam tugas akhir ini adalah cerita yang sederhana, sistem Joseph yang
digunakan dalam tugas akhir ini tidak menyertakan komponen temporal predicates Komponen
temporal predicates hanya digunakan dalam cerita yang kompleks.
3. Javascript Menurut id.wikipedia.org, Javascript adalah nama implementasi Netscape
www.digizoneku.com
Communication Corporation untuk ECMAScript standar, suatu bahasa skrip yang didasarkan
pada konsep pemrograman berbasis prototipe. Bahasa ini terutama terkenal karena
penggunaannya di situs web (sebagai JavaScript sisi klien) dan juga digunakan untuk
menyediakan akses skrip untuk objek yang dibenamkan (embedded) di aplikasi lain.
Walaupun memiliki nama serupa, JavaScript hanya sedikit berhubungan dengan bahasa
pemrograman Java dengan kesamaan utamanya adalah penggunaan sintaks C. Secara semantik,
JavaScript memiliki lebih banyak kesamaan dengan bahasa pemrograman Self.
Skrip JavaScript yang dimasukkan di dalam berkas HTML ataupun XHTML harus
dimasukkan di antara tag <script> .... </script>. Berikut ini adalah contohnya (yang akan
menampilkan sebuah dialog box berisi Halo Dunia! Ketika sebuah tombol diklik pengguna) :
<input type = “button” value = “Tekan di sini” onClick = “halo();”> <script type = “text/javascript”> function halo () { alert(“Halo Dunia!”); } </script>
www.digizoneku.com
BAB III
PEMBAHASAN SISTEM
Sistem pembangkit cerita yang saya buat kode programnya adalah sebagai berikut : <html> <head> <title>Pembangkit Cerita</title> </head> <body> <SCRIPT LANGUAGE="JavaScript"> function buatcerita() { if (document.cerita.karakter.value=='') alert("Masukkan nama tokoh dulu ya ...^^"); if (document.cerita.karakter.value!='') ceritaku(document.cerita.karakter.value,document.cerita.jk.options.selectedIndex); } function ceritaku(tokoh,jktokoh) { var paras="cantik" var artis="Ulfa" if (jktokoh=="1") { artis="Komeng"; paras="ganteng"; } var index; var tmpStr; var tmpChar; var preString; var postString; var strlen; tmpStr = tokoh.toLowerCase(); strLen = tmpStr.length; if (strLen > 0) { for (index = 0; index < strLen; index++) { if (index == 0) { tmpChar = tmpStr.substring(0,1).toUpperCase(); postString = tmpStr.substring(1,strLen); tmpStr = tmpChar + postString; }else{ tmpChar = tmpStr.substring(index, index+1); if (tmpChar == " " && index < (strLen-1)) { tmpChar = tmpStr.substring(index+1, index+2).toUpperCase(); preString = tmpStr.substring(0, index+1); postString = tmpStr.substring(index+2,strLen); tmpStr = preString + tmpChar + postString; }}} tokoh=tmpStr; heading.innerHTML="<b><big>Catatan si "+tokoh+"</big></b><br><br>"; var country=Math.round(Math.random()*20); var country2=Math.round(Math.random()*20);
www.digizoneku.com
var countryarray=new Array("South Africa","China","Bali","Canada","Brazil","France","Italy","Germany","Russia","Tokalue","Scotland","England","Ireland","Greenland","Iceland","Israel","Japan","Peru","Egypt","Mexico","Java","Scandinavia"); var kota=Math.round(Math.random()*11); var kota2=Math.round(Math.random()*11); var arraykota=new Array("Jakarta", "Jogja", "Bali", "Medan", "Aceh", "Jayapura", "Bandung", "Surabaya", "Samarinda", "Balikpapan", "Semarang", "Solo"); var uang=Math.round(Math.random()*4); var uang2=Math.round(Math.random()*4); var arrayuang=new Array("Rp 100.000.000","Rp 45.000.000"," Rp 120.000.000","Rp 3.000","Rp 750.000.000"); var tahun=Math.round(Math.random()*44)+3; var burns=Math.round(Math.random()*2); var burnarray=new Array("1st","2nd","3rd"); var cost=Math.round(Math.random()*5); var costarray=new Array("$10 000","$45 000","$120 000","$3","$750 000"); var years=Math.round(Math.random()*44)+3; var part0=Math.round(Math.random()*9) var part1=Math.round(Math.random()*8) var part2=Math.round(Math.random()*6) var part3=Math.round(Math.random()*2) var part4=Math.round(Math.random()*4) var part5=Math.round(Math.random()*3) var part6=Math.round(Math.random()*6) var part7=Math.round(Math.random()*3) var part8=Math.round(Math.random()*3) var part9=Math.round(Math.random()*3) var part0array=new Array (" berhutang kepada", " berkelahi dengan", " bepergian bersama", " melihat film bersama", " mendapat ancaman dari", " pergi berenang dengan", " berteman dengan", " hampir terbunuh oleh", " berbincang-bincang dengan", " bertemu dengan"); var part1array=new Array (" seorang anak kecil", " anjing", " orang buta", " Fathul Ihsan", " model "+paras, " gelandangan", " pengemis", " seorang pembunuh", " "+artis); var part2array=new Array (" di bawah tempat tidur", " setelah menang undian", " di kota "+arraykota[kota], " di taman hiburan", " di dalam bus", " setelah naik angkot", " di Mall" ); var part3array=new Array (" pada waktu hujan lebat", " ketika terjadi angin puting beliung", " pada waktu terjadi gempa besar"); var part4array=new Array (" karena dia belum tidur semalam", " tanpa ada tujuan sama sekali", " karena kakinya sakit", " tetapi semua ini hanya kecelakaan", " merasa sangat bodoh"); var part5array=new Array (" dan pertengkaran pun terjadi", " dan memutuskan untuk melupakannya", " dan semuanya sangat bersimpatik", " dan berjalan-jalan di taman"); var part6array=new Array (" yang menyebabkan orang-orang berteriak", " yang menyebabkan dia mendapat banyak masalah", " yang membuatnya menangis", " yang membuat semuanya marah", " jadi semuanya tunduk kepada "+tokoh+",", ". Lalu "+tokoh+" lari pontang-panting", ". "+tokoh+" kemudian melarikan diri melalui jalan rahasia"); var part7array=new Array (". Dia mencuri sebuah mobil", ". Dia menembak semua musuhnya", ". Dia memanggil polisi", ". Dia meledakkan truk dengan granat"); var part8array=new Array (" dan seperti ada keajaiban", " dan ketika memakai tas keberuntungannya", " dan dengan uang "+arrayuang[uang], " dan dengan sisa-sisa kekuatannya");
www.digizoneku.com
var part9array=new Array (" dia bisa masuk ke Angkatan darat.", " dia tertangkap polisi dan dihukum penjara selama "+tahun+" tahun.", " dia tinggal di "+arraykota[kota2]+" menghabiskan sisa umur yang ada.", " dia menikahi "+artis+" dengan maskawin "+arrayuang[uang2]+"."); storyarea.innerHTML=tokoh+part0array[part0]+part1array[part1]+part2array[part2]+part3array[part3]+part4array[part4]+part5array[part5]+part6array[part6]+part7array[part7]+part8array[part8]+part9array[part9]; } } </script> <form name="cerita"> <table border="0" cellpadding="5" cellspacing="0" class="main" width="250" align="center"> <tr> <td align="center" colspan="2"><div id=heading><b><big>Pembangkit Cerita Sederhana</big></b><br><br></div> <textarea id=storyarea rows="8" cols="40" readonly onfocus=this.blur() class="form" style="padding: 5"> Masukkanlah nama dan jenis kelamin tokoh cerita untuk membuat sebuah cerita acak sederhana. Ada banyak sekali kemungkinan cerita yang ada. Jadi, selamat bersenang-senang... ^_^</textarea></td> </tr> <tr> <td align="left">Nama Tokoh</td> <td>: <input type="text" name="karakter" maxlength="15" size="20" class="form"></td> </tr> <tr> <td align="left">Jenis Kelamin</td> <td>: <select name="jk" size="1" class="form"><option>Pria</option><option>Wanita</option></select></td> </tr> <tr> <td align="center"></td> <td><input type="button" onClick="javascript:return buatcerita();" value="Buat Cerita" class="form"></td> </tr> </table> </form> </body> </html> Dari kode pemrograman di atas akan dihasilkan sistem pembangkit cerita, dimana cerita yang
dibangkitkan adalah sebuah cerita berbahasa Indonesia yang acak. Beberapa cerita yang dihasilkan
dengan nama tokoh Gathotkaca dan jenis kelamin Pria adalah :
1. Gathotkaca pergi berenang dengan Fathul Ihsan setelah naik angkot ketika terjadi angin puting
beliung tanpa ada tujuan sama sekali dan semuanya sangat bersimpatik jadi semuanya tunduk
kepada Gathotkaca,. Dia menembak semua musuhnya dan ketika memakai tas
keberuntungannya dia menikahi Ulfa dengan maskawin Rp 750.000.000.
2. Gathotkaca berteman dengan model cantik di dalam bus ketika terjadi angin puting beliung
www.digizoneku.com
karena kakinya sakit dan semuanya sangat bersimpatik yang membuat semuanya marah. Dia
menembak semua musuhnya dan dengan uang Rp 45.000.000 dia menikahi Ulfa dengan
maskawin Rp 3.000.
3. Gathotkaca melihat film bersama seorang pembunuh setelah naik angkot ketika terjadi angin
puting beliung karena kakinya sakit dan pertengkaran pun terjadi yang menyebabkan dia
mendapat banyak masalah. Dia memanggil polisi dan ketika memakai tas keberuntungannya dia
tinggal di Aceh menghabiskan sisa umur yang ada.
Kemudian beberapa cerita dengan nama tokoh Sri dan jenis kelamin wanita :
1. Sri melihat film bersama gelandangan di dalam bus pada waktu hujan lebat tetapi semua ini
hanya kecelakaan dan semuanya sangat bersimpatik jadi semuanya tunduk kepada Sri,. Dia
memanggil polisi dan seperti ada keajaiban dia tinggal di Balikpapan menghabiskan sisa umur
yang ada.
2. Sri berbincang-bincang dengan gelandangan di kota Medan ketika terjadi angin puting beliung
tetapi semua ini hanya kecelakaan dan semuanya sangat bersimpatik. Sri kemudian melarikan
diri melalui jalan rahasia. Dia mencuri sebuah mobil dan seperti ada keajaiban dia menikahi
Komeng dengan maskawin Rp 3.000.
3. Sri berkelahi dengan Fathul Ihsan setelah naik angkot pada waktu hujan lebat karena dia belum
tidur semalam dan memutuskan untuk melupakannya yang menyebabkan orang-orang berteriak.
Dia memanggil polisi dan dengan uang Rp 100.000.000 dia menikahi Komeng dengan
maskawin Rp 120.000.000.
www.digizoneku.com
BAB IV
PENUTUP
A. KESIMPULAN
1. Sistem pembangkit cerita berbasis web dengan menggunakan javascript merupakan sebuah
sistem yang mempunyai interoperabilitas tinggi. Sistem ini bisa dibuka oleh berbagai macam
sistem operasi menggunakan web browser dengan setting enable javascript.
2. Sistem ini bisa menghasilkan berbagai macam cerita walaupun ejaannya masih belum
sempurna.
B. SARAN
1. Sistem ini masih bisa dikembangkan dengan mengubah kata-kata dalam array yang menyusun
cerita supaya ejaannya menjadi lebih baik.
2. Untuk menambah panjang cerita, bisa dilakukan penambahan banyaknya array penyusun cerita.