• Tidak ada hasil yang ditemukan

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.

Dokumen terkait