Anda di halaman 1dari 123

APLIKASI TAFSIR MIMPI MENURUT KITAB TAFSIR

MIMPI IBNU SIRIN MENGGUNAKAN PENDEKATAN


NATURAL LANGUAGE PROCESSING

SKRIPSI
Diajukan Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer (S.Kom)

Oleh:
Irsyad Fadhil Muhammad
NIM : 1113091000063

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA
2018 M / 1439 H

i
i
i
PERNYATAAN ORISINALITAS

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR


HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI
SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU
LEMBAGA MANAPUN.

Jakarta, Juli 2018

Penulis

i
PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI

Sebagai civitas akademik UIN Syarif Hidayatullah Jakarta, saya yang bertanda
tangan dibawah ini:

Nama : Irsyad Fadhil Muhammad


NIM : 1113091000063
Program Studi : Teknik Informatika
Fakultas : Sains Dan Teknologi
Jenis Karya : Skripsi

demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada


Universitas Islam Negeri Syarif Hidayatullah Jakarta Hak Bebas Royalti
Noneksklusif (Non-exclusive Royalty Free Right) atas karya ilmiah saya yang
berjudul:

APLIKASI TAFSIR MIMPI MENURUT KITAB TAFSIR MIMPI IBNU


SIRIN MENGGUNAKAN PENDEKATAN NATURAL LANGUAGE
PROCESSING
beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti
Noneksklusif ini Universitas Islam Negeri Syarif Hidayatullah Jakarta berhak
menyimpan, mengalih media/formatkan, mengelola dalam bentuk pangkalan data
(database), merawat dan mempublikasikan tugas akhir saya selama tetap
mencantumkan nama saya sebagai penulis/pencipta dan sebagai pemilik Hak.

Demikian pernyataan ini saya buat dengan sebenarnya.


Dibuat di : Jakarta
Pada tanggal : Juli 2018
Yang menyatakan

(Irsyad Fadhil Muhammad)

ii
Nama : Irsyad Fadhil M
Program Studi : Teknik Informatika
Judul : Aplikasi Tafsir Mimpi Menurut Kitab Tafsir
Mimpi Ibnu Sirin Menggunakan Pendekatan
Natural Language Processing

ABSTRAK
Salah satu cara nabi dan rasul mendapatkan wahyu dari Allah SWT adalah melalui
mimpi. Bermimpi merupakan hal yang sering terjadi pada manusia dimana mimpi
terkadang menimbulkan kesan, pertanyaan ataupun manusia mengaitkan dengan
kanyataan yang terjadi dalam kehidupannya. Mimpi ini terjadi karena dipengaruhi
kejiwaan, masalah pribadi, angan-angan dan pikiran yang mengganggu. Ada
beberapa cara yang bisa digunakan untuk dapat memperoleh informasi tafsir mimpi
yaitu dengan bertanya kepada orang, mencari dalam buku, dan pencarian
menggunakan sistem. Dengan memanfaatkan teknologi Natural Language
Processing 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
berfungsi mengambil struktur gramatikal. Algoritma levenshtein distance mencari
kesamaan atau kemiripan dalam sebuah string dan dimodifikasi dengan mengubah
suatu string menjadi string yang lain agar prosesnya menjadi lebih sederhana dan
menentukan seberapa mirip, atau berbedanya dua buah string. Mimpi yang
dimasukan dalam bentuk kalimat melewati proses Natural Language Processing
akan menghasilkan hasil tafsiran dari mimpi tersebut. Dengan Natural Language
Processing dan Algoritma Levensthein distance dapat mengoptimalkan proses dan
analisa bahasa alami.

Kata kunci: Mimpi, Tafsir, Natural Language Processing, Algoritma Levenshtein


distance

iii
Name : Irsyad Fadhil M
Program Study : Teknik Informatika
Title : Application of Dream Interpretation According to
the Commentary of the Dream Ibnu Sirin Using
the Natural Language Processing Approach

ABSTRACT
One way the prophets and apostles get the revelation from Allah is through dreams.
Dreaming is a common occurrence in humans where dreams sometimes give rise
to impressions, questions or humans attributing to the things that happen in their
lives. This dream occurs because it is influenced psychiatric, personal problems,
delusions and disturbing thoughts. There are several ways that can be used to obtain
information interpretation of the dream is to ask people, searching in books, and
search using the system. Natural Language Processing is a functioning technique to
analyze and represent human language automatically by studying mathematical and
computational models of various aspects language and development on a wide
system. Natural Language Processing used to take grammatical structures. Natural
Language Processing build output based on existing rules in the language that is
made processing object. The levenshtein distance algorithm is used to find common
ground or resemblance in a string and used for modification by altering a string
becomes another string for the process to be simpler or can also be used to
determine how similar, or different, two pieces are string. Dreams that are included
in sentence form through the process of Natural Language Processing will produce
the interpretation of the dream. With Natural Language Processing and Levensthein
distance Algorithm can optimize natural language process and analysis.

Keywords: Dream, Tafsir, Natural Language Processing, Algorithm


Levenshtein distance

iv
KATA PENGANTAR

Assalamu’alaikum Wr. Wb.


Puji syukur penulis panjatkan kehadirat Allah SWT yang telah
melimpahkan rahmat, taufik serta hidayah-Nya sehingga penulis dapat
melaksanakan dan menuliskan skripsi ini pada waktu dan tempat yang tepat dan
menyelesaikan tugas akhir skripsi dengan baik. Sholawat dan salam penulis
haturkan kepada junjungan kita baginda Nabi Muhammad SAW beserta
keluarganya, para sahabatnya serta umatnya hingga akhir zaman. Skripsi ini
merupakan salah satu tugas akhir wajib bagi mahasiswa sebagai persyaratan untuk
mendapatkan gelar Sarjana Komputer (S.Kom) pada program studi Teknik
Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif
Hidayatullah Jakarta. Sebagai bahan penulisan skripsi ini, penulis melakukannya
berdasarkan hasil penelitian, pengembangan aplikasi, dan beberapa sumber
literatur. Tak lupa pula penulis ingin mengucapkan banyak terima kasih kepada
pihak-pihak terkait lainnya yang telah banyak membimbing penulis dalam
melakukan penulisan skripsi ini, karena tanpa bimbingan dan dorongan dari semua
pihak, maka penulisan skripsi ini tidak akan berjalan dengan lancar. Selanjutnya
penulis menyampaikan ucapan terima kasih kepada :
1. Orang Tua tercinta yang telah memberikan dukungan moril dan materil ke
penulis. Tiada tutur kata selain terima kasih kepada ayah, ibu, kakak, adik,
dan rasa syukur kepada Allah S.W.T yang telah menitipkan penulis di
keluarga yang sangat penulis cintai. Terima kasih, Alhamdulillah.
2. Bapak Dr. Agus Salim, M.Si selaku Dekan Fakultas Sains dan Teknologi.
3. Ibu Arini, MT. selaku Ketua Program Studi Teknik Informatika.
4. Bapak Victor Amrizal, M. Kom dan Bapak Hendra Bayu Suseno M. Kom.,
selaku Dosen Pembimbing I dan II yang telah senantiasa membimbing
penulis.
5. Seluruh dosen dan staff UIN Jakarta khususnya Fakultas Sains dan
Teknologi yang telah memberikan ilmu dan pengalaman yang sangat
berharga bagi penulis.

