Artikel ini adalah kelanjutan dari dua artikel sebelumnya, word embedding dengan Fasttext bagian 1 dan word embedding dengan Fasttext bagian 1.5. Pada artikel sebelumnya kita berfokus menggunakan pretrained model Fasttext Bahasa Indonesia menggunakan package gensim dan package Fasttext Python. Kali ini kita akan mencoba membuat model word embedding Fasttext Bahasa Indonesia sendiri menggunakan package Fasttext python.
Apa yang dibutuhkan?
Dalam membuat model word embedding Fasttext Bahasa Indonesia, yang kita butuhkan pertama adalah dataset. Untuk menghasilkan model yang baik, diperlukan dataset yang cukup besar. Karena ukuran dataset yang bisa sangat besar, disarankan menggunakan komputer dengan RAM berkapasitas besar, atau kalau saya pribadi menggunakan Google Colab.
Artikel ini akan langsung berfokus pada implementasi Convolutional Neural Network (CNN) menggunakan PyTorch untuk Image Classification. Bagi yang ingin memperdalam teori dibalik CNN terlebih dahulu bisa baca pada link artikel sebelumnya yang berisi kumpulan sumber belajar CNN dan jika ingin memperdalam PyTorch, juga bisa baca artikel sebelumnya tentang PyTorch. Jika teman-teman ada yang ingin mengimplementasi menggunakan Tensorflow, silakan baca artikel ini.
Dataset
Kita akan menggunakan Convolutional Neural Network untuk mengklasifikasi citra barang-barang yang ada di sebuah toko (Freiburg Groceries Dataset). Dataset dan code bisa didownload di repository berikut.
Dataset yang digunakan jumlahnya akan lebih sedikit dari dataset asli agar mempercepat proses pelatihan. Dataset pada repo yang kita gunakan hanya terdiri dari 5 kelas, yakni citra produk Susu (MILK), Air mineral (WATER), soda (SODA), jus (JUICE), dan cuka (VINEGAR), dengan sekitar 900-an gambar untuk pelatihan dan 120 gambar untuk pengujian. Semua citra berukuran sama, yakni 256×256 pixel.
salah satu citra dengan kelas “MILK”
Kita akan menggunakan dataset yang ada pada folder “train” untuk pelatihan dan yang ada pada folder “test” untuk pengujian. Pada tutorial ini kita masih belum menggunakan teknik validasi seperti menggunakan data validasi atau cross-validation.
Pengolahan Dataset di PyTorch
Untuk pengolahan citra ada dua package dari python yang bisa kita gunakan, yakni `torchvision.datasets` dan `torchvision.transforms`
Saya mulai menggunakan PyTorch semenjak mengerjakan Tesis di tahun 2017 akhir. PyTorch merupakan pengembangan dari Torch Framework yang dikembangkan oleh Facebook dan difokuskan sebagai framework berbahasa Python untuk proses komputasi Machine Learning, sehingga bisa disandingkan dengan framework sejenis seperti Tensorflow (dikembangkan oleh Google), Keras, Theano (sudah tidak dikembangkan), Caffe2, dan lainnya.
Menurut saya salah satu keunggulan PyTorch dibanding framework lain adalah sintaks yang digunakan tidak terlalu beda dengan fungsi-fungsi pada Numpy, bahkan rasanya dia memiliki sintaks yang lebih rapi dan sederhana
Untuk memulai belajar PyTorch, menurut saya ada dua komponen utama yang perlu dipahami terlebih dahulu, yakni Tensor dan Autograd.
PyTorch Tensor
Tensor adalah sebuah tipe data atau class yang merepresentasikan sebuah array, atau tepatnya ndimensional array karena tidak terbatas pada dimensi-dimensi tertentu. Pada contoh di bawah adalah tensor dengan dimensi 1 bernilai [1,2,3]
Beberapa waktu lalu saya mendapat tugas kerja untuk membuat sebuah text summarizer (perangkum bacaan) menjadi sebuah kalimat sederhana. Istri saya yang lebih mendalami bidang NLP menyarankan untuk menggunakan teknik yang sederhana:
Temukan kalimat utama, dan jadikan kalimat tersebut sebagai rangkuman.
Saya setuju ide itu, selain tidak serumit jika mengunakan machine learning yang kompleks, rasanya cara itu sudah cukup cocok untuk kasus saya. Istri saya memberi tahu saya beberapa algoritma yang bisa digunakan dan sebuah peringatan bahwa bagian paling sulit adalah nanti bagaimana membuat parser kalimat (program yang dapat mengekstrak kalimat-kalimat yang menyusuk sebuah dokumen teks).
Saya buat parser ini menggunakan bahasa pemrograman Python, dengan bantuan beberapa package (`re` untuk regex, dsb.).
I’ve horrible experience to find a “good” tutorial about how to use Boto3 in Amazon Web Service (AWS). Boto3, not like Boto2, has poor quality documentation. So I create this simple tutorial as reminder to myself and I hope it will help someone out there.
What is Boto3?
The AWS SDK for Python. If you have a python app and you want this app able to access AWS features, you need this.
after install boto3 you can use awscli to make it easier setup credentials, install it using pip too:
$ pip install awscli
set your configuration using command below. You can get your access key and secret key in IAM console:
$ aws configure
Create a Simple App
Let’s create a simple app using Boto3. We will create a simple app to access stored data in AWS S3. This app will write and read a json file stored in S3.
1. Prepare Your Bucket
First, you need to create a bucket in your S3. You can create bucket by visiting your S3 service and click Create Bucket button.
If you confuse what is bucket and how it works, this one have nice explanation.
2. Write JSON File
Next part is how to write a file in S3. The code below will create a json file (if it doesn’t exist, or overwrite it otherwise) named hello.json and put it in your bucket.
If you want to put it on specific path, you can change the line
obj = s3.Object('my-bucket','hello.json')
to
obj = s3.Object('my-bucket','my-path/hello.json')
Run it, and if you check your bucket now you will find your file in there.
3. Read JSON File
Last but not least, if you want to read your file, you can use get() function. The code below will read your hello.json file and show it on screen. File body/content will be read as string by default.
import boto3
data = {"HelloWorld": []}
s3 = boto3.resource('s3')
obj = s3.Object('my-bucket','hello.json')
data = obj.get()['Body'].read()
print data
I think that’s all, a simple tutorial using boto3 to read-write file in Amazon Web Service S3. Hope it helps 🙂