SKRIPSI
Diajukan Sebagai Salah Satu Syarat untuk Memperoleh Gelar
Sarjana Komputer (S.Kom)
Oleh:
Irsyad Fadhil Muhammad
NIM : 1113091000063
i
i
i
PERNYATAAN ORISINALITAS
Penulis
i
PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI
Sebagai civitas akademik UIN Syarif Hidayatullah Jakarta, saya yang bertanda
tangan dibawah ini:
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.
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.
iv
KATA PENGANTAR
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.
vi
DAFTAR ISI
PERNYATAAN ORISINALITAS........................................................................ i
ABSTRACT .......................................................................................................... iv
1.3.3 Tools.................................................................................................. 5
vii
BAB II LANDASAN TEORI ............................................................................... 9
viii
2.13 Android Studio.................................................................................... 30
2.14 UML.................................................................................................... 31
ix
4.1 Requirement Analysis and Definition .................................................... 50
5.2.2 Skenario Pengujian Dengan Kata Baru & Kesalahan Ejaan ........... 82
x
BAB VI KESIMPULAN DAN SARAN............................................................ 89
LAMPIRAN ......................................................................................................... 92
xi
DAFTAR GAMBAR
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
xiv
BAB I
PENDAHULUAN
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
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.
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
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 V PENUTUP
Bab ini membahas mengenai hasil dan pembahasan rancangan
pembuatan aplikasi penjadwalan dengan menggunakan algoritma
genetika dan rancangan tampilan aplikasinya.
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.
memahami arti sebuah kalimat yang diberikan dalam bentuk bahasa alami
dan memberikan tanggapan yang sesuai (Rodirigues & Teixeira, 2015).
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 ) + ⋯ + 𝑑(𝑠𝑙 , 𝑡𝑙 ) … … … … … . . … … … (𝑖)
𝑙
𝐷(𝑠, 𝑡) = ∑ 𝑑(𝑠𝑖 , 𝑡𝑖 ) … … … … … … … … … … … … … … … … … … . (𝑖𝑖)
𝑖=1
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,
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
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):
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
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
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.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:
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:
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.
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
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.
BAB III
METODOLOGI PENGEMBANGAN SISTEM
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.
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.
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.
BAB IV
ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI DAN
PENGUJIAN SISTEM
Gambar 4.5 Hasil Kuisioner Tentang Referensi Untuk Mengetahui Arti Mimpi
Gambar 4.10 Hasil Foto Pada Salah Satu Halaman Buku Tafsir
Gambar 4.11 Tahap Pilih “Insert” dan “Pictures” pada Menu Bar
2. Pilih file foto tafsir yang ingin diubah, lalu pilih “Insert”.
3. Maka akan terlihat foto yang telah telah dipilih, kemudian klik
kanan pada foto, lalu pilih “Copy text from Picture”.
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
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:
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:
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
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:
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:
4. Class Diagram
3. Tampilan Hasil
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)
d = [ 0 ] * ( len1 * len2 )
BAB V
HASIL DAN PEMBAHASAN
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
penambahan kata baru dan kesalahan ejaan. Hasilnya seperti tabel di bawah
ini:
Tabel 5.2 Hasil Pengujian Dengan Kata Baru & Kesalahan Ejaan
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:
1. Threshold 50%
Tabel 5.3 Jumlah Pertanyaan Dimodifikasi pada Nilai Threshold 50%
Mirip 82 82%
Levenshtein Distance
Tidak Mirip 18 18%
Tabel 5.4 Jumlah Pertanyaan Dimodifikasi 1 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%
Mirip 20 100%
Levenshtein Distance
Tidak Mirip 0 0
Tabel 5.5 Jumlah Pertanyaan Dimodifikasi 2 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%
Mirip 19 95%
Levenshtein Distance
Tidak Mirip 2 5%
Tabel 5.6 Jumlah Pertanyaan Dimodifikasi 3 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%
Mirip 17 85%
Levenshtein Distance
Tidak Mirip 3 15%
Tabel 5.7 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%
Mirip 15 75%
Levenshtein Distance
Tidak Mirip 5 25%
Tabel 5.8 Jumlah Pertanyaan Dimodifikasi 4 Kata Baru Dan Kesalahan Ejaan Dengan
Nilai Threshold 50%
Mirip 12 60%
Levenshtein Distance
Tidak Mirip 8 40%
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%
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.
DAFTAR PUSTAKA
LAMPIRAN
1. Kuiosioner
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,
)
import re
from Sastrawi.StopWordRemover.StopWordRemoverFactory import
StopWordRemoverFactory
factory_stopword = StopWordRemoverFactory()
stopword = factory_stopword.create_stop_word_remover()
class TafsirCreateAPIView(CreateAPIView):
queryset = Tafsir.objects.all()
serializer_class = TafsirCreateUpdateSerializer
permission_classes = [IsAuthenticated, IsAdminUser, ]
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)
d = [ 0 ] * ( len1 * len2 )
class Doc():
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.STATUS = "-"
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
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
permission_classes = [IsAuthenticatedOrReadOnly,
IsOwnerOrReadonly]
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