v
6. Seluruh sahabat-sahabat terbaik dari Teknik Informatika angkatan 2013,
khususnya semua anak kelas TI C 2013 (Angga, Ucup, Dodi, Lay, Didi,
Jamal, Rais, Abi, Cahyo, Macia, Sisca, Calysta, Nando, Tami, Ojay, Habibi,
Taufik, Ames, Anto), serta teman-teman KKN Sahitya yang tidak bisa
disebutkan satu persatu, Terima kasih atas semangatnya!
Serta seluruh pihak yang tidak dapat disebutkan oleh penulis satu persatu
didalam selembar kertas A4. Penulis menyadari bahwa penulisan skripsi ini masih
jauh dari kata sempurna. Untuk itu, penulis memohon kritik dan saran yang
membangun untuk penulis.
Akhir kata, semoga laporan skripsi ini dapat bermanfaat bagi penulis dan
orang banyak.
Wassalamualaikum, Wr. Wb.

Jakarta, Juli 2018


Penulis

Irsyad Fadhil Muhammad


1113091000063

vi
DAFTAR ISI

LEMBAR PERSETUJUAN ................................ Error! Bookmark not defined.

PENGESAHAN UJIAN ......................................................................................... i

PERNYATAAN ORISINALITAS........................................................................ i

PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI............................... ii

ABSTRAK ............................................................................................................ iii

ABSTRACT .......................................................................................................... iv

KATA PENGANTAR ........................................................................................... v

DAFTAR ISI ........................................................................................................ vii

DAFTAR GAMBAR ........................................................................................... xii

DAFTAR TABEL .............................................................................................. xiv

BAB I PENDAHULUAN ...................................................................................... 1

1.1 Latar Belakang ......................................................................................... 1

1.2 Rumusan Masalah .................................................................................... 5

1.3 Batasan Masalah ....................................................................................... 5

1.3.1 Metodologi ........................................................................................ 5

1.3.2 Proses ................................................................................................ 5

1.3.3 Tools.................................................................................................. 5

1.4 Tujuan Penelitian ...................................................................................... 6

1.5 Manfaat Penulisan .................................................................................... 6

1.6 Metodologi Penelitian .............................................................................. 7

1.6.1 Metode Pengumpulan Data ............................................................... 7

1.6.2 Metode Perancangan Sistem ............................................................. 7

1.7 Sistematika Penulisan ............................................................................... 7

vii
BAB II LANDASAN TEORI ............................................................................... 9

2.1 Aplikasi .................................................................................................... 9

2.2 Natural Language Processing ................................................................ 10

2.2.1 Pengertian Natural Language Processing ...................................... 10

2.2.2 Natural Language Processing Area ................................................ 11

2.2.3 Aplikasi Dalam Bidang Natural Language Processing .................. 12

2.3 Fuzzy String Matching............................................................................ 13

2.4 Algoritma Levenshtein Distance ............................................................ 14

2.5 Takwil Mimpi ......................................................................................... 15

2.6 Ibnu Sirin ................................................................................................ 16

2.7 Pemahaman Kalimat ............................................................................... 17

2.7.1 Analisa Leksikal .............................................................................. 17

2.7.2 Analisa Sintak ................................................................................. 19

2.7.3 Analisa Semantik ............................................................................ 22

2.7.4 Analisa Pragmatik ........................................................................... 23

2.7.5 Semantik Grammar ......................................................................... 23

2.8 Tokenizing (Parsing) .............................................................................. 23

2.9 Stopword Removal / Filtering ................................................................ 24

2.10 Stemming ............................................................................................. 25

2.11 Python ................................................................................................. 26

2.11.1 Implementasi Python ....................................................................... 26

2.11.2 Keunggulan Python ......................................................................... 26

2.12 Android ............................................................................................... 27

2.12.1 Versi Android .................................................................................. 28

2.12.2 Fitur ................................................................................................. 29

viii
2.13 Android Studio.................................................................................... 30

2.14 UML.................................................................................................... 31

2.14.1 Use Case Diagram ........................................................................... 31

2.14.2 Activity Diagram ............................................................................. 32

2.14.3 Class Diagram ................................................................................. 33

2.14.4 Sequence Diagram .......................................................................... 34

2.15 Flowchart ............................................................................................ 35

2.16 Waterfall ............................................................................................. 36

2.17 Metode Pengujian Sistem ................................................................... 39

2.17.1 Blackbox Testing ............................................................................. 39

2.17.2 Keuntungan Blackbox Testing......................................................... 40

2.18 Metode Pengumpulan Data ................................................................. 41

2.18.1 Jenis Data ........................................................................................ 41

2.18.2 Metode dan Instrumen Pengumpulan Data ..................................... 41

BAB III METODOLOGI PENGEMBANGAN SISTEM ............................... 43

3.1 Requirement Analysis and Definition .................................................... 43

3.1.1 Kuisioner ......................................................................................... 43

3.1.2 Studi Pustaka ................................................................................... 43

3.2 Sistem and Software Design ................................................................... 47

3.3 Implementation and Unit Testing ........................................................... 47

3.4 Integration and Sistem Testing ............................................................... 47

3.5 Operation and Maintenance .................................................................... 48

3.6 Alur Kerangka Penelitian ....................................................................... 49

BAB IV ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI DAN


PENGUJIAN SISTEM ....................................................................................... 50

ix
4.1 Requirement Analysis and Definition .................................................... 50

4.1.1 Tahap Pengumpulan Data dan Informasi ........................................ 50

4.1.2 Identifikasi masalah ........................................................................ 54

4.1.3 Analisa Sistem Berjalan .................................................................. 55

4.1.4 Analisa Sistem Usulan .................................................................... 55

4.2 Sistem and software Design ................................................................... 56

4.2.1 Membangun Korpus ........................................................................ 56

4.2.2 Pre-processing ................................................................................ 60

4.2.3 Penerapan Levenshtein Distance..................................................... 62

4.2.4 Penerapan Pengukuran Nilai Similarity .......................................... 63

4.2.5 Tahap Perancangan sistem dengan UML........................................ 64

4.2.6 Perancangan Antarmuka Pengguna (User Interface)...................... 69

4.3 Implementation ....................................................................................... 71

4.3.1 Implementasi Natural Language Processing .................................. 71

4.3.2 Implementasi Algoritma Levenshtein Distance .............................. 73

4.3.3 Pembuatan Kode Program Natural Language Processing ............. 74

4.3.4 Pembuatan Kode Program Algoritma Levenshtein Distance .......... 74

4.4 System Testing ....................................................................................... 75

4.5 Operation and Maintenance .................................................................... 78

BAB V HASIL DAN PEMBAHASAN ............................................................. 79

5.1 Hasil Perancangan Interface ................................................................... 79

5.2 Hasil Uji Coba dan Analisis Hasil .......................................................... 82

5.2.1 Skenario Pengujian Dengan Menggunakan Korpus ....................... 82

5.2.2 Skenario Pengujian Dengan Kata Baru & Kesalahan Ejaan ........... 82

5.2.3 Analisis Hasil Uji Coba sistem ....................................................... 87

x
BAB VI KESIMPULAN DAN SARAN............................................................ 89

6.1 Kesimpulan ............................................................................................. 89

6.2 Saran ....................................................................................................... 89

DAFTAR PUSTAKA .......................................................................................... 90

LAMPIRAN ......................................................................................................... 92

xi
DAFTAR GAMBAR

Gambar 2.1 Skema NLP ....................................................................................... 11


