tafsir mimpi Islam

 


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 

 

 

 

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 ] ) ), 

  print 

 

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 ] ) ), 

  print 

 

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