Dalam Al-Qur’an kata “mimpi” disebutkan dalam beberapa surat. Salah
satunya surat Al-Isra [17]:60 yang menyatakan “Dan (ingatlah), saat Kami
wahyukan kepadamu: ‘Sesungguhnya (ilmu) Rabbmu meliputi semua manusia.’
Dan Kami tidak menjadikan mimpi yang telah Kami perlihatkan kepadamu,
melainkan sebagai ujian bagi manusia dan (begitu pula) pohon kayu yang terkutuk
dalam al-Qur’an. Dan Kami menakut-nakuti mereka, tetapi yang demikian itu
hanyalah menambah besar kedurhakaan mereka”.
Bermimpi merupakan hal yang sering terjadi pada manusia di mana mimpi
terkadang menimbulkan kesan, pertanyaan ataupun manusia mengaitkan dengan
kenyataan yang terjadi dalam kehidupannya. Pengalaman yang dialami oleh
manusia akan mempunyai arti dan dapat memberi kesan tersendiri bagi manusia
yang nantinya akan menjadi sumber mimpi. Mimpi termasuk pengalaman pribadi
namun merupakan fenomena umum yang berperan penting pada diri manusia
Dalam buku Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001 Mimpi ,zaman sekarang banyak orang yang menganggap percaya dengan mimpi
yaitu sebuah hal yang tidak wajar. Padahal sebagai seorang mukmin kita harus
mempercayai mimpi, karena mimpi itu sendiri datang dari Allah SWT yang
membawa kabar gembira dan peringatan. Rasulullah pernah bersabda: ”Tidak akan
ada tanda kenabian yang tersisa sesudahku kecuali kabar-kabar gembira. Para
sahabat bertanya, “Wahai Rasulullah, apakah ‘kabar-kabar gembira’ tersebut?”
Beliau SAW bersabda, “Mimpi baik yang benar, baik mimpi disaksikan sendiri oleh
seseorang untuk dirinya atau diperlihatkan padanya—dalam kenyataan.” (HR.
Malik, Ahmad, dan Ad-Darimi). Dan mimpi yaitu salah satu sifat dari 46 sifat
kenabian yang masih tersisa bahkan ia yaitu salah satu dari dua bagian kenabian,
karena di antara para nabi ada yang menerima wahyu mereka dengan melalui mimpi
dan dia disebut dengan Nabi. Rasulullah pernah bersabda: “Apabila kiamat sudah
mulai mendekat, mimpi seorang muslim hampir tidak pernah bohong, mimpi kamu
yang paling benar yaitu mimpi yang paling benar ucapannya dan mimpi seorang
muslim merupakan salah satu dari 46 bagian dari sifat kenabian. Maka jika salah
seorang dari kamu bermimpi buruk, maka hendaklah ia bangun, lalu dirikanlah
shalat, dan janganlah kamu bicarakan pada orang lain, saya menyukai ikatan(al-
qayid) dan benci pada mimpi yang terbelenggu kedua tangan ke lehernya dan al-
qayid berarti keteguhan dalam beragama.” (HR. Ahmad, Muslim, Abu Dawud dan
Tirmidzi, dari sahabat Abu Hurairah.)
Pada buku Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001 Mimpi (Sirin,
2003), mimpi dibagi menjadi dua macam, ada mimpi yang benar ( al ruya al -haq)
dan mimpi bohong ( al ruya al-bathil). Mimpi yang benar yaitu mimpi yang
mempunya pengaruh terhadap orang yang mengalaminya, mimpi ini membawa
kabar gembira dan peringatan. Mimpi ini dialami seseorang saat keadaan fisik
dan jiwanya sedang normal serta pikirannya netral. Sedangkan mimpi bohong
sering disebut bunga tidur, mimpi ini menimbulkan ketakutan, kesedihan, mimpi
ini tidak memperingatkan manusia dari dosa, tidak memperingatkannya dari
kelalaian dan tidak mencegahnya dari perbuatan mencelakakan. Mimpi ini terjadi
karena dipengaruhi kejiwaan, masalah pribadi, angan-angan dan pikiran yang
mengganggu. Pembagian ini diambil dari hadis yang berbunyi: “Mimpi itu terbagi
tiga, mimpi yang baik, yaitu kabar gembira yang berasal dari Allah swt, mimpi
pencemas yang datang dari setan, dan mimpi yang merupakan penjiwaan jiwa
sendiri yang berasal dari pengaruh psikologis.” (HR. Muslim dan Ahmad).
berdasar hasil kuisioner yang penulis lakukan didapatkan hasil
bagaimana cara yang bisaa digunakan untuk dapat memperoleh informasi tafsir
mimpi yaitu dengan bertanya kepada orang, mencari dalam buku, dan pencarian
menggunakan sistem. Dalam mendapatkan tafsir mimpi tersebut, terkadang kita
mengalami masalah yaitu jika bertanya kepada orang, tetapi tidak semua orang bisa
menafsirkan mimpi. Tafsir mimpi bisa didapat dalam buku atau kitab, tapi tidak
semua buku tersedia di perpustakaan maupun di pasaran kita harus membelinya dan
3
akan mengeluarkan biaya. Cara ketiga dalam mencari informasi tafsir mimpi yaitu
menggunakan teknologi.
Kitab tafsir mimpi Ibnu sirin merupakan kitab yang berisi hasil penafsiran
mimpi yang dilakukan oleh Muhammad Bin Sirin lebih dikenal dengan panggilan
Ibnu Sirin. Beliau merupakan seorang ulama dan terkenal sebagai seorang pakar
dan mahir dalam menafsirkan mimpi. Kitab ini memiliki landasan tafsir yang kuat
karena Ibnu Sirin sebagai penafsir mimpi mengaitkan ayat-ayat Al-Quran dan
hadist Rasulullah SAW dalam menafsirkan mimpi (Sirin, 2003).
Menurut hasil kuisioner yang peneliti lakukan dengan melibatkan sebanyak
105 responden. Didapatkan bahwa sebanyak 74 orang penasaran dengan mimpi.
Sebanyak 57 orang merasa mimpi penting baginya dan sebanyak 86 orang tidak
tahu mengenai arti mimpi. Sebanyak 62 orang merasa arti mimpi penting dan 43
orang merasa arti mimpi tidak penting. Untuk mengetahui arti dari mimpi sebanyak
33 orang memilih lihat internet, 31 orang bertanya kepada orang lain, 3 orang
membaca buku dan 38 orang dengan cara lainnya. sebanyak 100 orang belum
pernah menggunakan aplikasi tafsir mimpi dan 5 orang belum pernah. Dari
pemaparan di atas sebanyak 64 orang merasa perlu dengan adanya aplikasi tafsir
mimpi dan 41 orang merasa tidak perlu.
Saat ini perkembangan ilmu pengetahuan dan teknologi pada zaman ini telah
mengalami banyak kemajuan yang sangat pesat, seiring dengan kebutuhan manusia
yang semakin meningkat. Impian ini terus berlanjut dan meluas, sehingga menuntut
teknologi interaksi mesin dan manusia (human-machine interfaces) yang semakin
canggih dan handal salah satunya yaitu natural language processing. Sejarah
Natural Language Processing dimulai pada tahun 1950-an, meskipun telah ada
penilitian natural language processing pada tahun-tahun sebelumnya. Pada tahun
1950, Alan Turing mempublikasikan artikel terkenalnya yang berjudul “Computing
Machinery and Intelligence” yang di dalamnya Alan Turing mengusulkan tes yang
sekarang disebut dengan Turing Test. Tes Turing yaitu sebuah tes yang mengukur
kemampuan mesin (dalam hal ini program komputer) untuk menunjukan perilaku
cerdas.
Natural Language Processing merupakan sebuah teknik yang berfungsi
untuk menganalisis dan merepresentasikan bahasa manusia secara otomatis dengan
mempelajari model matematis dan komputasi dari berbagai macam aspek bahasa
dan pengembangan pada sistem yang luas. Natural Language Processing
digunakan untuk mengambil struktur gramatikal. Natural Language Processing
membangun output berdasar aturan yang ada pada bahasa yang dijadikan objek
pemrosesan (Busiarli, Aditya, & Andika, 2016).
Algoritma levenshtein distance digunakan untuk mencari kesamaan atau
kemiripan dalam sebuah string dan digunakan untuk modifikasi dengan mengubah
suatu string menjadi string yang lain agar prosesnya menjadi lebih sederhana atau
juga bisa digunakan untuk menentukan seberapa mirip, atau berbedanya dua buah
string (Adriyani, Santiyasa, & Muliantara, 2012).
Sebelumnya terdapat beberapa aplikasi yang menggunakan natural language
processing, seperti aplikasi chatbot dokter virtual (Suhendro, 2014) penelitian ini
menggunakan natural language processing sebagai proses memahami masukan
dari pasien.
Penelitian mengenai natural language processing, sebelumnya terdapat
beberapa penelitian, penelitian oleh (Februariyanti & Zuliarso, 2011) penelitian ini
berupa aplikasi natural language processing menggunakan instant messenger
untuk informasi bencana. Pada penelitian natural language processing tersebut
tidak menggunakan algoritma levenshtein distance.
Untuk itu penulis mencoba untuk membuat aplikasi tafsir mimpi dengan
menggunakan pendekatan natural language processing sebagai proses
preprocessing serta menggunakan algoritma levenshtein distance untuk
mencocokan pertanyaan hasil preprocessing yang dimasukkan dan memperbaiki
kesalahan penulisan yang dilakukan user sehingga sistem dapat memberikan hasil
yang lebih baik.
berdasar uraian latar belakang di atas, penulis ingin merancang dan
membangun sebuah “Aplikasi Tafsir Mimpi Menurut Kitab Tafsir Mimpi Ibnu
Sirin Mengunakan Pendekatan Natural Language Processing”. Kelebihan aplikasi
ini yaitu memudahkan pengguna dalam mencari informasi tafsir mimpi. Di mana
masukkan pengguna berupa teks diproses dan ditampilkan dalam bentuk teks juga.
Aplikasi yaitu suatu unit perangkat lunak yang dibuat untuk melayani
kebutuhan akan beberapa aktivitas seperti sistem perniagaan, game palayanan
masyarakat, periklanan, atau semua proses yang hampir dilakukan manusia.
Dikutip dari buku Software Engineering 10th Edition
aplikasi terdiri dari berbagai macam diantaranya yaitu :
a. Stand-alone application yaitu aplikasi yang berdiri di dalam komputer
itu sendiri. Biasanya tidak membutuhkan koneksi network.
b. Interactive transaction-based applications yaitu aplikasi yang
terkoneksi dengan komputer pusat dimana pengguna hanya
menggunakan komputernya untuk komunikasi jarak jauh.
c. Embeded control system yaitu aplikasi khusus yang diciptakan untuk
mengendalikan suatu perangkat keras.
d. Batch Processing system yaitu sistem bisnis yang dapat memproses
sekumpulan data yang besar.
e. Entertainment system yaitu sistem yang secara pokok biasa digunakan
untuk menghibur pengguna.
f. System for modelling and simulation yaitu sistem yang dibangun oleh
para pakar dan ilmuan untuk menggambarkan suatu pendekatan secara
fisik maupun proses.
g. Data collection system yaitu sistem yang mampu mendapatkan data
dari sistem lain dengan berbagai sensor dan mengirimkannya pada sistem
lain.
h. System of system yaitu suatu kumpulan dari banyak sistem.
Penulis menyimpulkan aplikasi yaitu software atau alat terapan yang dibuat
untuk mengerjakan tugas-tugas tertentu dan memenuhi kebutuhan.
2.2.1 Pengertian Natural Language Processing
Natural Language Processing yaitu bidang dalam ilmu komputer
dan terminolog yang berhubungan dengan interaksi antara komputer dengan
manusia. Natural Language Processing juga merupakan area yang penting
dalam kecerdasan buatan karena komputer akan dianggap cerdas apabila bisa
mengerti perintah yang diberikan dalam bahasa alami
Sedangkan menurut Natural Language Processing
yaitu bidang yang fokus pada kegunaan komputer untuk menganalisa
bahasa alami. Ini membahas beberapa bidang seperti speech processing,
relationship extraction, document categorization, dan summitation of text.
Natural Language Processing yaitu bidang penelitian dan aplikasi
yang membahas bagaimana komputer dapat digunakan untuk memahami dan
memanipulasi teks atau ucapan untuk melakukan hal - hal yang bermanfaat.
Natural Language Processing bertujuan untuk mengumpulkan pengetahuan
tentang bagaimana manusia memahami dan menggunakan bahasa sehingga
alat yang tepat dapat dikembangkan untuk membuat sistem komputer
memahami dan memanipulasi bahasa alami untuk melakukan tugas yang
diinginkan. Landasan NLP terletak pada beberapa disiplin ilmu, yaitu, ilmu
komputer, ilmu informasi, elektrik, matematika, elektro, kecerdasan buatan,
robotika, dan psikologi. Aplikasi NLP mencakup beberapa bidang studi,
seperti machine translation, natural language text processing and
summarization, user interface, multilingual, cross-language information
retrieval (CLIR), speech recognition, artificial intelligence dan expert system
(Rodirigues & Teixeira, 2015).
Sistem natural language harus memperhatikan pengetahuan terhadap
bahasa itu sendiri, seperti dari kata yang digunakan bagaimana kata – kata
tersebut digabung, apa arti sebuah kata, apa fungsi sebuah kata dari suatu
kalimat. Tugas dari NLP yaitu mengekstrak informasi dari suatu kalimat.
NLP tidak bertujuan mengubah bahasa yang diterima dalam bentuk teks atau
suara menjadi data digital atau sebaliknya. Tujuan dari NLP yaitu
11
memahami arti sebuah kalimat yang diberikan dalam bentuk bahasa alami
dan memberikan tanggapan yang sesuai (Rodirigues & Teixeira, 2015).
Gambar 2.1 Skema NLP
2.2.2 Natural Language Processing Area
(Pustejovsky & Stubbs, 2013) menjelaskan bahwa ada beberapa area
utama penelitian pada field NLP, diantaranya:
1. Summarization. Pembuatan ringkasan dari sekumpulan konten dokumen
atau email. Dengan menggunakan aplikasi ini, user bisa dibantu untuk
mengkonversikan dokumen teks yang besar ke dalam bentuk slide
presentasi.
2. Question Answering Systems (QAS). Kemampuan komputer untuk
menjawab pertanyaan yang diberikan oleh user. Daripada memasukkan
keyword ke dalam browser pencarian, dengan QAS, user bisa langsung
bertanya dalam bahasa natural yang digunakannya, baik itu Inggris,
Mandarin, ataupun Indonesia.
3. Machine Translation. Produk yang dihasilkan yaitu aplikasi yang dapat
memahami bahasa manusia dan menterjemahkannya ke dalam bahasa
lain. Termasuk di dalamnya yaitu Google Translate yang apabila
12
dicermati semakin membaik dalam penterjemahan bahasa. Contoh lain
lagi yaitu BabelFish yang menterjemahkan bahasa pada real time.
4. Speech Recognition. Field ini merupakan cabang ilmu NLP yang cukup
sulit. Proses pembangunan model untuk digunakan telpon/komputer
dalam mengenali bahasa yang diucapkan sudah banyak dikerjakan.
Bahasa yang sering digunakan yaitu berupa pertanyaan dan perintah.
5. Document classification. Sedangkan aplikasi ini yaitu merupakan area
penelitian NLP yang paling sukses. Pekerjaan yang dilakukan aplikasi ini
yaitu menentukan dimana tempat terbaik dokumen yang baru
diinputkan ke dalam sistem. Hal ini sangat berguna pada aplikasi spam
filtering, news article classification, dan movie review.
2.2.3 Aplikasi Dalam Bidang Natural Language Processing
Jenis aplikasi yang dapat dibuat pada bidang natural language
processing yaitu text – base application dan dialogue – based applications.
1. Text – based application
Text – based application mencakup aplikasi yang melakukan
proses terhadap teks tertulis, seperti dokumen, buku, e-mail, surat
kabar dan lain-lain. Contoh penggunaan dari text – based
application yaitu :
a. Mencari topik tertantu dari buku atau dokumen.
b. Memberikan tanggapan dari input yang diberikan.
c. Menerjemahkan dokumen dari suatu bahasa ke bahasa lain.
d. Mencari isi dari suatu e-mail.
2. Dialogue – based application
Dialogue- based application mencakup aplikasi yang melibatkan
pendekatan bahasa lisan atau pengenalan suara dan melakukan
interaksi dengan memasukkan teks pertanyaan.
Contoh penggunaan dialogue – based application yaitu :
a. Sistem otomatis pelayanan telepon.
b. Kontrol suara pada peralatan elektronik.
13
c. Sistem tanya jawab untuk mendapatkan informasi dari
database.
d. Sistem problem solving untuk melalukan penyelesaian
masalah yang dihadapi dalam suatu pekerjaan.
2.3 Fuzzy String Matching
Fuzzy String Matching merupakan metode pencarian string yang
menggunakan pendekatan terhadap pola dari string yang dicari. Metode ini
termasuk dalam kategori inexact matching dimana konsep ini melakukan pencarian
terhadap string yang sama dan juga string yang mendekati dengan string yang lain
yang terkumpul dalam sebuah penampung atau kamus (Haryanto, 2011).
Pencocokan string secara garis besar dapat dibedakan menjadi dua yaitu (Syaroni
& Munir, 2005):
1. Inexact String Matching
Inexact string matching atau Fuzzy String Matching yaitu proses
pencocokan string samar dimana string yang dicocokan memiliki kemiripan
dimana keduanya memiliki susunan karakter yang berbeda tetapi string –
string tersebut memiliki kemiripan tekstual atau ucapan. Inexact string
matching dibagi menjadi dua yaitu:
a. Approximate String matching, merupakan proses pencocokan string
berdasar kemiripan penulisan seperti jumlah karakter, susunan
karakter dalam dokumen. Tingkat kemiripan ditentukan dengan jauh
tidaknya beda penulisan dua buah string yang dibandingkan tersebut.
b. Phonetic String Matching, merupakan proses pencocokan string
berdasar kemiripan pengucapannya meskipun ada perbedaan
penulisan pada dua string yang dibandingkan tersebut.
2. Exact String Matching
Exact string matching merupakan pencocokan string secara tepat dengan
susunan karakter dalam string yang dicocokan memiliki jumlah atau urutan
karakter dalam string yang sama. Exact string matching bermanfaat jika
pengguna ingin mencari string dalam dokumen yang sama persis dengan
string yang dimasukkan.
14
2.4 Algoritma Levenshtein Distance
Algoritma Levenshtein Distance yaitu algoritma yang digunakan untuk
menghitung jumlah perbedaan string antara dua string. Perhitungan jarak antara dua
string ini ditentukan dari jumlah minimum operasi perubahan untuk membuat string
A menjadi string B (Isbad, Gurning, & Adawiyah, 2016). Ada tiga macam operasi
yang dilakukan dalam algoritma ini yaitu (Singla & Garg, 2012):
1. Pengubahan Karakter
Pengubahan karakter merupakan operasi menukar sebuah karakter dengan
karakter lain contohnya string “yamg” yamg menjadi “yang”. Dalam kasus
ini karakter “m” diganti dengan huruf “n”.
2. Penambahan karakter
Penambahan karakter yaitu operasi menambahkan karakter ke dalam suatu
string. Contohnya string “meliha” menjadi string “melihat” dilakukan
penambahan karakter ‘t’ di akhir string. Penambahan string tidak hanya
dilakukan di akhir string, tapi juga di awal maupun ditengah string.
3. Penghapusan karakter
Penghapusan karakter dilakukan untuk menghilangkan karakter dari suatu
string. Contohnya string ‘melihatt’ karakter ‘t’ di akhir string dihilangkan
sehingga menjadi string ‘melihat’.
Perbedaan pada string dapat diperoleh dengan memeriksa apakah suatu string
masukkan sesuai dengan string target. Nilai selisih perbedaan ini disebut dengan
edit distance atau jarak levensthein (Singla & Garg, 2012).
Jarak levenshtein antara string ‘s’ dan string ‘t’ tersebut yaitu fungsi D yang
memetakan ( s, t ) ke suatu bilangan real non-negatif. Contohnya diberikan dua
buah string s = s(1), s(2), s(3), … , s(m) dan t = t(1), t(2), t(3),… t(n) dengan |s| =
m dan |t| = n sepanjang alfabet V berukuran r sehingga “s” dan “t” anggota dari V*
s(j) yaitu karakter pada posisi ke-j pada string “s” dan t(i) yaitu karakter pada
posisi ke-I pada string “t” sehingga jarak Levenshtein dapat didefinisikan sebagai
(Isbad et al., 2016)
𝐷(𝑠, 𝑡) = 𝑑(𝑠1, 𝑡1) + 𝑑(𝑠2, 𝑡2) + ⋯ + 𝑑(𝑠𝑙, 𝑡𝑙) … … … … … . . … … … (𝑖)
15
𝐷(𝑠, 𝑡) = ∑ 𝑑(𝑠𝑖, 𝑡𝑖) … … … … … … … … … … … … … … … … … … . (𝑖𝑖)
𝑙
𝑖=1
Dimana: 𝑠𝑖, 𝑡𝑖 ∈ ⋁ untuk I = 1,2,…,1
𝑑(𝑠𝑖, 𝑡𝑖) = 0 jika 𝑠𝑖 = 𝑡𝑖 dan 𝑑(𝑠𝑖, 𝑡𝑖) = 1 jika 𝑠𝑖 ≠ 𝑡𝑖
D(s,t) yaitu banyaknya operasi minimum dari penghapusan, penyisipan, dan
penukaran untuk menyamakan string s dan t. pada implementasi pencocokan string,
ketiga string tersebut dapat dilakukan sekaligus untuk menyamakan string sumber
dengan string target.
Tabel 2.1 Matriks Perhitungan Distance
(Sumber: Isbad et al., 2016)
S A y a
0 1 2 3 4
s 1 0 1 2 3
y 2 1 2 1 2
a 3 2 1 2 1
Dapat dilihat pada gambar diatas hasil perhitungan distance antara 2 string
“sya” dan “saya” yaitu pemeriksaan dimulai dari iterasi awal dari kedua string
kemudian dilakukan operasi penambahan, penyisipan dan penghapusan. Nilai
distance yaitu pada ujung kanan bawah matriks. Hanya ada satu proses penyisipan
yaitu penyisipan karakter “a” pada string “sya” sehingga menjai “saya”(Isbad et al.,
2016).
2.5 Takwil Mimpi
Dalam terminologi islam, Ibnu Manzhur menyebutkan dua pengertian Takwil
secara istilah dalam Lisan al-arab, pertama takwil yaitu sinonim dari tafsir. Kedua
takwil yaitu memindahkan makna zhahir dari tempat aslinya kepada makna lain
karena ada dalil (Mansur, 2017).
Al-Jurjani dalam kamus istilahnya At-Ta’rifat menyatakan Takwil secara
bahasa bermakna kembali, sedangkan secara istilah bermakna mengalihkan lafazh
dari maknanya yang zhahir kepada makna lain yang terkandung didalamnya,
16
apabila makna yang lain itu sesuai dengan Al-Quran dan As-Sunnah (Mansur,
2017).
Dalam mentakwil mimpi hendaklah tidak mentakwilkan mimpi kecuali
mimpi tersebut berhubungan degan kabar gembira, peringatan atau manfaat
kehidupa. Ada beberapa hal yang perlu diperhatikan dalam mentakwil mimpi,
diantarnya (Sirin, 2003):
1. Menjadikan Al-Qur’an sebagai I’tibar.
2. Mengetahui hikmah dan permisalan dari pada nabi serta ahli hikmah.
3. Menjadikan kabar atau sunnah Nabi Muhammad SAW dan permisalan
takwilnya.
4. Permisalan-permisalan dari perkataan yang sudah terkenal.
5. Memahami ungkapan-ungkapan yang mengandung pelajaran dan kesan yang
memberikan makna.
6. Mengetahui asal atau akar kata dan makna kata nama atau sebutan.
7. Menjaga diri lahir dan batin.
8. Menganalisa kandungan mimpi.
Menurut Ibnu Sirin takwil mimpi dibagi menjadi tiga yaitu (Sirin, 2003):
1. Menurut Jenis. Hal ini seperti pohon, binatang buas, dan burung-burung.
Semua ini biasanya melambangkan manusia.
2. Menurut macam. Hal ini seperti dengan mengetahui macam, pohon, binatan,
atau burung. Misalnya pohon kurma melambangkan orang arab karena
kebanyakan tempat tumbuh kurma yaitu di tanah Arab.
3. Menurut tabiat. Hal ini seperti mengetahui apa tabiat pohon yang
bersangkutan, kemudian mentakwilkan tabiat seseorang dengan tabiat pohon
tersebut. Misalnya pohon kenari ditakwilkan dengan tabiat seorang laki-laki
yang sulit atau kikir dalam pergaulan dan suka bermusuhan.
2.6 Ibnu Sirin
Nama lengkap dari Ibnu Sirin yaitu Abubakar Muhammad bin Sirin al-
Bashri yaitu seorang tokoh ulama ahli fiqih dan perawi hadis dari golongan tabi’in
17
yang menetap di Bashrah. Ibnu Sirin juga terkenal kemampuannya dalam
menakwilkan mimpi (Basya, 2009).
Ayah Ibnu Sirin (nama Abu Bakr jarang digunakan) yaitu salah satu dari
banyak tawanan yang diambil oleh Khalid ibn al-Walid setelah Pertempuran Ayn
al-Tamr. Dia yaitu seorang perintis dari sebuah kota bernama Jirjaya (Gerzhiya),
menetap dan bekerja di sana. Ayahnya lalu menjadi budak dari Anas bin Malik,
namun ia membuat perjanjian untuk memerdekakan dirinya sendiri dengan tebusan
uang. Setelah itu, Sirin menikahi Shafiyah, budak perempuan Abubakar ash-
Siddiq. Turut hadir dalam pernikahan tersebut tiga orang isteri Nabi
Muhammad serta delapan belas orang Sahabat Nabi yang pernah
mengikuti Pertempuran Badar, yang mana Ubay bin Ka’ab memimpin doa
pernikahannya (Basya, 2009).
Ibnu Sirin mempelajari ilmu agama serta meriwayatkan hadis antara lain dari
Abu Hurairah, Abdullah bin Umar, Abdullah bin Zubair, Imran bin Hushain, dan
Anas bin Malik. Ia juga guru bagi Qatadah bin Di’amah, Kahlid al-Hadda, Alyyub
al-Sakhtiyani, dan lain-lain
Yang paling menonjol dari buku-buku yang dikaitkan dengannya yaitu
Dreams and Interpretations. Ibn Al-Nadim mengatakan bahwa dia yaitu penulis
Taabirul Ro’oya (What Dreams Express), yang berbeda dari versi singkat
Muntakhabul Kalam Fi Tafsir El Ahlam (Panduan Ringkas untuk Interpretasi
Mimpi) yang dicetak pertama kali di Bulaq, Mesir, pada tahun 1284 H, di Lucknow
pada tahun 1874 dan di Bombay pada 1296 H. Ini kemudian dicetak ulang berkali-
kali di berbagai bagian Dunia Arab dengan judul yang berbeda (Basya, 2009).
2.7 Pemahaman Kalimat
Pemahaman kalimat merupakan bagian pemahaman yang menggabungkan
kata-kata yang membentuk suatu kalimat yang memiliki arti. Di bawah ini
merupakan beberapa proses pemahaman suatu kalimat, diantaranya:
2.7.1 Analisa Leksikal
Analisa leksikal (Scanner) merupakan proses penerjemahan masukan
beruapa kumpulan karakter individu yang membentuk program menjadi
bentuk yang lebih berguna untuk tahap selanjutnya. Scanner melakukan
18
pemeriksaan per karakter pada teks masukkan, kemudian memecahnya
menjadi beberapa bagian yang disebut token. Analisa Leksikal melakukan
pengelompokan karakter ke dalam komponen – komponen pokok, seperti:
identifier, symbol operator, angka, delimeter, keyword, noise word, blank,
dan komentar
Pada tahap ini, analisa leksikal akan mengirim token ke parser. Agar
scanner dapat mengirim tokerm maka scanner harus mengisolasi karakter
pada teks sumber yang merupakan 1 token valid. Scanner mengidentifikasi
token secara lengkap dan membedakan identifier dan keyword dengan
menggunakan table simbol. Scanner akan memasukkan identifier, konstanta
literal dan numerik ke tabel simbol setelah dikonversi menjadi bentuk internal
(Sommerville, 2015).
Analisa Leksikal (scanner) membuat kerja parser menjadi lebih
mudah, karena hanya memproses sekumpulan token dan nilai sintaksis.
Proses kerja analisis leksikal sangat efisien dan intensif bila digunakan dalam
sebuah kompilator, karena membaca lebih dari sekali setiap karakter input
yang diberikan (Sommerville, 2015).
Kompilator yaitu sebuah program yang membaca suatu teks yang
ditulis dalam bahasa pemrograman dan menerjemahkannya ke bahasa lain.
Kompilator dibagi menjadi dua yaitu kompilator compiler dan kompilator
interpreter. Interpreter merupakan kompilator yang menjalankan program
bahasa tingkat tinggi dan menerjemahkan setiap baris kode program dalam
satu waktu. Sedangkan compiler merupakan kompilator yang membaca
program dan menerjemahkannya secara keseluruhan sebelum program
dijalankan. Compiler dapat dijalankan secara berulang-ulang tanpa
menerjemahkan lebih lanjut. Dalam menguraikan struktur kalimat, analisa
leksikal menganalisa setiap kata dalam kalimat, lalu menentukan jenis
katanya
Tugas Analisa Leksikal:
1. Membaca source code secara karater per karakter.
2. Mengenali besaran leksikal.
19
3. Merubah besaran leksikal menjadi sebuah token dan menentukan
jenis token.
4. Mengirim token.
5. Membuang whitespace dan komentar dalam program.
6. Menangani error.
7. Menangani tabel simbol.
Tahap pelaksanaan Analisa Leksikal:
1. Single one-pass
Pada tahap ini terjadi interaksi antara scanner dengan parser.
Parser akan memanggil scanner saat memerlukan token baru.
Tahap pendekatan ini dinilai lebih baik karena bentuk program
sumber tidak perlu dibangun dan disimpan di memori sebelum
melakukan parsing.
2. Separate Pass
Scanner memlakukan proses sebelum dilakukannya parsing. Hasil
dari scanner kemudian disimpan dalam file. File tersebut
digunakan dalam proses parsing. Scanner mengirim nilai integer
yang mewakili bentuk dari internal token.
2.7.2 Analisa Sintak
Analisa Sintak (Parser) digunakan untuk menentukan detail struktur
suatu kalimat dan memeriksa kebenaran dari token-token yang terbentuk dari
analisa leksikal. Analisa ini dilakukan melalui proses yang disebut parsing
(Sommerville, 2015).
Dalam proses parsing, input dipisahkan menjadi unit – unit kecil,
berupa kata, frasa. Unit – unit terebut dikenal sebagai token. Parsing
menunjuk pada proses pengenalan token yang berada dalam rangkaian teks.
Parsing juga merupakan proses yang dilakukan untuk menerjemahkan
masukan dari user agar bisa dimengerti oleh sistem. Maka untuk melakukan
parsing diperlukan grammar untuk menentukan struktur dari program
sumber (Sommerville, 2015).
20
Grammar yaitu sekumpulan himpunan variable-variabel, simbol
terminal, simbol non-terminal, simbol awal yang dibatasi dengan aturan
produksi. Aturan produksi merupakan pusat tata bahasa yang melakukan
perincian tentang bagaimana suatu tata bahasa melakukan perubahan suatu
string ke bentuk lain. Dalam grammar, simbol terminal atau token yaitu
anggota alfabet. Kalimat yaitu string yang tersusun dari simbol terminal
(Sommerville, 2015).
Contoh simbol – simbol terminal:
1. Huruf kecil alfabet, misalnya: a, b, c
2. simbol operator, misalnya: +, -, dan ‘
3. simbol tanda baca, misalnya: (,) dan ;
Contoh simbol- simbol non-terminal:
1. huruf besar awal alfabet, misalnya: A, B, C
2. huruf S sebagai simbol awal.
Dengan grammar, suatu parser dapat menentukan struktur kalimat
gramatikal yang akan di parsing. Struktur ini disebut parse tree. Gambar
dibawah menunjukkan grammar dalam bahasa inggris. Parse tree sesuai
dengan aturan mengubah simbol awal S sampai akhir kalimat (Sommerville,
2015).
Tabel 2.2 Terminologi dari Simbol - Simbol Contoh Grammar
(Sumber: Sommerville, 2015)
S → NP + VP
NP → Determiner + noun
NP → Determiner + adjective + noun
NP → Preposition + NP
VP → Verb + NP
VP → Verb + adverb + NP
VP → Verb + adverb
VP → Adverb
21
Tabel 2.3 Keterangan Simbol Terminologi
(Sumber: Sommerville, 2015)
Terminologi Keterangan
S Sentence (kalimat)
NP Noun phrase (frasa kata
benda)
VP Verb Phrase (frasa kata
kerja)
Determiner Kata bantu
Adjective Kata sifat
Noun Kata benda
Preposition Imbuhan
Verb Kata keja
Adverb Kata keterangan
Parse tree merupakan sebuah pohon dimana akarnya (root) yaitu
sebuah simbol awal grammar, setiap node dalam (inner node) yaitu simbol
non-terminal, dan daunnya (leaf) yang dibaca dari kiri ke kanan merupakan
deretan token masukan. Parse tree ini terbentuk berdasar grammar yang
ditetapkan untuk parser (Sommerville, 2015).
22
Gambar 2.2 Parse Tree (Pohon Parse)
(Sumber: Sommerville, 2015)
Parse tree berguna untuk menggambarkan proses mendapatkan suatu
string dengan menurunkan simbol-simbol variable menjadi simbol-simbol
terminal. Proses ini terus berjalan sampai semua simbol terminal diturunkan
menjadi simbol terminal. Gambar dibawah menunjukkan contoh sebuah tree
menguraikan kalimat “The quick brown fox jumped over the lazy dog” dalam
bahasa inggris (Sommerville, 2015).
2.7.3 Analisa Semantik
Analisa Semantik merupakan proses setelah proses scanning dan
parsing. Pada proses ini dilakaukan pemeriksaan pada struktur akhir yang
telah didapat dan diperiksa kesesuaiannya dengan komponen program yang
ada. Cara untuk melakukan interpretasi terminal terhadap suatu kalimat
yaitu dengan menghasilkan interpretasi sintak dan memberikan hasilnya
kepada semantic interpreter secara terpisah (Sommerville, 2015).
Terdapat kendala dalam menggunakan pendekatan ini, yaitu tidak
mungkin menghasilkan interpretasi sintak yang benar tanpa
mempertimbangkan beberapa informasi terminal. Contoh kalimat “armless
23
black minded touch softly” akan ditolak karena tidak sesuai dengan grammar
yang dibentuk pada analisa leksikal dan analisa sintak (Sommerville, 2015).
2.7.4 Analisa Pragmatik
Analisa Pragmatik merupakan proses untuk mengatahui maksud dari
sturktur kalimat yang diintrepretasikan. Contoh, kalimat “what is your
name?” harus diartikan sebagai grammar dalam bentuk pertanyaan
(Sommerville, 2015).
2.7.5 Semantik Grammar
Semantik grammar yaitu hasil keseluruhan proses dari analisa dan
aturan yang telah dibuat pada analisa leksikal, sintak, terminal dan analisa
terminal. Pada semantik grammar, dipakai sekumpulan aturan yang bukan
hanya bersifat sintaksis tapi juga bersifat semantik dan pragmatkis. Hasil dari
dari proses parsing menggunakan grammar tersebut yaitu beruapa
representasi semantic dari kalimat yang diolah (Sommerville, 2015).
Salah satu contoh semantik grammar yaitu context free grammar.
Context free grammar yaitu suatu aturan bebas konteks dimana pilihan non-
terminal dan aturan produksi diatur oleh semantik. Pada bagian ini akan
dijelaskan tentang beberapa isitilah penting dalam context free grammar di
antaranya terminal, non-terminal, simbol awal dan produksi-produksi
(Sommerville, 2015).
2.8 Tokenizing (Parsing)
Tokenizing merupakan proses yang dilakukan untuk merubah sebuah kalimat
menjadi lebih bermakna dengan cara memecah kalimat tersebut menjadi kata – kata
(Parsing). Di dalam tokenizing terjadi penguraian kalimat yang berisi kata- kata dan
tanda pemisah antara kata seperti titik, koma, spasi, dan tanda pemisah lainnya
menjadi hanya kata – kata saja (Ela Kumar, 2011).
Berikut yaitu cara dalam melakukan parsing suatu kalimat diantaranya (Ela
Kumar, 2011):
24
1. Top Down Parsing
Top Down Parsing dikenal dengan penguraian dari kiri kanan (left to right
parsing) yaitu dimulai dari bagian kiri kemudian diuraikan simbol non-
terminal sampai diperoleh simbol terminal.
2. Bottom Up Parsing
Pada Bottom Up Parsing dimulai dari kalimat dan kata-kata yang menyusun
kalimat tersebut digantikan oleh kategori yang relevan, maka kategori ini
ditulis ulang sesuai aturan tata bahasa.
Dalam proses parsing melakukan dua hal (Ela Kumar, 2011):
1. Parsing akan menentukan kalimat yang dapat diterima secara sintaksis benar
dan kalimat yang tidak benar secara sintaksis.
2. Jika sebuah kalimat secara sintaksis benar maka parsing bisa menentukan
struktur kalimatnya setelah memalui proses analisa leksikal dan analisa sintak
dengan membuat sebuah parse tree.
2.9 Stopword Removal / Filtering
Stopwords removal merupakan proses penghilangan kata tidak penting pada
deskripsi melalui pengecekan kata-kata hasil parsing deskripsi apakah termasuk di
dalam daftar kata tidak penting (stoplist) atau tidak. Jika termasuk di dalam stoplist
maka kata-kata tersebut akan di-remove dari deskripsi sehingga kata-kata yang
tersisa di dalam deskripsi dianggap sebagai kata-kata penting atau keywords. Bisa
menggunakan algoritma stoplist (membuang kata yang kurang penting) atau
wordlist (menyimpan kata penting). Stoplist merupakan proses penghapusan kata-
kata yang sangat sering ditampilkan dalam dokumen seperti: and, or, not dan
sebagainya (Ela Kumar, 2011). Tahap filtering dapat dilihat pada gambar.
25
Gambar 2.3 Tahap Stopword Removal
(Sumber: Ela Kumar, 2011)
2.10 Stemming
Stemming yaitu proses pemetaan dan penguraian berbagai bentuk (variants)
dari suatu kata menjadi bentuk kata dasarnya (stem). Tahap stemming yaitu tahap
mencari root kata dari tiap kata hasil stopping. Pada tahap ini dilakukan proses
pengembalian berbagai bentukan kata ke dalam suatu representasi yang sama. Stem
(akar kata) yaitu bagian dari kata yang tersisa setelah dihilangkan imbuhan awalan
dan akhiran (Ela Kumar, 2011).
Proses ini juga disebut sebagai conflation. Proses stemming secara luas sudah
digunakan di dalam Information retrieval (pencarian informasi) untuk
meningkatkan kualitas informasi yang didapatkan. Kualitas informasi yang
dimaksud misalnya untuk mendapatkan hubungan antara varian kata yang satu
dengan yang lainnya (Ela Kumar, 2011). Contoh dari tahapan ini secara sederhana
dapat diilustrasikan pada gambar
Gambar 2.4 Tahap Stemming
(Sumber: Ela Kumar, 2011)
26
2.11 Python
Python merupakan bahasa pemrograman berorientasi objek tingkat tinggi
yang sangat kuat yang diciptakan oleh Guido Van Rossum pada tahun 1991. Python
termasuk bahasa pemrograman yang memilikin sintaks yang mudah digunakan, dan
juga mendukung berbagai library di dalamnya, selain itu python juga dapat
dijalankan di banyak platform dan operating (Chopra, Joshi, & Mathur, 2016).
2.11.1 Implementasi Python
Python memiliki tiga imlementasi diantaranya yaitu (Enterprise,
2017):
1. Cpython.
Classic Python merupakan yang paling cepat, paling up-to-date dan
implementasi lengkap python. Ini diimplementasikan pada C dan
dapat dijalankan hampir di semua platform.
2. Jython.
Jython merupakan implementasi python yaitu Java Virtual Machine.
Dengan mengguanakn Jython, programmer dapat menggunakan
semua library dan framework Java.
3. IronPython.
IronPython yaitu implementasi python untuk Microsoft Designer
Common Language Runtime (CLR) yang dikenal dengan .NET.
dengan IronPython programmer dapat menggunakan semua library
dan framework CLR.
2.11.2 Keunggulan Python
Python merupakan bahasa pemrograman yang memiliki banyak
library dan modul tambahan. Terdapat beberapa keunggulan Python,
diantaranya (Enterprise, 2017):
1. Mudah dipelajari
Programmer yang akrab dengan bahasa pemrograman biasa akan
menemukan kemiripan, seperti loop, conditional statement, array, dan
lain-lain.
2. Mudah untuk membaca syntax
27
Ini menghindari penggunaan tanda baca seperti {, $, / dan \.
3. Memiliki jumlah library yang besar.
Terdapat banyak library yang tersedia dan dapat di-download.
4. Python dapat diintegrasikan dengan bahasa lain.
Seperti bahasa C, C++, dan Java. Komponen yang ditulis dengan
bahasa pemrograman ini dapat disisipkan dengan Python program.
5. Python merupakan Interpreted Language
Python mendukung penuh debugging dan diagnostic yang membuat
pekerjaan menjadi lebih cepat.
6. Manajemen memori yang efisien.
Python mengguanakan garbage collection, jadi programmer tidak perlu
khawatir dengan kebocoran memori.
7. Python mendukung exception handling
Python memberikan tanda hampir semua error dengan sebuah
pengecualian.
2.12 Android
Android diciptakan oleh Andy Rubin sebagai sistem operasi mobile
berdasar modifikasi versi Linux. Android awalnya dikembangkan oleh sebuah
perusahaan pengembang yang namanya sama, Android, Inc. pada tahun 2005,
sebagai bagian strateginya dalam memasuki pasar mobile, Google membeli
Android dan mengambil alih pengembanganya sampai sekarang (Supriyanta, Pudji,
& Bekti, 2014).
Google ingin Android terbuka dan bebas, oleh karena itu sebagian besar kode
Android dilepas di bawah lisensi open source Apache, yang berarti bahwa siapapun
yang ingin menggunakan Android dapat men-download sumber kode Android
secara penuh. Terlebih lagi bagi vendor (biasanya pabrikan hardware) dapat
menambahkan ekstensi propietari pada Android dan menyesuaikan Android untuk
membedakan produk Android mereka dengan lainya. Model pengembangan ynag
sederhana ini membuat Android sangat menarik dan telah mengusik ketertarikan
banyak vendor. Terutama bagi perusahaan yang terpengaruh dengan fenomena
iPhone Apple, sebuah kesuksesan produk yang luar biasa yang merevolusi industri
28
smartphone. Perusahaan termasuk Motorola dan Sony yang selama bertahun-tahun
mengembangkan sistem operasi mobile sendiri. saat iPhone diluncurkan, banyak
perusahaan seperti ini berjuang untuk menemukan cara baru untuk merevitalisasi
produk mereka. Pabrikan ini melihat Android sebagai sebuah solusi, mereka
meneruskan untuk mendesain hardware mereka dan menggunakan Android
sebagai sistem operasi yang memberikan kekuasaanya (Supriyanta et al., 2014).
Keuntungan utama menggunakan android yaitu android menawarkan
pendekatan pada pengembangan aplikasi. Pengembang hanya perlu
mengembangkan untuk android, dan aplikasi mereka dapat dijalankan pada banyak
perangkat yang berbeda, sepanjang perangkat tersebut menggunakan Android. Pada
dunia smartphone, aplikasi yaitu bagian rantai sukses yang paling penting. Oleh
karena itu pabrikan hardware melihat Android sebagai harapan terbaiknya untuk
menantang serangan hebat iPhone, yang sudah memiliki dasar apliaksi yang besar
(Supriyanta et al., 2014).
2.12.1 Versi Android
Android telah melakukan beberapa update sejak pertama kali
diluncurkan:
Tabel 2.4 Versi Android
(Sumber: Pemrograman Android, Hamzan Wadi, 2017)
Versi Android Kode Tanggal diluncurkan
Beta 5 November 2007
1.0 23 September 2008
1.1 9 Februari 2009
1.5 Cupcake 30 April 2009
1.6 Donut 15 September 2009
2.0 Éclair 26 Oktober 2009
2.2 Proyo 20 Mei 2009
2.3 Ginger Bread 6 Desember 2010
3.0 Honeycomb 22 Februari 2011
4.0 Ice cream sandwitch 19 Oktober 2011
29
4.1 Jelly Bean 27 Juni 2012
4.4 Kitkat 31 Oktober 2013
5.0 Lolipop 25 Juni 2014
6.0 MarshMallow 5 Oktober 2015
2.12.2 Fitur
Android bersifat open source dan bebas tersedia bagi pabrikan untuk
penyesuaian, sehingga tidak ada konfigurasi hardware dan software yang
tetap. Akan tetapi Android sendiri mendukung fitur-fitur berikut (Khalilulah,
2016) :
a. Storage, menggunakan SQLLite sebuah database relasional yang ringan.
b. Conectivity, mendukung GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,
Bluetooth, Wifi, LTE dan WiMAX
c. Messaging, mendukung SMS dan MMS.
d. Web Browser, berdasar open source WebKit.
e. Media Support, mendukung berbagai tipe media, MPEG, MP4, 3GP,
JPEG, PNG dan lain-lain.
f. Hardware support, accelerometer sensor, camera, digital compas,
proximity sensor, dan GPS.
g. Multi touch, multi tasking, mendukung flash dan tethering, sharing
koneksi internet.
Secara umum sistem operasi Android terbagi ke dalam 4 lapisan, yaitu
kernel linux, libraries dan android runtime, application framework dan
application. Kernel linux merupakan dasar dari sistem operasi Android.
Lapisan di atasnya yaitu lapisan libraries. Pada lapisan ini berisi semua kode
yang menyediakan fitur utama sistem operasi Android. Sebagai contoh,
library SQLite menyediakan dukungan database sehingga sebuah aplikasi
dapat menggunakanya untuk penyimpanan data. Library WebKit
menyediakan fungsionalitas web browsing. Pada lapisan yang sama terdapat
Android Runtime, yang menyediakan seperangkat library inti yang
30
memungkinkan pengembang untuk menulis aplikasi android menggunakan
bahasa pemrograman java.
Android runtime juga termasuk Dalvik Virtual Machine, yang
memungkinkan setiap aplikasi android menjalankan prosesnya sendiri,
dengan instance Dalvik Virtual Machine -nya (aplikasi android dikompilasi
ke dalam dalvik executable). Dalvik yaitu virtual machine yang khusus
digunakan pasa Android dan optimal untuk perangkat mobile dengan baterai
dengan memori dan CPU yang terbatas. Lapisan di atasnya yaitu
application framework, yang menampakkan berbagai macam kemampuan
sistem operasi Android kepada pengembang aplikasi sehingga mereka dapat
menggunakan pada apliaksi mereka. Lapisan yang paling atas yaitu aplikasi,
pada lapisan ini kita bisa menemukan aplikasi yang dikapalkan bersama
dengan perangkat Android, seperti contacts, browser serta aplikasi-aplikasi
yang di-download dari Play Store (Khalilulah, 2016).
2.13 Android Studio
Android Studio merupakan sebuah Integrated Development
Environment (IDE) khusus untuk membangun aplikasi yang berjalan pada
platform android. Android studio ini berbasis pada IntelliJ IDEA, sebuah IDE
untuk bahasa pemrograman Java. Bahasa pemrograman utama yang
digunakan yaitu Java, sedangkan untuk membuat tampilan atau layout,
digunakan bahasa XML. Android studio juga terintegrasi dengan Android
Software Development Kit (SDK) untuk deploy ke perangkat android
(Khalilulah, 2016).
Android studio yaitu IDE (Integrated Development Environment)
resmi untuk pengembangan aplikasi Android dan bersifat open source atau
gratis. Peluncuran Android Studio ini diumumkan oleh Google pada 16 mei
2013 pada event Google I/O Conference untuk tahun 2013. Sejak saat itu,
Android Studio mengantikan Eclipse sebagai IDE resmi untuk
mengembangkan aplikasi (Khalilulah, 2016).
a. Android studio sendiri dikembangkan berdasar IntelliJ IDEA yang
mirip dengan Eclipse disertai dengan ADT plugin (Android
31
Development Tools). Android studio memiliki fitur : Projek berbasis
pada Gradle Build.
b. Refactory dan pembenahan bug yang cepat.
c. Tools baru yang bernama “Lint” dikalim dapat memonitor kecepatan,
kegunaan, serta kompetibelitas aplikasi dengan cepat.
d. Mendukung Proguard And App-signing untuk keamanan.
e. Memiliki GUI aplikasi android lebih mudah.
2.14 UML
Dalam buku “Analisis dan Perancangan Sistem” Agustinus Mujilan
mengatakan bahwa UML merupakan salah satu cara dalam menjelaskan
perancangan sistem. Unified Modeling Language (UML) yaitu sebuah bahasa
yang telah menjadi standar dalam industri untuk visualisasi, merancang dan
mendokumentasikan sistem piranti lunak. UML mendefinisikan notasi dan
syntax/semantic (Mujilan, 2013). UML dapat diibaratkan sebagai suatu blueprint
pada suatu bangunan. Desain dengan UML digunakan oleh seorang programmer
untuk melakukan pengkodean. Bisa terjadi seorang desainer yaitu juga seorang
programmer (Mujilan, 2013).
2.14.1 Use Case Diagram
Usecase Diagram menggambarkan fungsionalitas yang diharapkan dari
sebuah sistem. Yang ditekankan yaitu “apa” yang diperbuat sistem, dan
bukan “bagaimana”. Sebuah usecase merepesentasikan sebuah interaksi
antara aktor dengan sistem. Usecase merupakan sebuah pekerjaan tertentu,
misalnya login ke sistem, meng-create sebuah daftar belanja, dan sebagainya.
Seorang/sebuah aktor yaitu sebuah entitas manusia atau mesin yang
berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu
(Mujilan, 2013).
Usecase diagram dapat sangat membantu bila kita sedang menyusun
requirement sebuah sistem, mengkomunikasikan rancangan dengan klien,
dan merancang test case untuk semua feature yang ada pada sistem (Mujilan,
2013).
32
Sebuah usecase dapat meng-include fungsionalitas usecase lain sebagai
bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa usecase
yang di-include akan dipanggil setiap kali usecase yang meng-include
dieksekusi secara normal (Mujilan, 2013).
Sebuah usecase dapat di-include oleh lebih dari satu usecase lain,
sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar
fungsionalitas yang common (Mujilan, 2013). Di bawah ini yaitu simbol-
simbol dari usecase diagram, yaitu:
Tabel 2.5 Usecase Diagram
2.14.2 Activity Diagram
Dalam bukunya Mujilan mengutip materi dari Ericsson (2004) yakni
pada dasarnya activity diagram yaitu suatu ilustrasi sederhana akan apa yang
terjadi dalam aliran kerja, aktivitas apa yang dapat dilakukan secara paralel,
33
dan apakah terdapat jalur alternatif dalam aliran kerja. Di bawah ini yaitu
simbol-simbol dari activity diagram (Mujilan, 2013) :
Tabel 2.6 Activity Diagram
2.14.3 Class Diagram
Mujilan juga mengatakan bahwa Fowler (2005) menyebutkan bahwa
class diagram mendeskripsikan jenis-jenis objek dalam sistem dan berbagai
macam hubungan statis yang terdapat diantara mereka. Class diagram juga
menunjukkan properti dan operasi sebuah class dan batasan-batasan yang
terdapat dalam hubungan-hubungan objek tersebut. UML menggunakan
istilah fitur sebagai istilah umum yang meliputi properti dan operasi sebuah
class (Mujilan, 2013). Di bawah ini yaitu simbol-simbol blok diagram:
34
Tabel 2.7 Class Diagram
2.14.4 Sequence Diagram
Aunur R Mulyanto mengatakan dalam bukunya bahwa diagram ini
berguna untuk menggambarkan interaksi antar obyek dengan penekanan pada
urutan proses atau kejadian. Berikut yaitu simbol-simbol dari sequence
diagram (Mujilan, 2013), yaitu:
35
Tabel 2.8 Sequence Diagram
2.15 Flowchart
Flowchart yaitu gambaran dalam bentuk diagram alir dari algoritma –
algoritma dalam suatu program, yang menyatakan arah alur program tersebut.
Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam
segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-
alternatif lain dalam pengoperasian. Flowchart biasanya mempermudah
penyelesaian suatu masalah khususnya masalah yang perlu dipelajari dan dievaluasi
lebih lanjut (Indrajani, 2015). Berikut yaitu simbol-simbol dari flowchart, yaitu:
36
Tabel 2.9 Simbol – simbol flowchart
2.16 Waterfall
Menurut Ian Sommerville, tahapan utama dari waterfall model langsung
mencerminkan aktifitas pengembangan dasar. Terdapat 5 tahapan pada waterfall
model, yaitu requirement analysis and definition, sistem and software design,
implementation and unit testing, integration and sistem testing, dan operation and
maintenance (Sommerville, 2015). Fase-fase dalam Waterfall, yaitu:
37
Gambar 2.5 Siklus Waterfall
(Sumber : Software Engineering, Tenth Edition, Ian Sommerville 2015)
Setiap fase pada Waterfall dilakukan secara berurutan. Berikut yaitu
penjelasan dari masing-masing Fase Waterfall (Sommerville, 2015).
a. Requirement Analysis and Definition
Merupakan tahapan penetapan fitur, kendala dan tujuan sistem melalui
konsultasi dengan pengguna sistem. Semua hal tersebut akan ditetapkan
secara rinci dan berfungsi sebagai spesifikasi sistem.
b. Sistem and Software Design
Dalam tahapan ini akan dibentuk suatu arsitektur sistem berdasar
persyaratan yang telah ditetapkan. Dan juga mengidentifikasi dan
menggambarkan abstraksi dasar sistem perangkat lunak dan hubungan-
hubungannya.
c. Implementation and Unit Testing
Dalam tahapan ini, hasil dari desain perangkat lunak akan direalisasikan
sebagai satu set program atau unit program. Setiap unit akan diuji
apakah sudah memenuhi spesifikasinya.
d. Integration and Sistem Testing
Dalam tahapan ini, setiap unit program akan diintegrasikan satu sama
lain dan diuji sebagai satu sistem yang utuh untuk memastikan sistem
38
sudah memenuhi persyaratan yang ada. Setelah itu sistem akan dikirim
ke pengguna sistem.
e. Operation and Maintenance
Dalam tahapan ini, sistem diinstal dan mulai digunakan. Selain itu juga
memperbaiki error yang tidak ditemukan pada tahap pembuatan. Dalam
tahap ini juga dilakukan pengembangan sistem seperti penambahan
fitur dan fungsi baru.
Terdapat pula perbedaan antara metode waterfall dengan metode
prototype, Tabel dibawah ini yaitu penjelasan dari perbedaan kedua metode
SDLC tersebut, yaitu :
Tabel 2.10 Perbandingan Waterfall dengan Prototype
Kelebihan Kekurangan
Waterfall
Kualitas dari sistem yang
dihasilkan akan baik
Proses pengembangan tidak
dapat dilakukan secara
berulang sebelum terjadinya
suatu produk
Dokumen pengembangan
sistem sangat terorganisir
Kesalahan kecil akan menjadi
masalah besar jika tidak
diketahui sejak awal
pengembangan
Masih digunakan walaupun
sudah tergolong kuno, dari
pada menggunakan
pendekatan asal-asalan
Pelanggan sulit menyatakan
kebutuhan secara eksplisit
sehingga tidak
dapat mengakomodasi
ketidakpastian pada saat awal
pengembangan
Prototype
Dapat digunakan untuk
mengeksplorasi solusi
perangkat lunak dan untuk
desain antarmuka pengguna
Selama proses pengembangan,
kinerja keamanan dan
ketahanan terabaikan
39
Membantu dengan elisitasi
dan validasi persyaratan
sistem
Sulit dan mahal dalam proses
maintance
Mempersingkat waktu
pengembangan sistem
Kurang mampu beradaptasi
dengan perubahan
Dengan begitu kualitas dari sistem yang dihasilkan akan baik. Ini dikarenakan
oleh pelaksanaannya secara bertahap. Sehingga tidak terfokus pada tahapan
tertentu. Serta jika penulis menggunakan metode waterfall maka dokumen
pengembangan system sangat terorganisir, karena setiap fase harus terselesaikan
dengan lengkap sebelum melangkah ke fase berikutnya. Jadi setiap fase atau
tahapan akan mempunyai dokumen tertentu.
Metode ini masih lebih baik digunakan walaupun sudah tergolong kuno,
daripada menggunakan pendekatan asal-asalan. Selain itu, metode ini juga masih
masuk akal jika kebutuhan sudah diketahui dengan baik.
2.17 Metode Pengujian Sistem
Pengujian yaitu sebuah proses terhadap aplikasi/program untuk menemukan
segala kesalahan dan segala kemungkinan yang akan menimbulkan kesalahan
sesuai dengan spesifikasi perangkat lunak yang telah ditentukan sebelum aplikasi
tersebut diserahkan kepada pelanggan (Khalilulah, 2016).
Sementara itu testing yaitu sebuah proses yang diejawantahkan sebagai
siklus hidup dan merupakan bagian dari proses rekayasa perangkat lunak secara
terintegrasi demi memastikan kualitas dari perangkat lunak serta memenuhi
kebutuhan teknis yang telah disepakati dari awal.
Dari kedua pendapat diatas dapat disimpulkan bahwa pengujian sistem
(testing) yaitu salah satu proses penting dalam pengembangan sebuah perangkat
lunak untuk mencari kesalahan yang ada dalam sistem dan melakukan pengecekan
kualitas dari sebuah perangkat lunak.
2.17.1 Blackbox Testing
Pengujian blackbox (blackbox testing) yaitu salah satu metode
pengujian perangkat lunak yang berfokus pada sisi fungsionalitas, khususnya
40
pada input dan output aplikasi (apakah sudah sesuai dengan apa yang
diharapkan atau belum). Tahap pengujian merupakan salah satu tahap yang
harus ada dalam sebuah siklus pengembangan perangkat lunak. Ciri-ciri
blackbox testing, diantaranya sebagai berikut:
a. Blackbox testing berfokus pada kebutuhan fungsionalitas pada
software, berdasar pada spesifikasi kebutuhan dari software.
b. Blackbox testing bukan teknik alternatif dari pada whitebox testing.
Lebih dari pada itu, ia merupakan pendekatan pelengkap dalam
mencakup error dengan kelas yang berbeda dari metode whitebox
testing.
c. Blackbox testing melakukan pengujian tanpa pengetahuan detail
struktur internal dari sistem atau komponen yang di tes. Juga disebut
sebagai behavioral testing, specification-based testing, input/output
testing atau functional testing.
2.17.2 Keuntungan Blackbox Testing
Menurut (Soetam, 2011), keuntungan dari black box testing antara
lain:
a. Anggota tim tester tidak harus dari seseorang yang memiliki
kemampuan teknis di bidang pemograman.
b. Kesalahan dari perangkat lunak ataupun bug seringkali
ditemukan oleh komponen tester yang berasal dari pengguna.
c. Hasil dari black box testing dapat memperjelas kontradiksi
ataupun kerancuan yang mungkin timbul dari eksekusi sebuah
perangkat lunak.
d. Proses testing dapat dilakukan lebih cepat dibandingkan white
box testing.
Dapat diambil kesimpulan bahwa blackbox testing merupakan
pendekatan komplementer dari teknik whitebox testing yang berfokus pada
pengujian persyaratan fungsional perangkat lunak untuk mendapatkan
serangkaian kondisi input yang sesuai dengan persyaratan fungsional suatu
program.
41
2.18 Metode Pengumpulan Data
Definisi Data secara Etimologis merupakan bentuk jamak dari
DATUM yang berasal dari Bahasa Latin dan berarti "Sesuatu Yang
Diberikan". Sementara itu, menurut Siswandari, data dapat berarti fakta dari
suatu objek yang diamati, yang dapat berupa angka-angka maupun kata-kata.
Sedangkan jika dipandang dari sisi Statistika, maka data merupakan fakta-
fakta yang akan digunakan sebagai bahan penarikan kesimpulan. Penulis
menyimpulkan bahwa data yaitu sebuah fakta dari hal atau objek yang
diamati yang digunakan sebagai bahan pengambilan kesimpulan. Agar data
dapat dianalisis dan ditafsirkan dengan baik, maka harus bersifat obyektif,
relevan, up-to-date, representative (Khalilulah, 2016).
2.18.1 Jenis Data
Data dilihat dari jenisnya terdiri dari dua, yaitu:
a) Data Kuantitatif
Data yang dinyatakan dalam bentuk angka-angka atau jumlah dan
dapat diukur besar kecilnya serta bersifat obyektif sehingga dapat
ditafsirkan sama oleh orang lain. Contohnya berat badan, dan suhu
tubuh.
b) Data Kualitatif
Data yang berhubungan dengan kategorisasi atau karakteristik
dalam bentuk sifat yang tidak dapat diukur besar kecilnya.
Contohnya jenis kelamin, dan pekerjaan.
2.18.2 Metode dan Instrumen Pengumpulan Data
Metode pengumpulan data yaitu teknik atau cara-cara yang dapat
digunakan oleh peneliti untuk mengumpulan data. Sementara itu, instrument
pengumpulan data yaitu alat bantu yang dipilih dan digunakan oleh peneliti
dalam kegiatan pengumpulan data agar menjadi lebih mudah dan sistematis,
(Khalilulah, 2016).
Agar data yang dihasilkan baik dan benar, maka instrumen
pengumpulan data juga harus baik dan benar. Berikut tabel metode dan
instrument pengumpulan data:
METODOLOGI PENGEMBANGAN SISTEM
Dalam penyusunan skripsi, diperlukan data dan informasi yang mendukung
kebenran materi pembahasan yang dilakukan oleh penulis. Oleh karena itu,
dilakukan riset atau penelitian lebih dahulu untuk menunjang data dan informasi
yang diperlukan.
Adapun beberapa tahapan yang dilakukan penulis dalam penyusunan skripsi
yaitu :
3.1 Requirement Analysis and Definition
Merupakan tahapan penetapan fitur pada aplikasi tafsir mimpi, kendala dan
tujuan sistem melalui konsultasi dengan pengguna sistem. Semua hal tersebut akan
ditetapkan secara rinci dan berfungsi sebagai spesifikasi aplikasi tafsir mimpi. Data
yang diperoleh dalam penelitian ini dilakukan dengan cara sebagai berikut:
3.1.1 Kuisioner
Peneliti membuat kuesioner yang berisi pertanyaan-pertanyaan untuk
memperoleh sampel. Responden dari kuesioner ini yaitu 105 orang.
Kuesioner ini digunakan untuk pengujian sampel data ke dalam sistem.
3.1.2 Studi Pustaka
Studi literatur dilakukan dengan cara mempelajari penelitian terkait
yang bertujuan untuk mendapatkan landasan teori yang menjadi sumber data
untuk mendukung penelitian yaitu dengan memperoleh data dan informasi
yang diperlukan dari berbagai jurnal, buku dan literatur sejenis.
44
Tabel 3.1 Literatur Sejenis
No Penulis Judul Ide Pokok Kelebihan Kekurangan
1 (Nimisha
Singla,
Deepak Garg,
2012)
String Matching
Algorithms and their
Applicability in
various Applications
Makalah ini menjelaskan
penerapan berbagai algoritma
pencocokan string. Algoritma
mana yang terbaik untuk
sebuah aplikasi. Ini
menjelaskan algoritma
optimal untuk berbagai
aktivitas yang mencakup
pencocokan string sebagai
aspek fungsionalitas yang
penting.
- Penelitian ini menjelaskan
keunggulan dari masing –
masing algoritma string
matching.
- Menjelaskan
pengaplikasian dari
masing- masing
algoritma.
- Penelitian ini hanya untuk
mengetahui kinerja masing-
masing algoritma
2 (Ardi Isbad
Amar
Gurning,
Zarnelly,
Arabiatul
Penerapan Fuzzy
String Matching pada
Aplikasi Pencarian
Tugas Akhir
Mahasiswa Jurusan
Makalah ini menjelaskan
bagaimana melakukan
penerapan algoritma fuzzy
string matching untuk
pencarian tugas akhir
mahasiswa.
- Aplikasi ini membantu
dosen dalam mahasiswa
dalam pencarian tugas
akhir.
- Algoritma Levenshtein
distance dapat
- Aplikasi ini tidak dapat
menampilkan judul tugas
akhir yang berkaitan dengan
judul tugas akhir yang dicari
tidak dapat ditampilkan
apabila nilai jarak
45
Adawiyah,
2016)
Sistem Informasi
Berbasis Web
menampilkan hasil
pencarian untuk judul
tugas akhir yang
mendekati dengan judul
tugas akhir yang
diketikkan.
levenshtein yang diperoleh
terlalu besar.
3 (Hadi
Suhendro,
2014)
Pembangunan
Aplikasi Chatbot
Dokter Virtual Dengan
Pendekatan Natural
Language Processing
Penelitian ini menjelaskan
bagaiman membuat aplikasi
chatbot dokter virtual dengan
pendekatan natural language
processing untuk
memudahkah pasien
berkonsultasi kesehatan dan
mendapat informasi masalah
kesehatan.
- Dengan aplikasi ini pasien
dapat konsultasi kapan
dan dimana saja.
- Dengan pendekatan NLP
pada aplikasi virtual
chatbot, percakapan dan
diskusi terjadi layaknya
interaksi antar manusia.
- Aplikasi ini hanya
memberikan informasi
masalah kesehatan dan
penyakira umum dan ringan.
- Aplikasi ini harus terus
sering dilakukan update data
dan pattern agar pengunjung
memiliki jawaban sesuai.
46
4 (Ericky
Bobby
Ferdinanda D,
Tjokorda
Agung Budi
Wirayuda,
Arie Ardiyanti
Suryani,
2010)
Penerapan Algoritma
Levenshtein Distance
Pada Desktop Search
Berbasis Information
Retrieval
Penelitian ini menjelaskan
penerapan algoritma
Levenshtein
Distance menunjukkan bahwa
algoritma ini mampu
meningkatkan jumlah
dokumen relevan dari
seluruh dokumen yang ter-
retrieve oleh sistem.
- Penerapan algoritma
Levenshtein Distance
jumlah dokumen ter-
retrieve yang relevan
menurut relevance
judgement akan
meningkat.
- Algoritma Levenshtein
Distance dapat
diterapkan pada sebuah
search engine berbasis
Information Retrieval
untuk meranking hasil
query.
- Pada penelitian ini bahwa
dengan menggunakan
penerapan algoritma
Levenshtein Distance waktu
pemrosesan searching akan
lebih lama
47
3.2 Sistem and Software Design
Dalam tahapan ini akan dibentuk suatu arsitektur sistem berdasar
persyaratan yang telah diperoleh pada fase sebelumnya. Dan juga mengidentifikasi
dan menggambarkan abstraksi dasar aplikasi tafsir mimpi dan hubungan-
hubungannya. Berikut ini hal-hal yang perlu diidentifikasi pada fase ini, yaitu :
1. Perancangan sistem dengan UML
Pada tahap ini dilakukan perancangan proses natural language
processing pada aplikasi tafsir mimpi dengan menggunakan usecase
diagram, activity diagram, dan sequence diagram
2. Perancangan basis data
Tahap ini merupakan tahapan untuk merancang database sistem.
Perancangan tabel-tabel yang digunakan untuk pengolahan data dan
untuk diimplementasikan ke dalam sistem.
3. Perancangan antarmuka pengguna (user interface)
User interface memberikan fasilitas komunikasi antara pengguna
(user) dan sistem, memberikan berbagai fasilitas informasi dan berbagai
keterangan dengan tujuan untuk membantu mengarahkan alur
penelusuran masalah sampai dengan ditemukannya solusi. User interface
dirancang sebagai gambaran pada saat pembuatan sistem.
3.3 Implementation and Unit Testing
Tahapan ini merupakan tahap melakukan pendekatan natural language
processing secara manual dan melakukan pengkodean metode fuzzy string
matching dengan bahasa pemrograman Java dan Python, basis datanya MySQL.
Hasil dari tahap ini yaitu program komputer sesuai dengan desain yang telah
dibuat pada tahap desain. Setiap unit akan diuji apakah sudah memenuhi
spesifikasinya.
3.4 Integration and Sistem Testing
Dalam tahapan ini, setiap unit program akan diintegrasikan satu sama lain dan
diuji sebagai satu sistem yang utuh untuk memastikan sistem sudah memenuhi
persyaratan yang ada. Setelah itu sistem akan dikirim ke pengguna sistem.
48
Fase ini merupakan fase pengujian sistem yang sudah dibuat. Pada fase ini
terdapat beberapa bagian yaitu, pengujian sistem menggunakan blackbox testing.
Pengujian fokus pada aplikasi dari segi logika dan fungsional dan memastikan
bahwa semua bagian sudah diuji. Hal ini dilakukan untuk meminimalisir kesalahan
(error) dan memastikan keluaran yang dihasilkan sesuai dengan yang diinginkan.
Selain itu dilakukan skenario pengujian dengan memasukkan pertanyaan dan
jawaban ke dalam korpus oleh penulis, kemudian pertanyaan yang user masukkan
pada sistem, akan diproses dan dicari hasil jawabannya dengan mencocokan
kemiripan pada pertanyaan yang dimasukkan oleh user dengan pertanyaan yang ada
di korpus.
3.5 Operation and Maintenance
Tidak menutup kemungkinan sebuah aplikasi mengalami perubahan saat
sudah dikirimkan ke user. Perubahan bisa terjadi karena adanya kesalahan yang
muncul dan tidak terdeteksi saat pengujian atau perangkat lunak harus beradaptasi
dengan lingkungan baru. Tahap pendukung atau pemeliharaan dapat mengulangi
proses pengembangan mulai dari analisis spesifikasi untuk perubahan perangkat
lunak yang sudah ada, tapi tidak untuk membuat perangkat lunak baru.
49
3.6 Alur Kerangka Penelitian
Gambar 3.1 Alur Kerangka Penelitian
50
BAB IV
ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI DAN
PENGUJIAN SISTEM
4.1 Requirement Analysis and Definition
4.1.1 Tahap Pengumpulan Data dan Informasi
Pengumpulan data dan informasi yang penulis lekukan dengan
menggunakan kuisioner dan mendapatkan hasil sebagai berikut:
4.1.1.1 Identifikasi Pengetahuan Tentang Arti Mimpi
Gambar 4.1 Hasil Kuisioner Yang Penasaran Dengan Arti Mimpi
berdasar gambar 4.1 di atas, hasil penelitian yang penulis lakukan
kepada 105 responden, sebanyak 70.5% atau 74 responden merasa penasaran
dengan arti mimpi. Mereka selama ini tidak mengetahui arti dari mimpi yang
mereka alami dan ingin mengetahuinya arti dari mimpi yang mereka alami.
51
Gambar 4.2 Hasil Kuisioner Tentang Pentingnya Mimpi
berdasar gambar 4.2, saat ditanyakan tentang penting
pentingnya mimpi dari 105 orang, sebanyak 7.6% responden merasa
mimpi sangat penting dan 46.7% responden merasa mimpi penting
sedangkan 45.7% responde merasa mimpi tidak penting.
Gambar 4.3 Hasil Kuisioner Tentang Pengetahuan Tentang Arti Mimpi
berdasar 4.3 dari skala 1-5 dikategorikan tidak mengetahui
tentang arti mimpi dimana sebanyak 82% responden tidak mengetahui
tentang arti mimpi, sedangkan dari skala 6-10 dikategorikan
mengetahui tentang arti mimpi dimana 18% responden mengetahui
tentang arti mimpi. Pernyataan tentang pentingnya arti mimpi ini
menunjukkan masih kurangnya pengetahuan tentang arti dari mimpi
tersebut.
52
Gambar 4.4 Hasil Kuisioner Tentang Pentingnya Arti Mimpi
Kemudian gambar 4.4 sebanyak 9.5% responden (10 orang)
merasa arti mimpi sangat penting dan 49.5% responden (52 orang)
merasa penting tentang arti mimpi, sedangkan 41% responden merasa
arti mimpi tidak penting. Pernyataan ini diatas menunjukan bahwa
masih banyak yang ingin mengetahui arti dari mimpi yang dialami.
Gambar 4.5 Hasil Kuisioner Tentang Referensi Untuk Mengetahui Arti Mimpi
Kemudian dari gambar 4.5 sebanyak 31.4% responden (33
orang) mencari arti mimpi melalui internet, 29.5% responden (31
orang) bertanya ke orang lain untuk mengetahui arti mimpi, 2.9%
reposende (3 orang) memilih baca buku untuk mengetahui arti mimpi
dan 36.2% responden (38 orang) memiliki cara yang lain. Dari
53
pernyataan di atas dapat menunjukkan bahwa hanya sedikit orang yang
memilih membaca buku untuk mengetahui arti mimpi.
4.1.1.2 Hasil Kuisioner Pengalaman Menggunakan Aplikasi
Tafsir Mimpi
Gambar 4.6 Hasil Kuisioner Pengalaman Menggunakan Aplikasi Tafsir Mimpi
Lalu dari gambar 4.6 sebanyak 95.2% responden (99 orang)
tidak pernah menggunakan aplikasi tafsir mimpi. Ini membuktikan
masih banyak yang tidak pernah menggunakan aplikasi tafsir mimpi.
Dari keseluruhan data yang penulis dapatkan diatas dapat diambil
kesimpulan bahwa sebagian besar dari responden merasa mimpi itu
penting dan ingin mengetahui arti mimpi.
54
4.1.1.3 Hasil Kuisioner Perlunya Aplikasi Tafsir Mimpi
Gambar 4.7 Hasil Kuisioner Tentang Perlunya Aplikasi Tafsir Mimpi
Dan berdasar hasil gambar 4.7 sebanyak 61% responden (64
orang) membutuhkan aplikasi tafsir mimpi sedangkan 39% responden
(41 orang) merasa tidak memerlukan aplikasi tafsir mimpi.
Dari keseluruhan data yang penulis dapatkan diatas dapat
diambil kesimpulan bahwa sebagian besar responden tidak mengetahui
arti dari mimpi yang dialaminya selama ini dan ingin mengetahui arti
dari mimpi. Pada gambar 4.7 penulis membuat pertanyaan yang dapat
menjadi solusi untuk permasalahan diatas, yaitu perlunya aplikasi tafsir
mimpi.
4.1.2 Identifikasi masalah
Setelah penulis melakukan penyebaran kuisioner mengenai tafsir
mimpi dan pentingnya peran aplikasi tafsir mimpi. Permasalahan utama yang
penulis dapatkan yaitu masih banyak responden yang tidak mengetahui
pentingnya arti mimpi bagi seorang mukmin dan sedikitnya responden yang
pernah menggunakan aplikasi tafsir mimpi. Maka dari itu penulis membuat
aplikasi tafsir mimpi menurut buku kitab tafsir Ibnu Sirin, 2003. Tafsir Al-
Ahlam Al-Kabir; Takwil Sahih 1001 dan menggunakan pendekatan natural
language processing dan algoritma levenshtein distance untuk
mempermudah dalam membaca masukan dari pengguna.
55
4.1.3 Analisa Sistem Berjalan
berdasar hasil kuisioner yang dilakukan, dapat diketahui bahwa
masih banyak yang mencari tafsir mimpi menggunakan internet. Hal ini
membuat pengguna kesulitan dalam mencari tafsir mimpi, jika menggunakan
internet terdapat banyak tafsir mimpi yang tidak memiliki dasar sumber yang
jelas. Berikut yaitu skema alur dari analisa sistem berjalan.
Gambar 4.8 Skema Alur Analisa Sistem Berjalan
Pengguna mengakses internet melalui browser, lalu menuliskan tafsir
mimpi yang dicari. Browser menampilkan seluruh hasil pencarian tafsir
mimpi, lalu pengguna memilih satu-satu tafsir mimpi yang dicari. Kemudian
pengguna mendapatkan tafsir mimpi yang sesuai.
4.1.4 Analisa Sistem Usulan
Sistem usulan yang diajukan pada tahap ini berdasar identifikasi
kebutuhan dan analisa sistem berjalan, metode natural language processing
akan digunakan dalam pembuatan aplikasi tafsir mimpi. Aplikasi ini
menggunakan natural language processing serta memanfaatkan algoritma
levenshtein distance untuk mempermudah pencarian tafsir dan menggunakan
buku kitab tafsir mimpi Ibnu Sirin sebagai sumber database. Dengan
pengguna memasukan input berupa teks dan keluaran berupa teks yang
ditampilkan pada device sebagai media input dan ouput.
56
Gambar 4.9 Analisa Sistem Usulan
Gambar 4.9 menjelaskan tentang aplikasi usulan tafsir mimpi. Aplikasi
membaca input dari user yang berupa teks kemudian memprosesnya
menggunakan pendekatan natural language processing dan mencocokannya
dengan data di dalam database. Dalam sistem usulan ini digunakan django
webserver dan database MySQL. Di mana django webserver berguna untuk
memudahkan dalam proses memasukkan data tafsir ke dalam database
MySQL.
Aplikasi ini dapat di install secara offline tetapi dijalakan secara online
pada device android. User hanya diminta untuk memasukan berupa teks lalu
aplikasi akan memproses teks tersebut, dan mengeluarkan keluaran berupa
teks juga.
4.2 Sistem and software Design
4.2.1 Membangun Korpus
Dalam membangun korpus hal yang dilakukan pada penelitian ini
yaitu sebagai berikut:
1. Memotret sebanyak 2000 tafsir di dalam buku Ibnu Sirin, 2003.
Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001 menggunakan kamera
handphone dan disimpan dalam format JPG. Kemudian seluruh file
format JPG tersebut dipindahkan ke dalam komputer.
57
Gambar 4.10 Hasil Foto Pada Salah Satu Halaman Buku Tafsir
2. Lalu di komputer penulis menggunakan aplikasi Microsoft OneNote
untuk mengubah file format JPG tersebut ke dalam format TXT,
dengan cara sebagai berikut:
1. Pilih “Insert”, lalu pilih “Pictures” pada Menu Bar.
Gambar 4.11 Tahap Pilih “Insert” dan “Pictures” pada Menu Bar
58
2. Pilih file foto tafsir yang ingin diubah, lalu pilih “Insert”.
Gambar 4.12 Tahap Pilih Foto Untuk Diubah Ke Format TXT
3. Maka akan terlihat foto yang telah telah dipilih, kemudian klik
kanan pada foto, lalu pilih “Copy text from Picture”.
Gambar 4.13 Tahap pilih “Copy Text from Picture”
4. Kemudian “paste” pada halaman kosong disebelah gambar. Maka
akan terlihat tulisan yang terdapat pada gambar diubah kedalam
teks.
59
Gambar 4.14 Hasil Perubahan dari format JPG ke TXT
3. Setelah diubah ke dalam format TXT, lalu hasilnya dipindahkan dan
disimpan ke dalam database menggunakan django webserver.
Gambar 4.15 Memasukan Data Tafsir Ke Dalam Database Melalui Django
Webserver
60
4. Setelah data tafsir dipindahkan menggunakan django webserver,
maka data tafsir tersebut tersimpan di dalama database MySQL.
Gambar 4.16 Tabel Data Tafsir di Dalam Database MySQL
4.2.2 Pre-processing
1. Read File
Pada tahap ini user memasukkan kalimat atau kata, kemudian akan
dibaca karakter perkarakter oleh sistem. Pada tahap ini user
memasukkan kalimat atau pertanyaan:
String Input
dari User
String
Target
Kemarin
malam saya
bermimpi
menjadi
tukang bauh
tukang buah
Gambar 4.17 Contoh String Input User & String Target
2. Tokenizing
Pada tahap ini menjabarkan proses tokenizing dari pertanyaan yang
dituliskan oleh user. Pertama dilakukan tokenizing, ini dilakukan untuk
merubah sebuah pertanyaan tersebut menjadi lebih bermakna dengan
61
cara memecah kalimat tersebut menjadi kata – kata serta mengubahnya
menjadi huruf-huruf kecil. Berikut hasil dari tokenizing dari string input
user:
String Input dari User
kemarin
malam
saya
bermimpi
menjadi
tukang
bauh
Gambar 4.18 Hasil Tokenizing
3. Stemming
Lalu masuk tahap stemming di tahap ini dilakukan proses mengubah
kata menjadi kata dasarnya dengan menghilangkan imbuhan pada awal
kata dan akhir kata di dalam string input dari user. Dalam tahap
stemming ini menggunakan Indonesian stemmer dari python library
Sastrawi. Berikut hasil dari stemming dari sting input user:
String Input dari User
kemarin
malam
saya
mimpi
jadi
tukang
bauh
Gambar 4.19 Hasil Stemming
62
4. Stopword Removal
Pada tahap stopwords removal dilakukan penghilangan kata tidak
penting. Tahap ini dilakukan dengan menggunakan stoplist atau
wordlist. Dengan stoplist dilakukan penyaringan terhadap kata-kata
yang tidak layak atau termasuk di dalam stoplist maka kata-kata
tersebut akan dihilangkan sehingga kata-kata yang tersisa dianggap
sebagai kata-kata penting atau keyword. Berikut yaitu hasil proses
stopword removal dari string input user:
String Input dari User
tukang
bauh
Gambar 4.20 Hasil Stopword Removal
4.2.3 Penerapan Levenshtein Distance
Setelah proses preprocessing tahap selanjutnya yaitu mencocokan
string awal dari input user dengan string target pada database dengan
menggunakan metode Levenshtein Distance.
String awal (input dari user): tukang bauh
String target: tukang buah
Proses perhitungan Levenshtein Distance dapat dilihat di tabel 4.5
Keterangan: String Awal
String Target
Nilai Diff (Jarak Perbedaan)
Dari hasil perhitungan menggunakan levenshtein distance maka jarak
yang didapat dari kedua string diatas yaitu 2.
4.2.4 Penerapan Pengukuran Nilai Similarity
Setelah mendapatkan nilai jarak perbedaan dari hasil perhitungan
menggunakan levenshtein distance, makan diperlukan perhitungan untuk
mengetahui ukuran nilai similarity untuk mengetahui berapa persen tingkat
kemiripan dengan persamaan dibawah ini:
Rumus:
𝑆𝑖𝑚 = (1 −
𝑑𝑖𝑓𝑓
Max(S, T)
) × 100%
Ket: Sim: Kemiripan
Diff: Jarak Levenshtein
Max(S,T): Nilai String Terpanjang
(S
tr
in
g
T
ar
g
et
)
64
Dik: Diff = 2
Max (String Terpanjang) = 10
Penyelesaian: = (1 −
2
10
) × 100%
= (
10
10
−
2
10
) × 100%
= 80 %
Maka nilai kemiripan dari string di atas dengan string target yaitu
80% dan menampilkan hasil tafsir yang sesuai dengam isi tafsir dari string
target.
4.2.5 Tahap Perancangan sistem dengan UML
1. Usecase Diagram
Usecase diagram dapat dibuat setelah peneliti melakukan
identifikasi aktor dan identifikasi kebutuhan usecase. Berikut ini
informasi detail mengenai identifikasi aktor dan identifikasi kebutuhan
usecase. Berikut usecase yang menggambarkan kegiatan kegiatan
aktor terhadap sistem:
Gambar 4.21 Usecase Diagram
Gambar 4.8 menjelaskan mengenai usecase aplikasi tafsir mimpi,
actor yang terlibat dalam sistem ini yaitu pengguna. Dalam sistem ini,
pengguna dapat menuliskan mimpinya kedalam teks kemudian
65
diterjemahkan atau ditafsirkan kedalam bentuk teks. Berikut yaitu
skenario saat user menuliskan mimpi dan menerjemahkan mimpi.
Tabel 4.2 Usecase Naratif Fitur Menerjemahkan
Usecase Name Menggunakan Tafsir Mimpi
Usecase ID 1
Priority High
Source Analisa Sistem
Actor User
Description Usecase menuliskan mimpi dan
menerjemahkan mimpi.
Precondition Aktor harus memasukan kata
Trigger
Typical course of
events
Actor action System response
1. Memasuki
halaman beranda
2. Menampilkan
form input teks
3. Memberikan
input berupa teks
4. Sistem
menerjemahkan,
memproses dan
menampilkan hasil
berupa teks.
2. Activity diagram
Activity diagram memodelkan alur kerja (work flow) sebuah urutan
aktivitas pada suatu proses. Berikut ini yaitu activity diagram yang
menggambarkan aktivitas-aktivitas yang terjadi dalam sistem:
66
Gambar 4.22 Activity Diagram
Activity diagram pada gambar 4.9 menjelaskan hubungan antara
user dengan sistem pada fitur penafsiran. saat user membuka
aplikasi, sistem akan menampilkan halaman utama. Didalam halaman
utama terdapat text field, tombol “reset” dan tombol “go”. Text field
digunakan user untuk menuliskan input berupa teks. Kemudian tombol
“reset” Jika user ingin menghapus keseluruhan input kata yang sudah
ditulis. Jika user ingin memproses input tadi, maka user harus menekan
tombol “go” lalu sistem akan memproses dan mengecek data didalam
database dan akan ditampilkan pada device.
3. Sequence diagram
Sequence diagram menggambarkan interaksi antar objek di dalam
dan di sekitar sistem yang digambarkan terhadap waktu, atau disebut
sebagai message. Berikut ini yaitu sequence diagram untuk masing-
masing modul.
67
Gambar 4.23 Sequence Diagram
Sequence diagram pada gambar 4.10 menjelaskan fitur penafsiran
pada aplikasi bisa berjalan. Pertama user membuka aplikasi, kemudian
akan tampil halaman utama. Setelah itu user memasukan input berupa
teks didalam text field. Jika user ingin menghapus input yang sudah
ditulis maka user tekan tombol “reset”. Setelah input dituliskan oleh
user, kemudian user tekan tombol “go”, dan sistem akan memproses
dan mengecek input dengan data di database, selanjutnya sistem akan
menampilkan hasil ke user berupa teks. Jika user ingin mengulangi
memasukan input, maka user tekan tombol “retry”, maka sistem akan
menampilkan halaman utama. Apabila user selsesai menggunakan
aplikasi, maka user menekan tombol home, maka sistem akan menutup
aplikasi.
68
4. Class Diagram
Class diagram menggambarkan struktur objek sistem. Pada gambar
diatas menggambarkan tentang class diagram yang dibuat penulis.
Terlihat terdapat beberapa class yang saling berhubungan, yaitu
auth_group, auth_group_permission, auth_permission,
auth_user_groups, auth_user, auth_user_user_permission,
django_content_type, django_admin_log, django_session, dan
tafsir_tafsir.
Gambar 4.24 Class Diagram
69
4.2.6 Perancangan Antarmuka Pengguna (User Interface)
1. Desain Interface Splash Screen
Gambar 4.25 Desain Interface Splash Screen
Pada gambar 4.11 merupakan rancangan tampilan halaman
splash screen aplikasi, halaman ini akan muncul saat user membuka
aplikasi. Pada halaman ini terdapat logo aplikasi dan loading bar di
bawahnya.
70
2. Desain Interface Halaman Awal
Gambar 4.26 Desain Interface Halaman Utama
Pada gambar 4.12 merupakan rancangan tampilan halaman
utama aplikasi, halaman ini merupakan halaman utama setelah halaman
splash screen, dihalaman ini terdapat sebuah text field, tombol reset dan
tombol go.
71
3. Tampilan Hasil
Gambar 4.27 Desain Interface Halaman Hasil
Pada gambar 4.13 merupakan rancangan tampilan halaman hasil
aplikasi, halaman ini merupakan halaman yang akan menampilkan hasil
proses berupa teks yang akan ditampilkan didalam text field. Pada
halaman ini terdapat text field dan tombol retry.
4.3 Implementation
4.3.1 Implementasi Natural Language Processing
Natural language processing melakukan preprocessing terhadap
masukan berupa kalimat untuk menyerdehanakan masukan dan
mempermudah proses selanjutnya.
Langkah-langkah pemrosesan natural language processing pada
aplikasi dapat dilihat pada gambar:
72
Gambar 4.28 Implementasi NLP
Pada input data dilakukan proses tokenisasi, stemming, dan stopword
removal. Berikut penjelasan implementasi natural language processing:
Langkah 1: Tokenisasi
a) Baca inputan kata per kata
b) Mengubah huruf tiap kata menjadi huruf kecil
c) Penggal menjadi kata – kata yang terpisah.
Langkah 2: Stemming
a) Baca hasil token
b) Hitung setiap panjang token
c) Hilangkan akhiran (“-kah”, “-lah”, “-kan”, “-an”, “-pun”, -“nya”)
d) Hilangkan awalan (“men-“, “pen-“,”mem-“, “pem-“)
e) Menjadi kata dasar.
Langkah 3: Stopword Removal
a) Baca kata dasar
b) Cocokan kata dasar pada tabel stopword
c) Jika cocok maka hapus kata dasar, jika tidak cocok simpan kata
dasar
d) Hasilnya kata dasar tanpa stopword.
73
4.3.2 Implementasi Algoritma Levenshtein Distance
Algoritma levenshtein distance akan memproses teks yang telah
dipreposes sebelumnya, kegunaannya untuk mempermudah dalam
pemrosesan dan pencocokan string didalam database.
Langkah-langkah pemrosesan algoritma levenshtein distance pada
aplikasi ini dapat dilihat pada gambar
Gambar 4.29 Implementasi Levenshtein Distance
Sebelumnya, input data dilakukan proses tokenizing, stopword
removal, dan stemming untuk memudahkan proses dalam algoritma
Levenshtein Distance. Berikut penjelasan implementasi levenshtein distance:
Langkah 1: Inisialisasi
a) Hitung panjang S dan T, misalkan m dan n
b) Buat matriks berukuran 0...m baris dan 0...n kolom
c) Inisialisasi baris pertama dengan 0...n
d) Inisialisasi kolom pertama dengan 0...m
Langkah 2: Proses
a) Periksa S[i] untuk 1 < i < n
b) Periksa T[j] untuk 1 < j < m
c) Jika S[i] = T[j], maka entrinya yaitu nilai yang terletak pada tepat
didiagonal atas sebelah kiri, yaitu d[i,j] = d[i-1,j-1]
74
d) Jika S[i] ≠ T[j], maka entrinya yaitu d[i,j] minimum dari:
- Nilai yang terletak tepat diatasnya, ditambah satu, yaitu d[i,j-1]+1
- Nilai yang terletak tepat dikirinya, ditambah satu, yaitu d[i-1,j]+1
- terletak pada tepat didiagonal atas sebelah kirinya, ditambah satu,
yaitu d[i-1,j-1]+1
Langkah 3: Hasil entri matriks pada baris ke-i dan kolom ke j, yaitu d[i,j]
Langkah 2 diulang hingga entri d[m,n] ditemukan.
4.3.3 Pembuatan Kode Program Natural Language Processing
Dibawah ini merupakan kode program natural language processing
untuk memudahkan aplikasi dalam membaca dan memproses input dari user.
4.3.4 Pembuatan Kode Program Algoritma Levenshtein Distance
Berikut merupakan kode program algoritma Levenshtein Distance
agar input dari user dapat dibaca denga benar sehingga aplikasi mendapatkan
hasil output yang sesuai.
def print_tab ( d, len1, len2 ):
for y in range ( 0, len2 ):
def Tokenizing(str):
txt = str.lower().replace("-", " ")
return re.sub("[^a-z ]", "", txt)
def Stemmer(str):
ret = str.split();
s_ret = []
for i in ret:
s_ret.append(i)
return s_ret;
def StopwordRemover(str):
words = text.split(' ')
for word in words:
if self.dictionary.contains(word):
words.remove(word)
return ' '.join(words)
75
for x in range ( 0, len1 ):
print ( " {} ".format ( d [ x + y *
len1 ] ) ),
def levenshtein ( word1, word2 ):
len1 = len ( word1 ) + 1
len2 = len ( word2 ) + 1
d = [ 0 ] * ( len1 * len2 )
for i in range ( len1 ):
d [ i ] = i
for j in range ( len2 ):
d [ j * len1 ] = j
for j in range ( 1, len2 ):
for i in range ( 1, len1 ):
remove = d [ i - 1 + j * len1 ] + 1
insert = d [ i + ( j - 1 ) * len1 ] + 1
substitute = d [ i - 1 + ( j - 1 ) *
len1 ] + ( 0 if word1 [ i - 1 ] == word2 [ j - 1 ] else 1 )
d [ i + j * len1 ] = min ( remove,
insert, substitute )
#print_tab ( d, len1, len2 )
return d [ -1 ]
4.4 System Testing
Uji coba sistem dilakukan dengan beberapa cara seperti berikut:
1. Skenario Pengujian
A. Blackbox Testing
Peneliti menggunakan metode blackbox testing untuk pengujian ini.
Pengujian dilakukan dengan mengetahui fungsi yang telah ditentukan,
dilakukan untuk memperlihatkan apakah fungsi beroperasi sepenuhnya
atau tidak. Cara pengujian dilakukan dengan menjalankan sistem dan
76
melihat output-nya. Berikut ini yaitu tabel hasil pengujian blackbox
pada aplikasi yang telah dibangun:
Tabel 4.3 Blackbox Testing
No Deskripsi Hasil yang diharapkan Hasil
1. Memasukan input
berupa teks sebanyak
100 karakter
Dapat memasukan input berupa
teks sebanyak 100 karakter
Berhasil
2. Memasukan input
berupa teks sebanyak
100 karakter yang
memiliki kesalahan
ejaan.
Dapat memasukan input
berupak teks sebanyak 100
karakter yang memiliki
kesalahan ejaan.
Berhasil
2. Menjalankan tombol
“Go”
Dapat melakukan proses input
berupa teks dan menampilkan
output
Berhasil
3. Menjalankan tombol
“reset”
Dapat menghapus input Berhasil
4. Menjalankan tombol
“retry”
Dapat kembali atau
menampilkan menu utama
Berhasil
B. Skenario uji coba sistem menggunakan korpus
Skenario Pengjujian menggunakan korpus yaitu pertanyaan yang sudah
dinyatakan benar, dan diuji coba dengan memasukkan pertanyaan yang
sudah ada didalam database, sehingga keakuratan hasil dari sistem dapat
diketahui dengan baik.
C. Skenario uji coba sistem menggunakan kata baru & kesalahan ejaan
Skenario uji coba menggunakan kata baru yang berasal dari modifikasi
pertanyaan dengan kata baru. Kata baru ini terdiri dari stopword dan
kesalahan ejaan pada salah satu kata. Dalam menambahkan kata baru,
penulis mengelompokan penambahan kata baru mulai dari 1 kata baru
77
sampai 5 kata baru yang tujuannya yaitu untuk melihat kategori
pertanyaan tidak mirip jika dilakukan dengan penambahan kata baru.
2. Penentuan kategori pertanyaan
Penentuan kategori pertanyaan dilakukan dengan kategori MIRIP dan
TIDAK MIRIP, pertanyaan dianggap mirip jika melebihi threshold.
Penentuan threshold ditentukan secara bebas dan selanjutnya dilakukan
analisa pada hasil pengujian menggunakan threshold tersebut. Nilai
threshold sendiri, dimulai dari 50% seperti pada keterangan tabel
berikut:
Kategori Pertanyaan Keterangan
Mirip Sistem mengembalikan nilai persentase
yang lebih dari 50%, dan jawaban benar.
Tidak Mirip Sistem mengembalikan nilai persentase
kurang dari 50% dan tidak ada jawaban.
78
4.5 Operation and Maintenance
Mengimplementasikan hasil desain ke dalam secara keseluruhan. Berikut ini
penjelasan detail mengenai spesifikasi operasi system, yaitu:
1. Perangkat Keras
Perangkat keras yang digunakan dalam pembangunan aplikasi ini yaitu
sebuah unit laptop dengan spesifikasi sebagai berikut:
a. Processor Intel ® Core(TM) i3-4010U CPU 1.7Ghz
b. HDD 500 GB
c. Random Access Memory 12GB DDR3L
d. Keyboard dan mouse
e. Charger Adaptor Laptop
2. Perangkat Lunak
Perangkat lunak yang digunakan pernulis yaitu :
a. Windows 10 Pro – 64 bit
b. Android Studio Bundle
c. JDK 8u161
d. Phyton 2.7
e. XAMPP
79
BAB V
HASIL DAN PEMBAHASAN
5.1 Hasil Perancangan Interface
1. Tampilan Halaman Splash Screen
Gambar 5.1 Tampilan Halaman Splash Screen
Gambar 5.1 merupakan tampilan splash screen aplikasi. Halaman ini
yaitu halaman awal muncul saat pertama kali aplikasi dijalankan.
80
2. Tampilan Halaman Utama
Gambar 5.2 Tampilan Halaman Utama
Gambar 5.2 merupakan tampilan halaman utama aplikasi. Pada
halaman ini terdapat text field yang digunakan user untuk melakukan input
teks. Pada gambar dimasukkan input dengan kalimat “saya mimpi makan
daging sapi yang dibakar”.
81
3. Tampilan Halaman Hasil
Gambar 5.3 Tampilan Halaman Hasil
Gambar 5.3 merupakan tampilan halaman hasil aplikasi. Pada
halaman ini akan ditampilkan hasil dari proses input yang telah dilakukan
oleh user sebelumnya dengan outputnya yaitu “Melambangkan rasa aman
dari ketakutan, jika yang bermimpi yaitu wanita yang sedang hamil artinya
ia akan segera melahirkan seorang anak sebagaimana firman allah swt maka
tidak lama kemudian ibramin menyuguhkan daging sapi yang dipanggang.
(qs. hud 69)”.
82
5.2 Hasil Uji Coba dan Analisis Hasil
Pada bagian ini akan diuraikan hasil uji coba dengan skenario pengujian
menggunakan korpus dan skenario pengujian menggunakan penambahan kata baru
dan pengelompokan kata baru dari 1 kata baru sampai 2 kata.
5.2.1 Skenario Pengujian Dengan Menggunakan Korpus
Skenario pengujian menggunakan korpus dilakukan dengan mencoba
100 pertanyaan yang terdapat pada korpus, namun penulis hanya
mencantumkan sampai 10 pertanyaan, hasilnya seperti pada tabel di bawah
berikut:
5.2.3 Analisis Hasil Uji Coba sistem
Analisis hasil uji coba sistem pada penelitian ini, dilakukan dengan melihat
berapa persentase yang dihasilkan dan berapa jumlah kategori pertanyaan yang
mirip dari 100 pertanyaan jika dilakukan uji coba sistem dengan korpus, dan 100
pertanyaan dengan menggunakan penambahan kata baru, seperti di bawah berikut:
1. Skenario pengujian dengan menggunakan korpus
Hasil pengujian menggunakan korpus yaitu 100% dengan metode levenshtein
distance. Hal ini menunjukkan bahwa sistem sudah memberikan hasil yang
akurat untuk pertanyaan korpus, dimana pertanyaan dilakukan pada saat
pengujian yaitu memasukan pertanyaan yang terdapat pada korpus ke dalam
sistem.
2. Skenario uji coba dengan penambahan kata baru dan kesalahan ejaan
Dibawah ini yaitu statistik yang menguraikan hasil persentase penambahan 1
kata baru sampai 5 kata baru dan kesalahan ejaan dengan metode levenshten
distance.
terlihat memiliki nilai persentase yang berbeda-beda. Pada penambahan
1 kata baru terlihat memiliki persentase 100% dengan 20 pertanyaan
termasuk pada kategori pertanyaan mirip. Lalu pada penambahan 2 kata
baru menurun menjadi 95% artinya menurun 5% dengan 19 pertanyaan
termasuk ke dalam kategori pertanyaan mirip, begitupun dengan
penambahan 3 dan 4 kata baru yang masing-masing menurun 10% yang
mana pada penambahan 3 kata baru hasilnya 85% dengan jumlah
pertanyaan sebanyak 17 pertanyaan yang termasuk ke dalam kategori
pertanyaan mirip dan pada penambahan 4 kata baru hasilnya 75% dengan
jumlah pertanyaan sebanyak 15 pertanyaan yang termasuk ke dalam
kategori pertanyaan mirip . Kemudian pada penambahan 5 kata baru
menurun sebanyak 15% yaitu dengan persentase sebanyak 60% dimana
jumlah pertanyaan 12 pertanyaan yang termasuk ke dalam kategori
pertanyaan mirip.
berdasar pengujian diatas, yaitu penambahan 1 kata baru sampai dengan
5 kata baru dan kesalahaan ejaan, diperoleh hasil sebagai berikut:
1. Pada tingkat kategori pertanyaan tidak mirip meningkat sesuai dengan
penambahan penambahan kata baru dan kesalahan ejaan sehingga dapat
mempengaruhi nilai persentase yang dihasilkan.
2. Nilai threshold juga mempengaruhi hasil persentase kategori pertanyaan mirip
dan pertanyaan tidak mirip.
3. Kinerja metode levenshtein distance terbukti bekerja dengan baik hal ini
dinyatakan dengan melihat hasil persentase pada hasil pengujian yang sudah
dijelaskan sebelumnya, dimana pengujian menggunakan korpus menghasilkan
nilai 100%, juga pada pengujian menggunakan penambahan kata baru dan
kesalahan ejaan yaitu 82% dengan kategori pertanyaan mirip dan tidak mirip.
berdasar hasil dari penelitian yang penulis lakukan dapat diambil
kesimpulan bahwa:
1. Aplikasi tafsir mimpi menggunakan pendekatan natural language processing
dibuat dengan membangun penyimpanan data pertanyaan dan jawaban,
setelah itu dilakukan preprocessing pada input user yang diantaranya terdapat
tokenizing, stemming dan stopword removal. Berikutnya hasilnya
preprocessing masuk ke dalam perhitungan levenshtein distance untuk
mencocokan pertanyaan dan menampilkan jawaban yang benar.
2. Penggunaan metode levenshtein distance mengindikasikan performa yang
baik. Hal ini dapat dilihat pada pembahasan sebelumnya bahwa dengan
metode leveshtein distance menghasilkan persentase 82% pada pertanyaan
yang diuji termasuk ke dalam kategori pertanyaan mirip dan 18% termasuk
ke dalam pertanyaan tidak mirip.
6.2 Saran
Karena penelitian dan pengembangan ini sistem ini belum cukup sempurna
ada beberapa saran yang penulis dapat berikan setelah melakukan penelitian
pengembangan dan pengujian aplikasi ini seperti:
1. Dalam pengembangan selanjutnya untuk menggunakan algoritma lain
untuk menyempurnakan aplikasi ini.
2. Untuk pengembangan selanjutnya user interface aplikasi lebih menarik dan
rapi lagi.
3. Untuk pengembangan selanjutnya disarankan aplikasi ini tidak hanya dapat
digunakan pada sistem os android, disarankan membuat aplikasi dengan
sistem operasi iOS.
2. Source Code
import operator
from django.db.models import Q
from rest_framework.filters import (
SearchFilter,
OrderingFilter,
)
from rest_framework.generics import (
CreateAPIView,
ListAPIView,
UpdateAPIView,
DestroyAPIView,
RetrieveAPIView,
RetrieveUpdateAPIView,
)
from .pagination import TafsirLimitOffsetPagination,
TafsirPageNumberPagination
from .permissions import IsOwnerOrReadonly
from rest_framework.permissions import (
AllowAny,
IsAuthenticated,
IsAdminUser,
IsAuthenticatedOrReadOnly,
)
from tafsir.models import Tafsir
from .serializers import TafsirListSerializer,
TafsirDetailSerializer, TafsirCreateUpdateSerializer
import re
from Sastrawi.StopWordRemover.StopWordRemoverFactory import
StopWordRemoverFactory
factory_stopword = StopWordRemoverFactory()
stopword = factory_stopword.create_stop_word_remover()
102
class TafsirCreateAPIView(CreateAPIView):
queryset = Tafsir.objects.all()
serializer_class = TafsirCreateUpdateSerializer
permission_classes = [IsAuthenticated, IsAdminUser, ]
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def Tokenizing(str):
txt = str.lower().replace("-", " ")
return re.sub("[^a-z ]", "", txt)
def Stemming(str):
ret = str.split();
s_ret = []
for i in ret:
s_ret.append(i)
# if i not in s_ret:
# s_ret.append(i)
return s_ret;
def StopwordRemover(str):
return stopword.remove(str)
def print_tab ( d, len1, len2 ):
for y in range ( 0, len2 ):
for x in range ( 0, len1 ):
print ( " {} ".format ( d [ x + y *
len1 ] ) ),
def levenshtein ( word1, word2 ):
len1 = len ( word1 ) + 1
len2 = len ( word2 ) + 1
103
d = [ 0 ] * ( len1 * len2 )
for i in range ( len1 ):
d [ i ] = i
for j in range ( len2 ):
d [ j * len1 ] = j
for j in range ( 1, len2 ):
for i in range ( 1, len1 ):
remove = d [ i - 1 + j * len1 ] + 1
insert = d [ i + ( j - 1 ) * len1 ] + 1
substitute = d [ i - 1 + ( j - 1 ) *
len1 ] + ( 0 if word1 [ i - 1 ] == word2 [ j - 1 ] else 1 )
d [ i + j * len1 ] = min ( remove,
insert, substitute )
#print_tab ( d, len1, len2 )
return d [ -1 ]
class Doc():
def __init__(self, ID, isi):
self.ISI = isi
self.KODE = ID
self.CLEAN_ISI = self.ISI;
self.ISI_TZ = Tokenizing(self.CLEAN_ISI)
def preprocessing(self):
self.ISI_CS = CaseFolding(self.ISI)
self.ISI_SR = StopwordRemover(self.ISI_CS)
self.ISI_TZ = Tokenizing(self.ISI_SR)
self.ISI_TZ.sort()
self.CLEAN_ISI = " ".join(self.ISI_TZ);
self.STATUS = "-"
104
def getDefault(self,isi,judul,status):
self.STATUS = status
self.ISI_CS = isi
self.ISI_SR = isi
self.ISI_TZ = Tokenizing(self.ISI_SR)
self.ISI_ST = isi
self.CLEAN_ISI = self.ISI_ST ;
def getDoc(self):
self.ISI_TZ = Tokenizing(self.CLEAN_ISI)
self.ISI_TZ.sort()
return self.CLEAN_ISI;
def getDocToken(self):
return self.ISI_TZ;
def setScore(self, score):
self.SCORE = score;
def setTFIDF(self, tf,idf,tidf):
self.TF = tf
self.IDF = idf
self.TIDF = tidf
class TafsirListAPIView(ListAPIView):
serializer_class = TafsirListSerializer
filter_backends = [SearchFilter, OrderingFilter]
filter_fields = ['id','mimpi', 'arti' ,
'user__first_name']
pagination_class = TafsirPageNumberPagination
def get_queryset(self, *args, **kwargs):
queryset_list = Tafsir.objects.all()
105
query = self.request.GET.get('q')
if query:
keyword = query
kataKunci = Doc("0", keyword)
kataKunci.preprocessing()
condition = reduce(operator.or_,
[Q(mimpi__icontains=s) for s in kataKunci.CLEAN_ISI.split()])
queryset_list =
queryset_list.filter(condition).distinct()
foundKode = ""
lastLD = 1e10
for ql in queryset_list:
isiMimpi = Doc(ql.id, ql.mimpi)
kataKunci.preprocessing()
isiMimpi.preprocessing()
lev =
levenshtein(kataKunci.CLEAN_ISI, isiMimpi.CLEAN_ISI)
print ("LD '{}' and '{}' is
{}".format(kataKunci.CLEAN_ISI, isiMimpi.CLEAN_ISI, lev))
if lastLD>lev:
lastLD=lev
foundKode = isiMimpi.KODE
queryset_list = queryset_list.filter(
Q(id=foundKode)
).distinct()
return queryset_list
class TafsirUpdateAPIView(RetrieveUpdateAPIView):
queryset = Tafsir.objects.all()
serializer_class = TafsirCreateUpdateSerializer
lookup_field = "id"
# lookup_url_kwarg
106
permission_classes = [IsAuthenticatedOrReadOnly,
IsOwnerOrReadonly]
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class TafsirDeleteAPIView(DestroyAPIView):
queryset = Tafsir.objects.all()
serializer_class = TafsirDetailSerializer
lookup_field = "id"
# lookup_url_kwarg
permission_classes = [IsAuthenticatedOrReadOnly,
IsOwnerOrReadonly]
class TafsirDetailAPIView(RetrieveAPIView):
queryset = Tafsir.objects.all()
serializer_class = TafsirDetailSerializer
lookup_field = "id"
# lookup_url_kwarg