Gambar 2.2 Parse Tree (Pohon Parse) .................................................................. 22
Gambar 2.3 Tahap Stopword Removal.................................................................. 25
Gambar 2.4 Tahap Stemming ................................................................................ 25
Gambar 2.5 Siklus Waterfall ................................................................................. 37
Gambar 3.1 Alur Kerangka Penelitian .................................................................. 49
Gambar 4.1 Hasil Kuisioner Yang Penasaran Dengan Arti Mimpi ...................... 50
Gambar 4.2 Hasil Kuisioner Tentang Pentingnya Mimpi ..................................... 51
Gambar 4.3 Hasil Kuisioner Tentang Pengetahuan Tentang Arti Mimpi ............. 51
Gambar 4.4 Hasil Kuisioner Tentang Pentingnya Arti Mimpi ............................. 52
Gambar 4.5 Hasil Kuisioner Tentang Referensi Untuk Mengetahui Arti Mimpi . 52
Gambar 4.6 Hasil Kuisioner Pengalaman Menggunakan Aplikasi Tafsir Mimpi 53
Gambar 4.7 Hasil Kuisioner Tentang Perlunya Aplikasi Tafsir Mimpi ............... 54
Gambar 4.8 Skema Alur Analisa Sistem Berjalan ................................................ 55
Gambar 4.9 Analisa Sistem Usulan ...................................................................... 56
Gambar 4.10 Hasil Foto Pada Salah Satu Halaman Buku Tafsir .......................... 57
Gambar 4.11 Tahap Pilih “Insert” dan “Pictures” pada Menu Bar...................... 57
Gambar 4.12 Tahap Pilih Foto Untuk Diubah Ke Format TXT ........................... 58
Gambar 4.13 Tahap pilih “Copy Text from Picture” ............................................ 58
Gambar 4.14 Hasil Perubahan dari format JPG ke TXT ...................................... 59
Gambar 4.15 Memasukan Data Tafsir Ke Dalam Database Melalui Django
Webserver .............................................................................................................. 59
Gambar 4.16 Tabel Data Tafsir di Dalam Database MySQL ............................... 60
Gambar 4.17 Contoh String Input User & String Target ...................................... 60
Gambar 4.18 Hasil Tokenizing ............................................................................. 61
Gambar 4.19 Hasil Stemming ............................................................................... 61
Gambar 4.20 Hasil Stopword Removal ................................................................ 62
Gambar 4.21 Usecase Diagram ............................................................................ 64
Gambar 4.22 Activity Diagram ............................................................................. 66

xii
Gambar 4.23 Sequence Diagram .......................................................................... 67
Gambar 4.24 Class Diagram ................................................................................. 68
Gambar 4.25 Desain Interface Splash Screen ....................................................... 69
Gambar 4.26 Desain Interface Halaman Utama ................................................... 70
Gambar 4.27 Desain Interface Halaman Hasil ..................................................... 71
Gambar 4.28 Implementasi NLP........................................................................... 72
Gambar 4.29 Implementasi Levenshtein Distance ................................................ 73
Gambar 5.1 Tampilan Halaman Splash Screen..................................................... 79
Gambar 5.2 Tampilan Halaman Utama ................................................................ 80
Gambar 5.3 Tampilan Halaman Hasil ................................................................... 81
Gambar 5.4 Hasil persentase dari penambahan 1 kata baru - 5 kata baru dengan
kesalahan ejaan...................................................................................................... 87

xiii
DAFTAR TABEL

Tabel 2.1 Matriks Perhitungan Distance ............................................................... 15


Tabel 2.2 Terminologi dari Simbol - Simbol Contoh Grammar ........................... 20
Tabel 2.3 Keterangan Simbol Terminologi ........................................................... 21
Tabel 2.4 Versi Android ........................................................................................ 28
Tabel 2.5 Usecase Diagram .................................................................................. 32
Tabel 2.6 Activity Diagram ................................................................................... 33
Tabel 2.7 Class Diagram ...................................................................................... 34
Tabel 2.8 Sequence Diagram ................................................................................ 35
Tabel 2.9 Simbol – simbol flowchart .................................................................... 36
Tabel 2.10 Perbandingan Waterfall dengan Prototype ......................................... 38
Tabel 2.11 Metode dan Instrumen Pengumpulan Data ......................................... 42
Tabel 3.1 Literatur Sejenis .................................................................................... 44
Tabel 4.1 Matriks Perhitungan Levenshtein Distance .......................................... 63
Tabel 4.2 Usecase Naratif Fitur Menerjemahkan ................................................. 65
Tabel 4.3 Blackbox Testing ................................................................................... 76
Tabel 5.1 Skenario Uji Coba Menggunakan Korpus ............................................ 82
Tabel 5.2 Hasil Pengujian Dengan Kata Baru & Kesalahan Ejaan....................... 83
Tabel 5.3 Jumlah Pertanyaan Dimodifikasi pada Nilai Threshold 50% ............... 84
Tabel 5.4 Jumlah Pertanyaan Dimodifikasi 1 Kata Baru Dan Kesalahan Ejaan
Dengan Nilai Threshold 50% ................................................................................ 84
Tabel 5.5 Jumlah Pertanyaan Dimodifikasi 2 Kata Baru Dan Kesalahan Ejaan
Dengan Nilai Threshold 50% ................................................................................ 85
Tabel 5.6 Jumlah Pertanyaan Dimodifikasi 3 Kata Baru Dan Kesalahan Ejaan
Dengan Nilai Threshold 50% ................................................................................ 85
Tabel 5.7 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan
Dengan Nilai Threshold 50% ................................................................................ 86
Tabel 5.8 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan
Dengan Nilai Threshold 50% ................................................................................ 86

xiv
BAB I
PENDAHULUAN

1.1 Latar Belakang


Dalam Al-Qur’an kata “mimpi” disebutkan dalam sejumlah surat. Salah
satunya surat Al-Isra [17]:60 yang menyatakan “Dan (ingatlah), ketika 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
(Sirin, 2003).
Dalam buku Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001 Mimpi (Sirin,
2003), zaman sekarang banyak orang yang menganggap percaya dengan mimpi
adalah 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 adalah salah satu sifat dari 46 sifat
kenabian yang masih tersisa bahkan ia adalah salah satu dari dua bagian kenabian,
karena di antara para nabi ada yang menerima wahyu mereka dengan melalui mimpi

1
2

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 adalah 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 adalah mimpi yang
mempunya pengaruh terhadap orang yang mengalaminya, mimpi ini membawa
kabar gembira dan peringatan. Mimpi ini dialami seseorang ketika 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).
Berdasarkan 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

UIN Syarif Hidayatullah Jakarta


3

akan mengeluarkan biaya. Cara ketiga dalam mencari informasi tafsir mimpi adalah
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 adalah 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 adalah sebuah tes yang mengukur
kemampuan mesin (dalam hal ini program komputer) untuk menunjukan perilaku
cerdas.

UIN Syarif Hidayatullah Jakarta


4

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 berdasarkan 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.
Berdasarkan 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

UIN Syarif Hidayatullah Jakarta


5

ini adalah memudahkan pengguna dalam mencari informasi tafsir mimpi. Di mana
masukkan pengguna berupa teks diproses dan ditampilkan dalam bentuk teks juga.
1.2 Rumusan Masalah
Dengan mempertimbangkan latar belakang masalah di atas, dapat
dirumuskan permasalahannya yaitu, bagaimana membuat Aplikasi Tafsir Mimpi
Menurut Kitab Tafsir Mimpi Ibnu Sirin Menggunakan Pendekatan Natural
Language Processing.
1.3 Batasan Masalah
Dalam penelitian ini, peneliti melakukan pembatasan masalah terhadap
masalah penelitian yang akan dilakukan, yakni:
1.3.1 Metodologi
Metode pengumpulan data yang digunakan dalam penelitian ini
adalah studi literatur, kuesioner dan studi pustaka, serta metode
pengembangan sistem yang digunakan dalam merancang aplikasi ini adalah
metode waterfall.
1.3.2 Proses
Aplikasi tafsir mimpi ini dibuat dengan ruang lingkup menafsirkan
mimpi berupa teks yang dituliskan oleh pengguna yang bertujuan
mempermudah proses penafsiran.
1.3.3 Tools
Berikut ini adalah tool yang penulis pergunakan, yaitu :
1. Aplikasi ini menggunakan pendekatan Natural Language Processing.
2. Aplikasi ini menggunakan Algoritma Levenshtein Distance untuk
proses pencocokan string.
3. Aplikasi ini dirancang untuk smartphone dengan operasi sistem
Android.
4. Desain sistem digunakan dalam perancangan aplikasi ini adalah Unified
Modelling Language (UML) yang meliputi Usecase Diagram, Activity
Diagram, Sequence Diagram dan Class Diagram

