ANALISIS DAN PERANCANGAN
3.2. Perancangan Sistem
Pada tahap ini akan menjelaskan alur dari perancangan sistem yang akan diterapkan dalam pembuatan chatbot informasi saham. Adapun proses dari alur perancangan tersebut dapat dilihat dibawah ini.
3.2.1 Arsitektur Umum
Metode yang diajukan untuk penelitian ini terdiri dari beberapa langkah. Input pertanyaan mengenai saham masuk ke tahap pre-processing yaitu melewati tahap seperti Case Folding (perubahan kata menjadi huruf kecil), Filtering (penghapusan tanda baca), Stemming (tahap mengubah kata menjadi bentuk kata dasar), Stopword Removal (menghapus kata-kata yang sering muncul). Setelah melewati tahap preprocessing maka data dibagi menjadi dua yaitu data training dan data testing. Yang mana data training berekstensi .xls menampung label pertanyaan, pola pertanyaan dan jawaban dimuat dalam bentuk pandas dataframe dan data testing berbentuk text chat yang langsung dikirim ke chatbot. Setelah melewati tahapan tersebut maka data menjadi terstruktur dan sudah masuk ke dalam proses NLP. Selanjutnya, data training akan melewati tahapan Tokenization, Indexing Word Vocabulary, Sequence of Integer, dan Padding. Kemudian, pelatihan model menggunakan algoritma LSTM dengan basis RNN dan diakhiri dengan pengujian model. Setelah data di training jadilah Learned Model yang mana data yang telah di training dapat dilakukan prediksi. Setelah itu data testing akan masuk ke Learned Model yang akan memprediksi tag (label). Kemudian fuzzy string matching akan mencocokan pola pertanyaan dan akan memilih response dan menampilkan jawaban. Untuk API Stock Market bertujuan untuk menampilkan harga saham secara real-time. Yang mana sistem akan melakukan request berupa URL (Uniform Resource Locator ) kepada API Stock Market berkaitan dengan data harga saham pada saat itu. Setelah API Stock Market menerima request dari sistem, maka akan memberikan response berupa data harga saham kepada sistem berdasarkan data API Stock Market. Adapun arsitektur umum yang menggambarkan setiap tahapan pada penelitian ini dapat dilihat pada Gambar 3.2.
Gambar 3.2 Arsitektur Umum
A. Case Folding
Case Folding merupakan proses mengubah semua karakter menjadi huruf kecil, untuk mempercepat perbandingan selama proses pengindeks-an. Proses ini dilakukan untuk mempermudah proses penghapusan karakter atau kata-kata tertentu yang tidak digunakan dalam penelitian ini. Contoh dapat dilihat pada tabel 3.1.
Tabel 3.1 Contoh Proses Case Folding
Sebelum Case Folding Setelah Case Folding Bagaimana tips dan trik dalam memulai
investasi saham?
bagaimana tips dan trik dalam memulai investasi saham?
B. Filtering
Pada tahapan ini tanda baca (seperti ? ! , / = + - \ > < ; “ ( ) {} [ ] . : | dan lainnya) akan dihapus menjadi spasi. Selama proses training tanda baca tidak dihiraukan sehingga dengan penghapusan tanda baca proses training akan menjadi lebih sederhana. Contoh penerepan filtering dapat dilihat pada tabel 3.2.
Tabel 3.2 Contoh Proses Filtering
Sebelum Filtering Setelah Filtering
Bagaimana tips dan trik dalam memulai investasi saham?
bagaimana tips dan trik dalam memulai investasi saham
C. Stemming
Proses stemming merupakan proses untuk memperkecil jumlah indeks yang berbeda dari suatu dokumen dan juga untuk melakukan pengelompokan kata-kata lain yang memiliki kata dasar dan arti yang serupa namun memiliki bentuk atau form yang berbeda karena mendapatkan imbuhan yang berbeda. Contoh pemrosesan stemming dapat dilihat pada tabel 3.3.
Tabel 3.3 Contoh Proses Stemming
Sebelum Stemming Setelah Stemming bagaimana tips dan trik dalam memulai
investasi saham
bagaimana tips dan trik mulai investasi saham
D. Stopword Removal
Pada proses ini memiliki tujuan yaitu menghapus stopword yaitu merupakan kata-kata yang sering muncul dan biasanya diabaikan dalam pemrosesan namun tidak mengubah arti dari kalimat tersebut. Penghapusan stopword bertujuan untuk mengurangi jumlah kata dalam sebuah dokumen yang nantinya akan berpengaruh dalam kecepatan dan performa dalam penerapan NLP. Contoh penerapan stopword removal dapat dilihat pada Tabel 3.4.
Tabel 3.4 Contoh Proses Stopword Removal Daftar Stopword yang dihapus
'yang', 'untuk', 'pada', 'ke', 'para', 'namun', 'menurut', 'antara', 'dia', 'dua', 'ia', 'seperti', 'jika', 'jika', 'sehingga', 'kembali', 'dan', 'tidak', 'ini', 'karena', 'kepada', 'oleh', 'saat', 'harus', 'sementara', 'setelah', 'belum', 'kami', 'sekitar', 'bagi', 'serta', 'di', 'dari', 'telah', 'sebagai', 'masih', 'hal', 'ketika', 'adalah', 'itu', 'dalam', 'bisa', 'bahwa', 'atau', 'hanya', 'kita', 'dengan', 'akan', 'juga', 'ada', 'mereka', 'sudah', 'saya', 'terhadap', 'secara', 'agar', 'lain', 'anda', 'begitu', 'mengapa', 'kenapa', 'yaitu', 'yakni', 'daripada', 'itulah', 'lagi', 'maka', 'tentang', 'demi', 'dimana', 'kemana', 'pula', 'sambil', 'sebelum', 'sesudah', 'supaya', 'guna', 'kah', 'pun', 'sampai', 'sedangkan', 'selagi', 'sementara', 'tetapi', 'apakah', 'kecuali', 'sebab', 'selain', 'seolah', 'seraya', 'seterusnya', 'tanpa', 'agak', 'boleh', 'dapat', 'dsb', 'dst', 'dll', 'dahulu', 'dulunya', 'anu', 'demikian', 'tapi', 'ingin', 'juga', 'nggak', 'mari', 'nanti', 'melainkan', 'oh', 'ok', 'seharusnya', 'sebetulnya', 'setiap', 'setidaknya', 'sesuatu', 'pasti', 'saja', 'toh', 'ya', 'walau', 'tolong', 'tentu', 'amat', 'apalagi', 'bagaimanapun'
Tabel 3.5 Contoh Proses Stopword Removal
Sebelum Stopword Removal Setelah Stopword Removal bagaimana tips dan trik dalam mulai
investasi saham
bagaimana tips trik mulai investasi saham
E. Split Dataset
Setelah melewati beberapa tahapan dan data sudah dianggap bersih, maka untuk tahap selanjutnya ialah memisahkan dataset menjadi dua yaitu data latih sebanyak 90% dari total data dan data uji sebanyak 10% dari jumlah data yang dipilih secara acak. Berikut detail pemisahan data latih dan data uji dapat dilihat pada tabel 3.6.
Tabel 3.6 Pembagian Dataset
Data Latih Data Validasi
392 44
F. Tokenization
Tokenization merupakan proses memecah string agar memisahkan menjadi beberapa bagian seperti, kata kunci, frasa, simbol, dan elemen lain yang disebut token. Dalam penelitian ini proses tokenization diperlukan untuk memisahkan setiap kata, dan rangkaian angka yang memiliki makna tertentu. Contoh data sebelum dan sesudah tokenizing dapat dilihat pada tabel 3.7.
Tabel 3.7 Contoh Proses Tokenization
Sebelum Tokenization Setelah Tokenization
bagaimana tips trik mulai investasi saham ‘bagaimana’, ‘tips’, ‘trik’, ‘mulai’,
‘investasi’, ‘saham’
G. Indexing Word Vocabulary
Indexing word vocabulary bertujuan untuk memberikan penomoran secara random dalam pola pertanyaan yang di berikan. Kata <OOV> di deskripsikan sebagai kata-kata yang tidak ada di word index. Contoh proses penerapan indexing dapat dilihat pada tabel 3.8.
Tabel 3.8 Contoh Proses Indexing Word Vocabulary
Kata Nomor Index
<OOV> 1
Bagaimana 2
Tips 3
Trik 4
Mulai 5
Investasi 6
Saham 7
H. Sequence Integer
Sequence of integer adalah proses dimana mengkonversi urutan kata yang paling sering muncul kedalam bentuk integer berdasarkan index integer yang sudah ditentukan di dalam korpus pada tahap sebelumnya. Contoh konversi teks menjadi sequence of integer dapat dilihat pada tabel 3.9.
Tabel 3.9 Contoh Proses Sequence of Integer
Teks Sequence of Integer
bagaimana tips trik mulai investasi saham [2, 3, 4, 5, 6, 7]
I. Padding
Proses padding memiliki tujuan yang sangat penting di embedding layer. Karena pada pemrosesannya semua sequences harus memiliki panjang yang sama dalam proses input di embedding layer. Panjang maksimal dari sequence text adalah 20 kata. Jadi, dalam setiap pola pertanyaan akan diubah dalam bentuk matriks yaitu sepanjang 20 kata.
Contoh konversi teks menjadi matriks dapat dilihat pada tabel 3.10.
Tabel 3.10 Hasil Konversi Teks Dalam Bentuk Matriks
array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7]])
J. Implementasi Long Short Term Memory
Adapun proses urutan dalam pembuatan model LSTM yang akan di implementasikan pada penelitian ini, diantaranya :
1. Embedding Layer sebagai layer pertama akan menggunakan vector dengan panjang 20 untuk merepresentasikan setiap kata.
2. Layer berikutnya adalah LSTM layer dengan 18 unit neuron.
3. Layer berikutnya yaitu Dropout Layer dengan 0.3.
4. Kemudian Dense Layer dengan 32 unit neuron menggunakan aktivasi relu.
5. Layer terakhir adalah Dense Layer dengan target sebanyak jumlah class atau labels menggunakan aktivasi softmax.
Menggunakan loss function categorical_crossentropy (keras) dan dengan fungsi optimasi ‘Adam’. Batch size yang digunakan adalah 64 dengan epochs berjumlah 72 dan parameter evaluasi model adalah ‘accuracy’.
K. Klasifikasi Teks Menggunakan Model yang Sudah Dilatih
Data uji yang sebelumnya sudah dilakukan tahap preprosesing, selanjutnya digunakan sebagai pengujian terhadap model yang sudah dilatih. Penelitian ini menggunakan Keras API pada proses training dan validasi menggunakan metrik ‘accuracy’ untuk menghitung tingkat akurasi model pada masing-masing data latih, data validasi, dan data uji. Untuk menghitung akurasi digunakan persamaan sebagai berikut:
Accuracy = (Number of correct prediction / Total number of prediction made) x 100
L. Implementasi Fuzzy String Matching
Setelah data yang dilatih telah melewati proses model LSTM yang mana berfungsi dalam memprediksi label maka selanjutnya dataset akan disaring dan hanya akan menampilkan data yang pelabelannya telah di prediksi sebelumnya oleh model LSTM.
Selanjutnya, fuzzy string matching akan mencocokan pertanyaan user yang di input dengan pertanyaan yang sudah ada di dalam dataset. Algoritma fuzzy string matching yang digunakan pada penelitian ini yaitu FuzzyWuzzy yang tersedia sebagai library dalam python. FuzzyWuzzy adalah library python yang digunakan untuk menerapkan fuzzy string matching dalam proses menemukan string yang cocok dengan pola pertanyaan pengguna. Pada dasarnya library ini menggunakan levenshtein distance untuk menghitung perbedaan antara urutan. Adapun proses dari pencocokan string yaitu sebagai berikut:
1. Pada tahapan pertama string akan dicocokan dengan kamus data yang ada di korpus data dan apabila memiliki kecocokan maka response akan ditampilkan.
2. Jika tahapan pertama belum mendapatkan string yang cocok, maka selanjutnya dilakukan string yang memiliki kesamaan huruf awal, huruf akhir dan string yang memiliki panjang yang sama dan jika ditemukan maka akan menampilkan response.
3. Selanjutnya jika belum ditemukannya kecocokan string maka dalam pencocokannya akan memeriksa huruf awal dan akhir tanpa menghiraukan panjang len, apabila memiliki kecocokan maka response akan ditampilkan. Penerapan pada contoh diatas berupa “bagaimana tips trik mulai investasi saham” kemudian string matching akan mencari kata pertama yang memiliki kesamaan yaitu “bagaimana”.
Selanjutnya, string akan mencari huruf akhir yang memiliki kesamaan yaitu
“saham”. Setelah string melakukan pencocokan ternyata ada kata yang memiliki kesamaan di dalam korpus data yaitu “bagaimana cara memulai investasi saham”.
Walau terlihat perbedaan pada panjang len yang terdapat pada input pola pertanyaan dan kesamaan pada korpus data, fuzzy tetap dapat menampilkan response yang sesuai dikarenakan panjang len yang berbeda di hiraukan dalam pencocokan string.
M. API Stock Market
Pada tahapan ini bertujuan untuk menampilkan harga saham secara real-time. Sistem akan mengirim url berupa https://indonesia-stock-exchange.vercel.app/api kepada PasarDana sebagai penyedia data stock market. Setelah server PasarDana menerima request url tersebut maka PasarDana akan mengirim data dalam bentuk JSON. Apabila user ingin mengetahui data mengenai harga saham maka program akan menampilkan harga saham berdasarkan data API stock market. Untuk menampilkan data harga saham menggunakan parameter sort_by berupa parameter yang berfungsi untuk menampilkan informasi saham berupa Name, Code, Last Price, Closing Price, Open Price, High Price, Low Price, Stock Up or Down/day, dan Update Date.
N. Output
Pada tahapan output, bot akan menampilkan jawaban yang sesuai mengenai saham.