STUDI KASUS
Kita memiliki seorang klien pemilik restoran. Pemilik restoran ini selalu meminta pelanggannya untuk memberikan penilaian secara online terhadap masakan dan pengalaman mereka selama bersantap ria di restorannya. Dia memberikan kita sekian banyak review (berupa kalimat dan berupa skala 0 atau 1, di mana 0 artinya negatif dan 1 artinya positif).
Kali ini kita disuguhi 1000 komentar dalam bahasa inggris. Kita ditugaskan untuk menganalisis sentimen negatif dan positif ini sebagai sebuah basis untuk melatih training set. Dengan demikian, ke depannya jika ada review lagi melalui media sosial, maka otomatis akan bisa terdeteksi apakah ini review positif dan negatif, tanpa harus dibaca secara manual.
Sebelum memecahkan persoalan ini melalui bahasa Python dan R, silakan download dulu datasetnya di link ini (format tsv) dan link ini (format csv).
Sebelum mulai programming, mari kita lihat dulu isi datasetnya yang memiliki 2 format yaitu tsv (tab separated values) dan csv (comma separated values). Pembaca bisa mencoba membuka kedua file ini dengan melakukan doubled click (klik 2x) di mouse untuk masing-masing file. Jika pembaca adalah pengguna Windows, maka buka file nya di Notepad. Tampilan keduanya adalah sebagai berikut:

Bisa dilihat bahwa kedua file ini berisi komentar (dalam bahasa inggris) dan angka 0 atau 1 di sebelah kanan komentarnya (angka 0 untuk komentar negatif, dan 1 untuk komentar positif). Format tsv (di sebelah kiri) memisahkan komentar dengan angka 0/1 dengan sebuah tab (indentasi ke kanan), karenanya disebut dengan tab separated values. Sementara format csv memisahkan komentar dengan 0/1 melalui sebuah koma.
Format yang akan kita gunakan untuk bag of words adalah tsv, mengapa? Karena jika kita menggunakan koma (csv), maka setiap ada koma yang ditemukan pertama kali akan memisahkan kolom untuk setiap datanya. Misal kalimat:
I tried the Cape Cod ravoli, chicken, with cranberry…mmmm!
Maka Maka setelah kata ravoli (karena ada koma setelah kata ravoli), program akan membentuk kolom baru. Begitu pula setelah kata chicken. Padahal yang kita inginkan adalah seluruh kata di kalimat trsebut adalah satu kesatuan. Oleh karena itu yang paling aman adalah menggunakan pemisah tab (format tsv), karena jarang orang menulis komentar setelah itu memencet (menekan) tab di keyboardnya.
Untuk model bag of words pastikan format yang digunakan adalah tsv (tab separated values), agar data yang diolah benar-benar akurat dan relevan.
Untuk pembahasan kali ini kita menggunakan data berbahasa inggris. Tentu saja kita juga bisa memakai bahasa indonesia. Tinggal siapkan saja data untuk training setnya dalam bahasa indonesia. Kita bisa membuatnya secara manual, misal kata jelek = negatif, kurang = negatif, bagus = positif, kemajuan = positif, dan seterusnya. Dengan demikian, model ini bisa digunakan berbagai macam, tidak hanya review sentimen komentar restoran, tapi juga merivew berita, majalah, koran, sosmed, sampai aplikasi tak terbatas yang berkaitan dengan tulisan/teks.
Perlu diperhatikan bahwa teknik yang akan dibahas di sini tidak hanya untuk permasalahan restoran yang dibahas di sini saja, namun bisa juga digunakan untuk mengetahui sentimen terhadap buku, majalah, teks lain, website, sosial media dan lain-lain. Jadi aplikasinya luas sekali!
Untuk melanjutkan membaca, silakan klik ke halaman selanjutnya di bawah ini.

Selamat pagi.
Gini mas, saya sedang mencoba menjalankan tutorial ini menggunakan jupyter notebook python. nah sekarag saya mau liat autput dari aplikasi ini apa yah? dan yg bahasa R itu gk kaitannya dgn source pytonnya? Terima kasih sebelumnya.
Halo Alexander, terima kasih komentarnya.
Aplikasi NLP banyak sekali, salah satu yang saya bahas adalah sentiment analysis.
Untuk output dan source code nya bisa dibaca di halaman selanjutnya (total ada 4 halaman).
Semoga membantu
Selamat malam.
kalau mau menambahkan Pembobotan TF-IDF, seperti gimana ya? trimakasih
Halo, TF adalah term frequency yang merupakan frekuensi kemunculan sebuah kata tertentu. Misal kita ingin mencari kata ‘makan’ di dalam sebuah dokumen dengan total 1000 kata, di mana kata ‘makan’ muncul 50 kali, maka TF = 50/1000 = 0,05. IDF adalah inverse document frequency, yang merupakan frekuensi kemunculan kata dalam a bank of words (kumpulan beberapa dokumen) dalam skala logaritmik. Misal kata ‘makan’ muncul 100 kali dari 10rb dokumen, maka TDF = log(10000/100) = 2. TF-IDF adalah perkalian antara TF dan IDF = 0,05 * 2 = 0,1 Untuk menghitung keduanya di Python maupun R, cukup pakai operasi matematika sederhana.… Read more »
jadi kalo saya mengganti line 57 dengan
“cv =TfidfVectorizer (analyzer=’word’,
ngram_range=(1, 1),
min_df=1,
max_df=0.95,
sublinear_tf=True,
use_idf=True)”
apakah itu sudah menggunakan tf-idf?
Saya belum pernah mencoba fungsi bawaan itu.
Silakan dicoba sendiri dan bandingkan hasilnya, apakah sesuai dengan tujuan awal.
Semoga menjawab.
Permisi Pak, salam hangat dari saya boleh saya minta tolong jika berkenan di jelaskan mengenai NLP dalam teknologi Chatbot secara detail mulai dari konsep, teori dan studi kasusnya. soalnya saya masih belum memahami
terima kasih
sukses selalu
Panjang ini penjelasannya seperti materi kuliah.
Nanti ya kapan-kapan saya bahas, ini sedang menyelesaikan keperluan S3 dulu.
Harap bersabar.
Halo Pak
Sebelumnya saya sedang mempelajari face detection menggunakan opencv di spyder, namun saya melihat byk contoh program yang menggunakan library argparse, kira-kira plus minus nya apa yah pak? saya coba jalankan program sederhana menggunakan argparse di spyder tapi hasil outputnya tidak ada? apakah ada alternatif lain pak?
Terima kasih
Salam
Selamat pagi
selamat pagi maaf mas mohon petujuknya saya sedang menggunkan jupyter notebook tolong pada saat kita Run muncul error seperti ini : SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape dan AttributeError: module ‘pandas’ has no attribute ‘read_cs’ tolong penjelasanya..
read_csv bukan read_cs
Hallo mas, kalo untuk yang stemming bahasa indonesia yang diubah itu di line berapa ya?
terimakasih pak, ini dapat membantu saya untuk mengerjakan skripsi untuk sentimen rewnable energi, boleh konsul secara pribadi ga pak untuk sripsi saya?
Bisa ikut member platinum via channel Youtube saya.