UIN Syarif Hidayatullah Jakarta


6

5. Menggunakan Microsoft OneNote sebagai pemindahan data dari format


JPG ke dalam format TXT.
6. Perancangan aplikasi menggunakan bahasa pemrograman Python,
Java, dan penyimpanan database menggunakan MySQL.
7. Stemmer menggunakan library python Sastrawi.
8. Tafsir Mimpi yang digunakan sebanyak 2000 tafsir dan diambil dari
buku Ibnu Sirin, 2003. Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001
Mimpi. Jakarta: Penerbit Cendekia.
1.4 Tujuan Penelitian
Tujuan yang ingin dicapai oleh penulis dari penelitian ini adalah
1. Membuat aplikasi tafsir mimpi yang dapat membantu menafsirkan
mimpi seseorang.
2. Menerapkan pendekatan Natural Language Processing ke aplikasi tafsir
mimpi.
3. Menerapkan algoritma Levenshtein Distance ke aplikasi tafsir mimpi.
1.5 Manfaat Penulisan
Adapun manfaat yang didapatkan adalah sebagai berikut:
1. Bagi Penulis
1. Menerapkan ilmu-ilmu yang sudah didapat saat perkuliahan.
2. Membandingkan teori yang telah didapat saat kuliah dengan
masalah yang sebenarnya.
3. Mengamati teknik-teknik yang diterapkan di lapangan dalam
bidang Teknik Informatika.
2. Bagi Masyarakat
1. Dapat menambah hasil temuan ilmiah, informasi, dan wawasan
mengenai aplikasi tafsir mimpi dengan pendekatan natural
language processing
2. Dapat memberikan manfaat bagi penafsir atau penakwil mimpi
terkait tantangan-tantangan dalam mengartikan mimpi.

UIN Syarif Hidayatullah Jakarta


7

1.6 Metodologi Penelitian


Metodologi penelitian merupakan tahapan-tahapan yang dilalui oleh peneliti
dari perumusan masalah sampai kesimpulan, yang membentuk sebuah alur hingga
sistematis. Metodologi ini digunakan sebagai pedoman peneliti dalam pelaksanaan
penelitian ini agar hasil yang dicapai tidak menyimpang dari tujuan. Metodologi
penelitian meliputi pengumpulan data hingga terbentuknya sebuah perangkat lunak
1.6.1 Metode Pengumpulan Data
Dalam pembuatan aplikasi ini, penulis terlebih dahulu melakukan
pengumpulan data terhadap user maupun informasi lainnya yang
dinilai membutuhkan aplikasi ini, yaitu
a. Studi Pustaka
Studi pustaka merupakan salah satu kegiatan penelitian yang
berfungsi sebagai landasan teori bagi penyelesaian masalah dalam
penelitian yang dilakukan.
b. Studi Lapangan
Terdapat Kuisioner dalam Studi Lapangan.
1) Kuisioner
Pengumpulan data dengan mengajukan pertanyaan tertulis
kepada responden terkait dengan permasalahan yang diambil.
1.6.2 Metode Perancangan Sistem
Untuk perancangan sistem, penulis menggunakan metode waterfall.
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.
1.7 Sistematika Penulisan
Sistematika yang dibuat pada tugas akhir ini akan dibagi dalam enam bagian,
yaitu:

UIN Syarif Hidayatullah Jakarta


8

BAB I PENDAHULUAN
Dalam bab ini membahas mengenai latar belakang penulisan,
perumusan masalah, batasan masalah, tujuan dan manfaat, metode
dan sistematika penulisan yang merupakan gambaran menyeluruh
dari penulisan skripsi ini.

BAB II LANDASAN TEORI


Dalam bab ini membahas mengenai berbagai teori yang mendasari
analisis permasalahan yang berhubungan dengan pembahasan.

BAB III METODOLOGI PENELITIAN


Bab ini berisi pembahasan atau pemaparan metode yang penulis
pakai dalam pencarian data maupun perancangan sistem yang
dilakukan pada penelitian.

BAB IV ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI


DAN PENGUJIAN SISTEM
Bab ini membahas mengenai hasil dari analisa, perancangan,
implementasi dan pengujian sistem selama penelitian ini
berlangsung.

BAB V PENUTUP
Bab ini membahas mengenai hasil dan pembahasan rancangan
pembuatan aplikasi penjadwalan dengan menggunakan algoritma
genetika dan rancangan tampilan aplikasinya.

BAB VI KESIMPULAN DAN SARAN


Pada bab ini kesimpulan dari hasil pembahasan seluruh bab serta
saran-saran yang kiranya dapat diperhatikan serta dipertimbangkan
untuk pengembangan sistem dimasa mendatang.

UIN Syarif Hidayatullah Jakarta


9

BAB II
LANDASAN TEORI

2.1 Aplikasi
Aplikasi adalah 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.
(Pramana, 2012).
Dikutip dari buku Software Engineering 10th Edition (Sommerville, 2015),
aplikasi terdiri dari berbagai macam diantaranya adalah:
a. Stand-alone application adalah aplikasi yang berdiri di dalam komputer
itu sendiri. Biasanya tidak membutuhkan koneksi network.
b. Interactive transaction-based applications adalah aplikasi yang
terkoneksi dengan komputer pusat dimana pengguna hanya
menggunakan komputernya untuk komunikasi jarak jauh.
c. Embeded control system adalah aplikasi khusus yang diciptakan untuk
mengendalikan suatu perangkat keras.
d. Batch Processing system adalah sistem bisnis yang dapat memproses
sekumpulan data yang besar.
e. Entertainment system adalah sistem yang secara pokok biasa digunakan
untuk menghibur pengguna.
f. System for modelling and simulation adalah sistem yang dibangun oleh
para pakar dan ilmuan untuk menggambarkan suatu pendekatan secara
fisik maupun proses.
g. Data collection system adalah sistem yang mampu mendapatkan data
dari sistem lain dengan berbagai sensor dan mengirimkannya pada sistem
lain.
h. System of system adalah suatu kumpulan dari banyak sistem.
Penulis menyimpulkan aplikasi adalah software atau alat terapan yang dibuat
untuk mengerjakan tugas-tugas tertentu dan memenuhi kebutuhan.

UIN Syarif Hidayatullah Jakarta


10

2.2 Natural Language Processing


2.2.1 Pengertian Natural Language Processing
Natural Language Processing adalah 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 (Ela Kumar, 2011).
Sedangkan menurut (Richard, 2015), Natural Language Processing
adalah 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 adalah 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 adalah 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 adalah

UIN Syarif Hidayatullah Jakarta


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 adalah aplikasi yang dapat
memahami bahasa manusia dan menterjemahkannya ke dalam bahasa
lain. Termasuk di dalamnya adalah Google Translate yang apabila

UIN Syarif Hidayatullah Jakarta


12

dicermati semakin membaik dalam penterjemahan bahasa. Contoh lain


lagi adalah 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 adalah berupa pertanyaan dan perintah.
5. Document classification. Sedangkan aplikasi ini adalah merupakan area
penelitian NLP yang paling sukses. Pekerjaan yang dilakukan aplikasi ini
adalah 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 adalah 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 adalah:
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 adalah:
a. Sistem otomatis pelayanan telepon.
b. Kontrol suara pada peralatan elektronik.

UIN Syarif Hidayatullah Jakarta


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 adalah 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
berdasarkan 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
berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


14

2.4 Algoritma Levenshtein Distance


Algoritma Levenshtein Distance adalah 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 adalah 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 adalah 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) adalah karakter pada posisi ke-j pada string “s” dan t(i) adalah karakter pada
posisi ke-I pada string “t” sehingga jarak Levenshtein dapat didefinisikan sebagai
(Isbad et al., 2016)
𝐷(𝑠, 𝑡) = 𝑑(𝑠1 , 𝑡1 ) + 𝑑(𝑠2 , 𝑡2 ) + ⋯ + 𝑑(𝑠𝑙 , 𝑡𝑙 ) … … … … … . . … … … (𝑖)

UIN Syarif Hidayatullah Jakarta


15

𝑙
𝐷(𝑠, 𝑡) = ∑ 𝑑(𝑠𝑖 , 𝑡𝑖 ) … … … … … … … … … … … … … … … … … … . (𝑖𝑖)
𝑖=1

Dimana: 𝑠𝑖 , 𝑡𝑖 ∈ ⋁ untuk I = 1,2,…,1


𝑑(𝑠𝑖 , 𝑡𝑖) = 0 jika 𝑠𝑖 = 𝑡𝑖 dan 𝑑(𝑠𝑖 , 𝑡𝑖) = 1 jika 𝑠𝑖 ≠ 𝑡𝑖
D(s,t) adalah 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” adalah 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 adalah sinonim dari tafsir. Kedua
takwil adalah 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,

UIN Syarif Hidayatullah Jakarta


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 adalah 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 adalah Abubakar Muhammad bin Sirin al-
Bashri adalah seorang tokoh ulama ahli fiqih dan perawi hadis dari golongan tabi’in

UIN Syarif Hidayatullah Jakarta


17

yang menetap di Bashrah. Ibnu Sirin juga terkenal kemampuannya dalam


menakwilkan mimpi (Basya, 2009).
Ayah Ibnu Sirin (nama Abu Bakr jarang digunakan) adalah salah satu dari
banyak tawanan yang diambil oleh Khalid ibn al-Walid setelah Pertempuran Ayn
al-Tamr. Dia adalah 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 (Basya, 2009).
Yang paling menonjol dari buku-buku yang dikaitkan dengannya adalah
Dreams and Interpretations. Ibn Al-Nadim mengatakan bahwa dia adalah 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

UIN Syarif Hidayatullah Jakarta


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 (Sommerville, 2015).
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 adalah 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 (Sommerville, 2015).
Tugas Analisa Leksikal:
1. Membaca source code secara karater per karakter.
2. Mengenali besaran leksikal.

UIN Syarif Hidayatullah Jakarta


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 ketika 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).

UIN Syarif Hidayatullah Jakarta


20

Grammar adalah 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 adalah
anggota alfabet. Kalimat adalah 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

UIN Syarif Hidayatullah Jakarta


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) adalah


sebuah simbol awal grammar, setiap node dalam (inner node) adalah simbol
non-terminal, dan daunnya (leaf) yang dibaca dari kiri ke kanan merupakan
deretan token masukan. Parse tree ini terbentuk berdasarkan grammar yang
ditetapkan untuk parser (Sommerville, 2015).

UIN Syarif Hidayatullah Jakarta


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
adalah 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

UIN Syarif Hidayatullah Jakarta


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 adalah 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 adalah beruapa
representasi semantic dari kalimat yang diolah (Sommerville, 2015).
Salah satu contoh semantik grammar adalah context free grammar.
Context free grammar adalah 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 adalah cara dalam melakukan parsing suatu kalimat diantaranya (Ela
Kumar, 2011):

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


25

Gambar 2.3 Tahap Stopword Removal


(Sumber: Ela Kumar, 2011)
2.10 Stemming
Stemming adalah proses pemetaan dan penguraian berbagai bentuk (variants)
dari suatu kata menjadi bentuk kata dasarnya (stem). Tahap stemming adalah 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) adalah 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)

UIN Syarif Hidayatullah Jakarta


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 adalah (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 adalah 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

UIN Syarif Hidayatullah Jakarta


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
berdasarkan 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

UIN Syarif Hidayatullah Jakarta


28

smartphone. Perusahaan termasuk Motorola dan Sony yang selama bertahun-tahun


mengembangkan sistem operasi mobile sendiri. Ketika 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 adalah 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 adalah 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

UIN Syarif Hidayatullah Jakarta


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, berdasarkan 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 adalah 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

UIN Syarif Hidayatullah Jakarta


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 adalah virtual machine yang khusus
digunakan pasa Android dan optimal untuk perangkat mobile dengan baterai
dengan memori dan CPU yang terbatas. Lapisan di atasnya adalah
application framework, yang menampakkan berbagai macam kemampuan
sistem operasi Android kepada pengembang aplikasi sehingga mereka dapat
menggunakan pada apliaksi mereka. Lapisan yang paling atas adalah 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 adalah 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 adalah 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 berdasarkan IntelliJ IDEA yang
mirip dengan Eclipse disertai dengan ADT plugin (Android

UIN Syarif Hidayatullah Jakarta


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) adalah 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 adalah juga seorang
programmer (Mujilan, 2013).
2.14.1 Use Case Diagram
Usecase Diagram menggambarkan fungsionalitas yang diharapkan dari
sebuah sistem. Yang ditekankan adalah “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 adalah 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).

UIN Syarif Hidayatullah Jakarta


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 adalah 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 adalah suatu ilustrasi sederhana akan apa yang
terjadi dalam aliran kerja, aktivitas apa yang dapat dilakukan secara paralel,

UIN Syarif Hidayatullah Jakarta


33

dan apakah terdapat jalur alternatif dalam aliran kerja. Di bawah ini adalah
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 adalah simbol-simbol blok diagram:

UIN Syarif Hidayatullah Jakarta


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 adalah simbol-simbol dari sequence
diagram (Mujilan, 2013), yaitu:

UIN Syarif Hidayatullah Jakarta


35

Tabel 2.8 Sequence Diagram

2.15 Flowchart
Flowchart adalah 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 adalah simbol-simbol dari flowchart, yaitu:

UIN Syarif Hidayatullah Jakarta


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:

UIN Syarif Hidayatullah Jakarta


37

Gambar 2.5 Siklus Waterfall


(Sumber : Software Engineering, Tenth Edition, Ian Sommerville 2015)

Setiap fase pada Waterfall dilakukan secara berurutan. Berikut adalah


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 berdasarkan
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

UIN Syarif Hidayatullah Jakarta


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 adalah penjelasan dari perbedaan kedua metode
SDLC tersebut, yaitu :
Tabel 2.10 Perbandingan Waterfall dengan Prototype
Kelebihan Kekurangan
Proses pengembangan tidak
Kualitas dari sistem yang dapat dilakukan secara
Waterfall
dihasilkan akan baik berulang sebelum terjadinya
suatu produk
Kesalahan kecil akan menjadi
Dokumen pengembangan masalah besar jika tidak
sistem sangat terorganisir diketahui sejak awal
pengembangan
Pelanggan sulit menyatakan
Masih digunakan walaupun kebutuhan secara eksplisit
sudah tergolong kuno, dari sehingga tidak
pada menggunakan dapat mengakomodasi
pendekatan asal-asalan ketidakpastian pada saat awal
pengembangan
Dapat digunakan untuk
Selama proses pengembangan,
mengeksplorasi solusi
Prototype kinerja keamanan dan
perangkat lunak dan untuk
ketahanan terabaikan
desain antarmuka pengguna

UIN Syarif Hidayatullah Jakarta


39

Membantu dengan elisitasi


Sulit dan mahal dalam proses
dan validasi persyaratan
maintance
sistem
Mempersingkat waktu Kurang mampu beradaptasi
pengembangan sistem 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 adalah 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 adalah 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) adalah 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) adalah salah satu metode
pengujian perangkat lunak yang berfokus pada sisi fungsionalitas, khususnya

UIN Syarif Hidayatullah Jakarta


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, berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


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 adalah 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 adalah teknik atau cara-cara yang dapat
digunakan oleh peneliti untuk mengumpulan data. Sementara itu, instrument
pengumpulan data adalah 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:

UIN Syarif Hidayatullah Jakarta


42

Tabel 2.11 Metode dan Instrumen Pengumpulan Data


( Sumber: Khalilulah, 2016)
No Jenis Metode Jenis Instrumen
1. Angket 1. Angket
2. Daftar Cocok
3. Skala
2. Wawancara 1. Pedoman wawancara
2. Daftar cocok
3. Observasi 1. Lembar pengamatan
2. Panduan pengamatan
3. Panduan observasi
4. Daftar cocok
4. Dokumentasi 1. Daftar cocok
2. Tabel

UIN Syarif Hidayatullah Jakarta


43

BAB III
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
adalah:
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 adalah 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.

UIN Syarif Hidayatullah Jakarta


44

Tabel 3.1 Literatur Sejenis


No Penulis Judul Ide Pokok Kelebihan Kekurangan
1 (Nimisha String Matching Makalah ini menjelaskan - Penelitian ini menjelaskan - Penelitian ini hanya untuk
Singla, Algorithms and their penerapan berbagai algoritma keunggulan dari masing – mengetahui kinerja masing-
Deepak Garg, Applicability in pencocokan string. Algoritma masing algoritma string masing algoritma
2012) various Applications mana yang terbaik untuk matching.
sebuah aplikasi. Ini - Menjelaskan
menjelaskan algoritma pengaplikasian dari
optimal untuk berbagai masing- masing
aktivitas yang mencakup algoritma.
pencocokan string sebagai
aspek fungsionalitas yang
penting.
2 (Ardi Isbad Penerapan Fuzzy Makalah ini menjelaskan - Aplikasi ini membantu - Aplikasi ini tidak dapat
Amar String Matching pada bagaimana melakukan dosen dalam mahasiswa menampilkan judul tugas
Gurning, Aplikasi Pencarian penerapan algoritma fuzzy dalam pencarian tugas akhir yang berkaitan dengan
Zarnelly, Tugas Akhir string matching untuk akhir. judul tugas akhir yang dicari
Arabiatul Mahasiswa Jurusan pencarian tugas akhir - Algoritma Levenshtein tidak dapat ditampilkan
mahasiswa. distance dapat apabila nilai jarak

UIN Syarif Hidayatullah Jakarta


45

Adawiyah, Sistem Informasi menampilkan hasil levenshtein yang diperoleh


2016) Berbasis Web pencarian untuk judul terlalu besar.
tugas akhir yang
mendekati dengan judul
tugas akhir yang
diketikkan.
3 (Hadi Pembangunan Penelitian ini menjelaskan - Dengan aplikasi ini pasien - Aplikasi ini hanya
Suhendro, Aplikasi Chatbot bagaiman membuat aplikasi dapat konsultasi kapan memberikan informasi
2014) Dokter Virtual Dengan chatbot dokter virtual dengan dan dimana saja. masalah kesehatan dan
Pendekatan Natural pendekatan natural language - Dengan pendekatan NLP penyakira umum dan ringan.
Language Processing processing untuk pada aplikasi virtual - Aplikasi ini harus terus
memudahkah pasien chatbot, percakapan dan sering dilakukan update data
berkonsultasi kesehatan dan diskusi terjadi layaknya dan pattern agar pengunjung
mendapat informasi masalah interaksi antar manusia. memiliki jawaban sesuai.
kesehatan.

UIN Syarif Hidayatullah Jakarta


46

4 (Ericky Penerapan Algoritma Penelitian ini menjelaskan - Penerapan algoritma - Pada penelitian ini bahwa
Bobby Levenshtein Distance penerapan algoritma Levenshtein Distance dengan menggunakan
Ferdinanda D, Pada Desktop Search Levenshtein jumlah dokumen ter- penerapan algoritma
Tjokorda Berbasis Information Distance menunjukkan bahwa retrieve yang relevan Levenshtein Distance waktu
Agung Budi Retrieval algoritma ini mampu menurut relevance pemrosesan searching akan
Wirayuda, meningkatkan jumlah judgement akan lebih lama
Arie Ardiyanti dokumen relevan dari meningkat.
Suryani, seluruh dokumen yang ter- - Algoritma Levenshtein
2010) retrieve oleh sistem. Distance dapat
diterapkan pada sebuah
search engine berbasis
Information Retrieval
untuk meranking hasil
query.

UIN Syarif Hidayatullah Jakarta


47

3.2 Sistem and Software Design


Dalam tahapan ini akan dibentuk suatu arsitektur sistem berdasarkan
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 adalah 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.

UIN Syarif Hidayatullah Jakarta


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 ketika
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.

UIN Syarif Hidayatullah Jakarta


49

3.6 Alur Kerangka Penelitian

Gambar 3.1 Alur Kerangka Penelitian

UIN Syarif Hidayatullah Jakarta


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

Berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


51

Gambar 4.2 Hasil Kuisioner Tentang Pentingnya Mimpi

Berdasarkan 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

Berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


54

4.1.1.3 Hasil Kuisioner Perlunya Aplikasi Tafsir Mimpi

Gambar 4.7 Hasil Kuisioner Tentang Perlunya Aplikasi Tafsir Mimpi

Dan berdasarkan 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 adalah 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.

UIN Syarif Hidayatullah Jakarta


55

4.1.3 Analisa Sistem Berjalan


Berdasarkan 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 adalah 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 berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


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
adalah 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.

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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 String
dari User Target
Kemarin tukang buah
malam saya
bermimpi
menjadi
tukang bauh
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

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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 adalah 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 adalah 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

UIN Syarif Hidayatullah Jakarta


63

Tabel 4.1 Matriks Perhitungan Levenshtein Distance


(String Awal)
j T U K A N G B A U H
i 0 1 2 3 4 5 6 7 8 9 10
T 1 0 1 2 3 4 5 6 7 8 9
U 2 1 0 1 2 3 4 5 6 7 8
(String Target)

K 3 2 1 0 1 2 3 4 5 6 7
A 4 3 2 1 0 1 2 3 4 5 6
N 5 4 3 2 1 0 1 2 3 4 5
G 6 5 4 3 2 1 0 1 2 3 4
B 7 6 5 4 3 2 1 0 1 2 3
U 8 7 6 5 4 3 2 1 1 1 2
A 9 8 7 6 5 4 3 2 1 2 2
H 10 9 8 7 6 5 4 3 2 2 2

Keterangan: String Awal


String Target
Nilai Diff (Jarak Perbedaan)

Dari hasil perhitungan menggunakan levenshtein distance maka jarak


yang didapat dari kedua string diatas adalah 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 − ) × 100%
Max(S, T)
Ket: Sim: Kemiripan
Diff: Jarak Levenshtein
Max(S,T): Nilai String Terpanjang

UIN Syarif Hidayatullah Jakarta


64

Dik: Diff =2
Max (String Terpanjang) = 10
Penyelesaian: = (1 − 2
) × 100%
10

10 2
=( − ) × 100%
10 10
= 80 %
Maka nilai kemiripan dari string di atas dengan string target adalah
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 adalah pengguna. Dalam sistem ini,
pengguna dapat menuliskan mimpinya kedalam teks kemudian

UIN Syarif Hidayatullah Jakarta


65

diterjemahkan atau ditafsirkan kedalam bentuk teks. Berikut adalah


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 Actor action System response
events
1. Memasuki 2. Menampilkan
halaman beranda form input teks
3. Memberikan 4. Sistem
input berupa teks 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 adalah activity diagram yang
menggambarkan aktivitas-aktivitas yang terjadi dalam sistem:

UIN Syarif Hidayatullah Jakarta


66

Gambar 4.22 Activity Diagram

Activity diagram pada gambar 4.9 menjelaskan hubungan antara


user dengan sistem pada fitur penafsiran. Ketika 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 adalah sequence diagram untuk masing-
masing modul.

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


68

4. Class Diagram

Gambar 4.24 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.

UIN Syarif Hidayatullah Jakarta


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 ketika user membuka
aplikasi. Pada halaman ini terdapat logo aplikasi dan loading bar di
bawahnya.

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


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:

UIN Syarif Hidayatullah Jakarta


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.

UIN Syarif Hidayatullah Jakarta


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 adalah nilai yang terletak pada tepat
didiagonal atas sebelah kiri, yaitu d[i,j] = d[i-1,j-1]

UIN Syarif Hidayatullah Jakarta


74

d) Jika S[i] ≠ T[j], maka entrinya adalah 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.
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)

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 ):

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


76

melihat output-nya. Berikut ini adalah tabel hasil pengujian blackbox


pada aplikasi yang telah dibangun:

Tabel 4.3 Blackbox Testing


No Deskripsi Hasil yang diharapkan Hasil

1. Memasukan input Dapat memasukan input berupa Berhasil


berupa teks sebanyak teks sebanyak 100 karakter
100 karakter
2. Memasukan input Dapat memasukan input Berhasil
berupa teks sebanyak berupak teks sebanyak 100
100 karakter yang karakter yang memiliki
memiliki kesalahan kesalahan ejaan.
ejaan.
2. Menjalankan tombol Dapat melakukan proses input Berhasil
“Go” berupa teks dan menampilkan
output

3. Menjalankan tombol Dapat menghapus input Berhasil


“reset”
4. Menjalankan tombol Dapat kembali atau Berhasil
“retry” menampilkan menu utama

B. Skenario uji coba sistem menggunakan korpus


Skenario Pengjujian menggunakan korpus adalah 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

UIN Syarif Hidayatullah Jakarta


77

sampai 5 kata baru yang tujuannya adalah 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.

UIN Syarif Hidayatullah Jakarta


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 adalah
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 adalah:
a. Windows 10 Pro – 64 bit
b. Android Studio Bundle
c. JDK 8u161
d. Phyton 2.7
e. XAMPP

UIN Syarif Hidayatullah Jakarta


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
adalah halaman awal muncul saat pertama kali aplikasi dijalankan.

UIN Syarif Hidayatullah Jakarta


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”.

UIN Syarif Hidayatullah Jakarta


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 adalah “Melambangkan rasa aman
dari ketakutan, jika yang bermimpi adalah 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)”.

UIN Syarif Hidayatullah Jakarta


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:
Tabel 5.1 Skenario Uji Coba Menggunakan Korpus

No. Pertanyaan Korpus Similarity Kategori

1. Ayahnya sakit 100% Mirip


2. Daging mentah 100% Mirip
3. Dikejar gajah 100% Mirip
4. Dipatuk ular 100% Mirip
5. Dokter hewan 100% Mirip
6. Gonggonga anjing 100% Mirip
7. Mandi wajib 100% Mirip
8. Membunuh singa 100% Mirip
9. Membangun kamar mandi 100% Mirip
10. Mengumandangkan adzan 100% Mirip

Pada tabel di atas merupakan hasil uji coba yang sudah dilakukan oleh
penulis, pada pengujian ini hasilnya menunjuka keakuratan sistem sudah
baik, seperti dilihat persentase similarity semuanya adalah 100%.
5.2.2 Skenario Pengujian Dengan Kata Baru & Kesalahan Ejaan
Tabel berikut ini merupakan hasil pengujian dengan menambahkan kata
baru, di mana 100 pertanyaan korpus dimodifikasi dengan menambahkan kata
baru dan kesalahan ejaan, penulis hanya mencantumkan 10 pertanyaan untuk

UIN Syarif Hidayatullah Jakarta


83

penambahan kata baru dan kesalahan ejaan. Hasilnya seperti tabel di bawah
ini:
Tabel 5.2 Hasil Pengujian Dengan Kata Baru & Kesalahan Ejaan

Persentase Sesuai Sumber


No. Pertanyaan yang dimodifikasi
Buku (Similarity)

1. Ayah dia sakti keras 81%


Makan daging mentuh pakai
2. 39%
sendok
3. Lari lari dikejar gajha 82%

4. Dipatuk ulat kobra berbisa 84%

5. Kerja jadi dokter hewna 45%

6. Mendengar gonggongan anjign 77%

7. Mimpi sedang mandi wajbi 44%

8. Saya membunuh sinag afrika 80%

9. Membuat kamar manid 80%

10. Sedang adjan didalam masjid 37%

Pada tabel di atas merupakan hasil uji coba yang dilakuka degan
menggunakan penambahan kata yang berwarna merah dan kesalahan ejaan yang
berwarna biru, ditemukannya persentase masih kurang di bawah 50% sebagaimana
penjelasan sebelumnya bahwa penentuan threshold adalah 50%. Perubahan hasil
dengan penerapan threshold dapat dilihat seperti berikut:

UIN Syarif Hidayatullah Jakarta


84

1. Threshold 50%
Tabel 5.3 Jumlah Pertanyaan Dimodifikasi pada Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 82 82%
Levenshtein Distance
Tidak Mirip 18 18%

Tabel di atas menunjukkan bahwa dengan threshold 50% sangatlah


banyak dengan metode levenshtein distance terdapat 82 pertanyaan termasuk
ke dalam kategori pertanyaan mirip dengan persentase 82%, 18 pertanyaan
pada kategori tidak mirip dengan persentase 18%.
Pada pengujian dengan penambahan kata baru, menunjukkan bahwa
penambahan kata baru dan kesalahan ejaan dapat mempengaruhi hasil
kemiripan jadi berkurang, untuk itu penulis mencoba mengelompokan
penambahan kata baru dan kesalahan ejaan dari penambahan kata baru
dengan kata baru 1 sampai 5 kata baru dengan jumlah masing-masing 20
pertanyaan. Tabel di bawah berikut merupakan hasil threshold pada
pengujian penambahan kata baru dan kesalah ejaan yang sudah
dikelompokan.
1. Penambahan dengan satu (1) kata baru dan kesalahan ejaan
Nilai Threshold 50%
Contoh pertanyaan: “Mendengar gonggongan anjign”

Tabel 5.4 Jumlah Pertanyaan Dimodifikasi 1 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 20 100%
Levenshtein Distance
Tidak Mirip 0 0

UIN Syarif Hidayatullah Jakarta


85

Pada tabel di atas menunjukkan bahwa ditemukannya hasil dengan


kategori pertanyaan mirip dengan persentase 100% dan jumlah
pertanyaan sebanyak 20 pertanyaan.
2. Penambahan dengan dua (2) kata baru dan kesalahan ejaan
Nilai Threshold 50%
Contoh Pertanyaan: “Ayah dia sakti keras”

Tabel 5.5 Jumlah Pertanyaan Dimodifikasi 2 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 19 95%
Levenshtein Distance
Tidak Mirip 2 5%

Tabel di atas menunjukan bahwa, persentase yang dihasilkan


sebanyak 95% untuk kategori pertanyaan mirip dan sebanyak 5% untuk
kategori tidak mirip.

3. Penambahan dengan dua (3) kata baru dan kesalahan ejaan


Nilai Threshold 50%
Contoh Pertanyaan: “Sedang adjan didalam masjid”

Tabel 5.6 Jumlah Pertanyaan Dimodifikasi 3 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 17 85%
Levenshtein Distance
Tidak Mirip 3 15%

Pada tabel di atas menunjukkan bahwa menghasilkan sebanyak 17


pertanyaan mirip dengan persentase 85% dan terdapat 3 pertanyaan
tidak mirip dengan persentase 15%.

UIN Syarif Hidayatullah Jakarta


86

4. Penambahan dengan dua (4) kata baru dan kesalahan ejaan


Nilai Threshold 50%
Contoh Pertanyaan: “Saya mimpi sedang membunuh sinag afrika”

Tabel 5.7 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 15 75%
Levenshtein Distance
Tidak Mirip 5 25%

Pada tabel di atas menunjukkan bahwa menghasilkan sebanyak 15


pertanyaan mirip yang termasuk kedalam kategori pertanyaan mirip
dengan persentase 75% dan terdapat 5 pertanyaan tidak mirip dengan
persentase 25%.

5. Penambahan dengan dua (5) kata baru dan kesalahan ejaan


Nilai Threshold 50%
Contoh Pertanyaan: “saya mimpi lari lari dikejar gajha afrika”

Tabel 5.8 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%

Metode Kategori Jumlah Persentase

Mirip 12 60%
Levenshtein Distance
Tidak Mirip 8 40%

Pada tabel di atas menunjukkan bahwa menghasilkan sebanyak 12


pertanyaan termasuk kategori pertanyaan mirip dengan persentase 60%
dan terdapat 8 pertanyaan tidak mirip dengan persentase 40%.

UIN Syarif Hidayatullah Jakarta


87

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 adalah 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 adalah statistik yang menguraikan hasil persentase penambahan 1
kata baru sampai 5 kata baru dan kesalahan ejaan dengan metode levenshten
distance.

Levenshtein Distance
25

20

15

10

0
1 Kata Baru 2 Kata Baru 3 Kata Baru 4 Kata Baru 5 Kata Baru
dan dan dan dan dan
Kesalahan Kesalahan Kesalahan Kesalahan Kesalahan
Ejaan Ejaan Ejaan Ejaan Ejaan
Threshold 50% 20 19 17 15 12

Gambar 5.4 Hasil persentase dari penambahan 1 kata baru - 5 kata baru dengan kesalahan
ejaan
Keterangan:
• Metode levenshtein distance menunjukan pada penambahan 1 kata baru
sampai 5 kata baru dan kesalahan ejaan dengan nilai threshold 50%

UIN Syarif Hidayatullah Jakarta


88

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.

Berdasarkan 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 adalah 82% dengan kategori pertanyaan mirip dan tidak mirip.

UIN Syarif Hidayatullah Jakarta


89

BAB VI
KESIMPULAN DAN SARAN

6.1 Kesimpulan
Berdasarkan 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.

UIN Syarif Hidayatullah Jakarta


90

DAFTAR PUSTAKA

Adriyani, N. M. M., Santiyasa, I. W., & Muliantara, A. (2012). Implementasi


Algoritma Levenshtein Distance Dan Metode Empiris Untuk Menampilkan
Saran Perbaikan Kesalahan Pengetikan Dokumen Berbahasa Indonesia. Jurnal
Elektronik Ilmu Komputer.
Basya, A. R. (2009). Mereka adalah Tabi’in. Pustaka At-Tibyan.
Busiarli, N., Aditya, L. A., & Andika, A. Y. (2016). Penerapan Algoritma Naïve
Bayes & Natural Language Processing Untuk Mengklasifikasi Jenis Berita.
Seminar Nasional Teknologi Informasi Dan Multimedia, 6–7.
Chopra, D., Joshi, N., & Mathur, I. (2016). Mastering Natural Language
Processing with Python. Packt Publishing.
Ela Kumar. (2011). Natural Language Processing. I. K. International Publishing
House.
Enterprise, J. (2017). Otodidak Pemrograman Python. Elex Media Komputindo.
Februariyanti, H., & Zuliarso, E. (2011). Membangun Aplikasi Natural Language
Processing Menggunakan Instant Messenger Untuk Informasi Bencana.
Haryanto, E. V. (2011). Rancang Bangun Prototype Mesin Pencari String
Menggunakan Metode Fuzzy String Matching. Konferensi Nasional Sistem
Dan Informatika, 76–82.
Indrajani. (2015). Database Design (Case Study All in One). Jakarta: Elex Media
Komputindo.
Isbad, A., Gurning, A., & Adawiyah, A. (2016). Penerapan Fuzzy String Matching
Pada Aplikasi Pencarian Tugas Akhir Mahasiswa Jurusan Sistem Informasi
Berbasis Web ( Studi Kasus : Fakultas Sains dan Teknologi UIN Suska Riau
). Jurnal Sistem Informasi, 2(1), 54–59.
Khalilulah, H. A. (2016). Implementasi Speech Recognition pada Aplikasi
Penerjemah Idiom Bahasa Inggris ke Bahasa Indonesia Berbasis Android, 1–
6.
Mansur, A. (2017). ISLAMIC WORLDVIEW Paradigma Intelektual Muslim. Spirit
Media.

UIN Syarif Hidayatullah Jakarta


91

Mujilan, A. (2013). Analisis dan Perancangan Sistem. Universitas Widya Mandala.


Pramana, H. W. (2012). Aplikasi Inventory Berbasis Access. Jakarta: PT.Elex
Media Komputindo.
Pustejovsky, J., & Stubbs, A. (2013). Natural Language Annotation for Machine
Learning. O’Railey Media.
Richard, M. (2015). Natural Language Processing with Java. Packt Publishing.
Rodirigues, M., & Teixeira, A. (2015). Advanced Applications of Natural Language
Processing for Performing Information Extraction. Springer.
Singla, N., & Garg, D. (2012). String Matching Algorithms and their Applicability
in various Applications. International Journal of Soft Computing and
Engineering (IJSCE), 1(6), 218–222.
Sirin, I. (2003). Tafsir Al-Ahlam Al-Kabir; Takwil Sahih 1001 Mimpi. Jakarta:
Cendekia.
Soetam, R. (2011). Rekayasa Perangkat Lunak. Jakarta: Prestasi Pustaka.
Sommerville, I. (2015). Software Engineering 10th Edition. In Software
Engineering.
Suhendro, H. (2014). Pembangunan aplikasi chatbot dokter vitual dengan
pendekatan natural language processing (.
Supriyanta, Pudji, W., & Bekti, S. (2014). Aplikasi Konversi Suara Ke Teks
Berbasis Android Menggunakan Google Speech Api. Bianglala Informatika,
2(2), 11–19.
Syaroni, M., & Munir, R. (2005). Pencocokan String Berdasarkan Kemiripan
Ucapan ( Phonetic String Matching) Dalam Bahasa Inggris, 2005(Snati).

UIN Syarif Hidayatullah Jakarta


92

LAMPIRAN

1. Kuiosioner

UIN Syarif Hidayatullah Jakarta


93

UIN Syarif Hidayatullah Jakarta


94

UIN Syarif Hidayatullah Jakarta


95

UIN Syarif Hidayatullah Jakarta


96

UIN Syarif Hidayatullah Jakarta


97

UIN Syarif Hidayatullah Jakarta


98

UIN Syarif Hidayatullah Jakarta


99

UIN Syarif Hidayatullah Jakarta


100

UIN Syarif Hidayatullah Jakarta


101

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()

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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 = "-"

UIN Syarif Hidayatullah Jakarta


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()

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta


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

UIN Syarif Hidayatullah Jakarta

Anda mungkin juga menyukai