Beamforming with Kinect

Kinect adalah perangkat pendeteksi gerakan (motion sensing) buatan Microsoft yang awalnya dijual bersama perangkat konsol game, Xbox 360 dan Xbox One, walaupun kini juga sudah dijual terpisah. Kalau melihat sejarahnya, Kinect ini kalau tidak salah dibuat untuk melawan konsol Nintendo zaman dulu, Wii, yang juga support motion sensing tapi menggunakan remote.

Tapi menurut pengamatan saya Kinect ini ternyata kurang laku di pasaran. Buktinya dulu paket ini diwajibkan untuk Xbox One. Tapi sekarang sudah ada paket yang tanpa Kinect dengan harga 100 dollar lebih murah karena orang kurang minat pakai Kinect. Saya sudah coba dua game yang menggunakan Kinect, Kinect sport dan Kinect Star Wars, dan memang agak pegal kalau harus main sambil gerak-gerakin tangan  terus-terusan. Lebih nyaman pakai controller sambil duduk anteng.

Kinect kalau saya bilang malah lebih disambut antusias oleh kalangan akademik yang memakainya untuk berbagai topik riset. Alasannya adalah fitur depth camera dari Kinect yang memang powerful serta harganya yang relatif murah karena diproduksi masal. Misalkan untuk problem localization pada robot, daripada memakai Lidar seperti yang ada di atas Google self-driving car yang mahal, lebih murah jika menggunakan Kinect. Dulu di lab tempat saya jadi asisten di Fasilkom sendiri Kinect dipakai untuk pengenalan bahasa isyarat. Yang tertarik bisa membaca lebih lanjut paper berikut: Spectral domain cross correlation and generalized learning vector quantization for recognizing and classifying Indonesian Sign and Language dan Combining depth image and skeleton data from Kinect for recognizing words in the sign system for Indonesian language (SIBI [Sistem Isyarat Bahasa Indonesia]).

Tapi post kali ini tidak akan membahas lebih lanjut fitur depth kamera dari Kinect, melainkan microphone array untuk melakukan beamforming untuk speech recognition.

Beamforming sendiri adalah teknik untuk mengetahui arah datangnya suara dengan menggunakan lebih dari satu microphone. Harapannya dengan mengetahui arah tersebut, mic dapat difokuskan ke arah tersebut sehingga mengurangi noise yang datang dari arah yang lain. Nah, suara yang lebih bersih dari noise inilah yang kemudian diharapkan akan memberikan performa pengenalan yang lebih baik pada speech recognition.

Untuk menguji hipotesis tersebut, di-settinglah eksperimen dimana suara diambil dari 6 lokasi berbeda dengan menggunakan dan tidak menggunakan fitur beamforming dari kinect. Suara ini kemudian akan dicoba dikenali. Fitur yang dipakai adalah Mel Frequency Coefficient Cepstrum (MFCC) dengan menggunakan Hidden Markov Model (HMM) yang sebelumnya sudah dilatih memakai software HTK.

Hasilnya? ada peningkatan akurasi apabila membandingkan pengenalan kata pada posisi tidak tepat di depan Kinect apabila menggunakan beamforming. Tentunya hasil ini bukan definitif karena eksperimen yang dilakukan masih berskala kecil. Eksperimen dengan skala lebih besar harus dilakukan lagi untuk memverifikasinya. Tapi untuk hasil awal, lumayanlah.

Untuk lebih lengkapnya silakan lihat poster presentasi berikut.

poster_snip

Semoga berguna. Salam.

thrashing

Pernahkah Anda memiliki terlalu banyak pekerjaan yang harus dikerjakan pada satu waktu, terus bingung mau mengerjakan yang mana dulu, dan akhirnya tidak ada yang selesai?

Di komputer, fenomena serupa juga terjadi. Namanya thrashing.

Hal ini terjadi ketika ada terlalu banyak thread yang aktif pada CPU, misalkan karena membuka terlalu banyak aplikasi, sehingga CPU lebih banyak menghabiskan waktunya untuk gonta-ganti proses ketimbang menjalankan instruksi proses itu sendiri. Efeknya yang terasa mungkin adanya lagging ketika menggunakan komputer tersebut. (Oke, definisi aslinya sebenarnya adalah tentang utilisasi CPU dan paging memori, tapi pesan moralnya sama).

Solusinya, ya, jangan membuka aplikasi terlalu banyak atau tambah ukuran RAM.

Begitu juga untuk kasus manusia, kerjakan tugasnya satu per satu karena manusia memang tidak bisa efektif bekerja secara multitasking.

Sekian celotehan malam2.

whitelines

Post kali ini saya mau promosi buku tulis whitelines. Perbedaan mendasar buku tulis buatan Swedia ini dengan buku tulis lain pada umumnya adalah warna garisnya. Kalau buku tulis lain garisnya biasanya berwarna hitam, maka whitelines, surprise surprise, garisnya berwarna putih.

WL72_web_produkt20150515_15305220150515_153130

Hal ini ternyata mempunyai keunggulan tidak mengganggu tulisan. Begitu di-fotokopi atau di-scan, garisnya tidak akan terlihat sehingga tulisan kita lebih bersih dan tetap lurus. Ini juga memudahkan ketika misalkan kita mau menjalankan OCR (Optical Character Recognition) ke tulisan kita nanti. Kombinasi garis putih dan warna kertas yang agak abu-abu ini ternyata lebih tidak melelahkan mata berdasarkan hasil penelitian.

Selain itu, kelebihan lainnya adalah kertasnya cukup tebal sehingga tidak tembus dengan pulpen gel, ada garis putus-putus di pinggir kertas agar gampang dirobek (tapi ini hampir ada di semua buku tulis di Swedia). Selain itu buku ini eco-friendly karena proses produksinya menghasilkan 0 emisi karbon. Cuma kekurangannya adalah harganya yang relatif mahal (60 kr untuk buku ukuran A5, isi 70 lembar).

Ada juga variannya yang punya kemampuan untuk bisa di-scan otomatis menggunakan apps di smartphone, whitelines link.

Bisa jadi oleh-oleh kalau ada yang teman atau saudara yang berkunjung ke Swedia.

Sekian iklan tidak dibayar.

matlab

Dulu saya enggak suka pakai matlab. Menurut saya matlab lambat, editornya tampilannya jelek, sintaksnya aneh, dan harus bayar. Saya juga baca blog https://abandonmatlab.wordpress.com/ untuk cari alasan-alasan tambahan untuk tidak pakai matlab. Malah pernah untuk kuliah S1 kelas analisis numerik, saya nekat pakai Java, tambah package JAMA untuk operasi matriks, untuk mengerjakan tugas lab-nya, walaupun disuruh pakai matlab sama asisten. Sebegitu tidak sukanya saya dengan matlab.

Tapi kini semua berubah.

Di KTH, matlab tersedia gratis untuk semua mahasiswa dan banyak tugas lab yang didesain untuk diselesaikan menggunakan matlab. Selain itu untuk thesis saya karena library pendukung banyak di matlab, mau tak mau saya juga harus pakai matlab. Setelah berkutat dengan cukup intens selama beberapa waktu, akhirnya saya menoleransi pemakaiannya dan kini cukup fasih menggunakannya.

Yah, kalau mau adil, di luar kekurangannya yang saya sebut di atas, Matlab memiliki bagian-bagian yang bersinar. Seperti kata peribahasa, “kalau alat yang kita punya cuma palu, maka semua permasalahan akan terlihat seperti paku“. Selain itu, Alan Perlis pernah bilang, “A language that doesn’t affect the way you think about programming is not worth knowing“. Matlab, secara paradigma memang cukup berbeda dibanding bahasa lain, untuk beberapa hal bisa terlihat deklaratif, walau tidak semurni bahasa seperti Haskell. Berikut kelebihan dari matlab dan contoh kasus dimana penggunaannya bisa dijustifikasi.

  • Natural dan cepat untuk masalah operasi matriks.

Misalkan matrix A dengan ukuran mxn akan dikalikan dengan matrix B dengan ukuran nxk, dengan hasilnya matriks C dengan ukuran mxk.

C = A * B;

jauh lebih ringkas dan sederhana dibanding memakai 2 for-loop. Selain itu, jauh lebih cepat juga. Yah, namanya juga matlab (matrix laboratory). Karena itu, untuk tugas yang banyak menggunakan operasi matriks, seperti pengolahan citra, matlab bisa diandalkan.

  • Debugging support

Namanya manusia pasti berbuat salah. dan kesalahan dalam menulis kode ini keluar dalam bentuk bug. Cukup klik sebelah kiri nomor baris di text editor untuk mengeset breakpoint, sehingga ketika di-run, program akan berhenti tepat sebelum baris itu dieksekusi. Dalam debugging, kita bisa menjalankan kode baris per baris sekaligus mengecek nilai variabel pada saat itu.

breakpoint
Breakpoint itu bulatan yang warna merah.
  • Built-in profiler

IDE matlab juga punya built-in profiling yang bisa digunakan untuk mengetahui bottleneck di dalam kode kita sehingga bagian yang lambat bisa dioptimisasi agar bisa berjalan lebih kencang. Cukup klik Run & Time atau ketik profile on, jalankan kodenya yang ingin di-profile, lalu ketik profile viewer.

profile
Contoh hasil profiling. Ternyata paling lama adalah fungsi ApplyDetector2.

 

Jangan gunakan matlab untuk misalkan string processing, atau interfacing dengan hardware. Bisa sih, tapi akan agak menyakitkan dan ada alat lain yang lebih cocok dan tepat untuk tugas tersebut.

Tutorial dan tips triks mempercepat matlab lebih lengkap bisa dilihat di http://www.matlabtips.com/

Bajakan

Saya baru dikasih tahu kalau ternyata KTH sudah berlangganan Office 365, sehingga mahasiswanya seperti saya bisa menggunakan produk Microsoft Office seperti Word, Excel, dan PowerPoint secara gratis dan legal, selama saya masih menjadi mahasiswa di sana.

Wah ini tentunya asyik sekali. Walau saya pendukung gerakan open source, saya rasa Microsoft Office adalah program office paling bagus untuk dipakai dibandingkan alternatif lainnya seperti Open Office, Libre Office, atau Google Docs.

Dengan ini berkuranglah produk bajakan yang saya pakai. Setelah OS Microsoft Windows dapat dari MSDN AA, video game beli di Steam, musik dengar di Spotify, dan nonton film di Netflix. Sekarang yang saya bajak tinggal produk hiburan dari Jepang.

Mengapa harus pakai produk asli? Pertama, kita mendapatkan ketenangan secaral moral dan legal. Secara moral karena pembajakan itu sama seperti mencuri, dan secara legal karena tidak perlu takut pintu rumah digedor oleh polisi. Selain itu memakai software asli tentunya lebih aman dibandingkan software bajakan yang didapat entah dari mana yang mungkin sudah disusupi virus atau malware lainnya.

Saya setuju dengan kata Gabe Newell, salah satu pendiri Valve, yang punya Steam. Katanya, “Piracy is a service problem”. Kalau kita bisa mendapatkan produk asli dengan lebih mudah dibandingkan produk bajakan (apalagi murah atau gratis), pasti orang akan lebih memilih yang asli.

Bagaimana dengan Indonesia, yang katanya tingkat pembajakan software nomor 2 tertinggi di dunia, apakah bisa mengurai konsumsi bajakan? Menurut saya bisa. Contoh nyatanya orang beberapa tahun lalu mau membayar beberapa puluh ribu untuk memasang ringtone atau ring back tone (ketik reg spasi blablabla) dengan cara memotong pulsa. Hal yang sama bisa diterapkan untuk pembelian produk atau software asli.

Demikian celotehan malam2…

Screen

Bayangkan skenario berikut. Anda butuh menjalankan program untuk eksperimen. Akan tetapi, karena ukuran data yang besar atau kompleksitas algoritma yang besar, Anda butuh menjalankannya di komputer dengan spek tinggi, dalam jangka waktu yang cukup lama, bisa hingga berhari-hari. Anda sudah dibuatkan akun untuk mengakses komputer spek tinggi tersebut (sebut saja namanya Monster) dan Anda bisa mengaksesnya menggunakan SSH kemudian menjalankan program dari sana. Namun eksekusi program lewat SSH ini akan berhenti apabila koneksi putus, baik sengaja maupun tidak sengaja. Bayangkan setelah menunggu seminggu lebih, namun program berhenti jalan karena PLN mati lampu, pastinya sangat mengesalkan.

Untuk menghindari hal tersebut, kita bisa menggunakan program bernama screen. Screen memungkinkan kita untuk menjalankan  semacam menjalankan terminal di dalam terminal. Kita cukup me-attach atau detach terminal screen yang ingin kita jalankan.  Untuk instalasi pada sistem ubuntu, cukup ketik

sudo apt-get install screen

tentunya jika Anda punya akses. Jika tidak bisa ditanyakan ke admin terdekat.

Setelah instalasi cukup ketik screen. Anda akan disambut teks berisi lisensi. Cukup tekan <Enter>. Setelah itu Anda dapat menjalankan program eksperimen yang diinginkan. Tekan <Ctrl>+<a> lalu <d> untuk me-detach screen dari terminal. Sekarang walaupun koneksi SSH putus, program terus berjalan tanpa interupsi.

screen welcome
Setelah screen dipanggil dari terminal.
running program
Jalankan eksperimen yang diinginkan.
detach
CTRL+a, d untuk detach screen dari terminal.

Untuk melihat progress, bisa dengan mengetik screen -r, jika hanya ada satu screen yang aktif, Multipel screen juga bisa dijalankan. Ketik screen -ls untuk melihat ada berapa screen yang aktif. Kemudian gunakan perintah screen -r <pid> untuk memilih/attach screen ke terminal.

multiple screens

continue

Petunjuk penggunaan lengkap bisa dilihat di: https://www.gnu.org/software/screen/manual/screen.html

Semoga berguna. Salam.

 

The Almost Nearly Perfect People

Pada post kali ini, saya akan coba mengulas buku dengan judul The Almost Perfect People: The Truth about Nordic Miracle karya Michael Booth. Ini buku pertama yang saya tamatkan di tahun 2015. Di goodreads saya pasang target untuk baca setidaknya 6 buku tahun ini, berkurang setengah dari target tahun lalu yang gagal tercapai.

Buku ini menceritakan kisah 5 negara di penjuru Eropa Utara yang belakangan mendapat sorotan internasional. Michael Booth menyebutnya sebagai Nordic Miracle. Contohnya, Denmark adalah negara paling bahagia di muka bumi, walaupun memiliki pajak salah satu paling tinggi di dunia. Finlandia memiliki salah satu pendidikan terbaik di dunia. Norwegia tidak kalap mata dan membangun gedung2 tinggi walaupun memiliki kekayaan dari minyak. Tak lupa Swedia, negara dengan persamaan gender paling baik. dan Islandia, yang pulih dari krisis ekonomi di tahun 2008.

Michael Booth menceritakannya menjadi 5 bab untuk masing-masing negara. Mari kita tilik satu persatu.

cover
Cover bukunya

Denmark

Berhubung penulisnya pernah tinggal lama, lebih dari sepuluh tahun, di Copenhagen, ibukota Denmark, maka bab mengenai negara ini adalah bab terpanjang dari buku ini. Bab ini banyak bercerita tentang bagaimana Denmark bisa menjadi salah satu negara paling bahagia di dunia.

Alasan pertama adalah dari mentalitas dari orang Denmark yang mencari kebahagiaan di dalam setelah mengalami banyak kehilangan. Sejarahnya Denmark pada era viking pernah memiliki daerah kekuasaan yang luas, meliputi seluruh Skandinavia hingga Inggris. Epik Viking ini bisa dinikmati di komik Vinland Saga. Akan tetapi, Denmark mulai satu per satu kehilangan daerahnya pada masa perang hingga hanya memiliki daerah seperti sekarang. Hal inilah yang menyebabkan mentalitas yang diringkas ke dalam kalimat

Hvad udad tabes, skal indad vindes

yang kurang lebih artinya, “What was lost without will be found within”.

Vinland_Saga_volume_01_cover

Selain itu, alasan berikutnya adalah kesetaraan sosial. Berdasarkan data Bank Dunia, Denmark adalah salah satu negara dengan Gini index terendah, yang berarti distribusi pendapatan yang diterima antara yang paling kaya dan yang paling miskin merata (tidak seperti kasus dimana 1% populasi menguasai 99% pendapatan). Hal ini mungkin ditambah tingkat kepercayaan orang Denmark yang tinggi kepada pemerintahannya untuk mengelola pajak untuk dana pendidikan, kesehatan dan lain-lain.

Denmark juga salah satu peminum berat. Mungkin itu juga bisa jadi alasan.

Islandia

Islandia diceritakan baru pulih setelah dihantam krisis ekonomi tahun 2008. Selain itu, orang Islandia ternyata banyak yang percaya klenik, seperti elves.

Tapi mungkin salah satu yang paling menonjol dari Islandia adalah pariwisata dari keindahan alamnya. Berdasarkan pengakuan yang pernah ke sana, alam Islandia itu bagus sekali. Karena saya belum pernah menyaksikan sendiri, berikut potongan foto-foto yang diambil tanpa izin dari Google.

vatnajokull bluelagoon northern-lights-ronni

Norwegia

Fokus pertama Booth pada Norwegia adalah mengenai kasus Anders Breivik, pelaku pembunuhan total 77 orang  imigran. Hal ini menyebabkan, dan mempertanyakan masa depan multikulturalisme di Norwegia.

Hal menarik dari Norwegia adalah kekayaan minyaknya. Norwegia adalah salah satu negara pengekspor minyak terbesar di dunia. Akan tetapi, hanya 4% keuntungan minyak itu digunakan untuk konsumsi. Sisanya digunakan untuk membeli saham perusahaan di seluruh dunia. Hal ini dilakukan terus menerus hingga Oil Fund menjadi dana asing terbesar di dunia (890 miliar dollar), cukup untuk membuat seluruh penduduk di Norwegia menjadi miliuner. Bijak sekali dalam mengelola keuangan.

Finlandia

Finlandia diceritakan memiliki orang-orang yang introvert, pendiam, dan menyukai kesendirian. Mereka juga memiliki kegemaran untuk minum-minum dan bersauna. Selain itu, sejarah singkat ketika Finlandia berada di bawah Swedia dan ketika berperang menghadapi pasukan dari Rusia juga diceritakan di bab ini. Salah satu highlight dari Finlandia adalah pendidikan. Satu hal yang menjadi penyebab adalah kualitas dari guru yang minimal berpendidikan Master.

Swedia

Bab terakhir bercerita mengenai Swedia. Negara yang katanya dicemburui negara-negara tetangga di atas. Salah satu alasannya adalah adanya industri besar seperti Tetra Pak, H&M, Atlas Copco, Erikssson, Volvo, dan IKEA yang baru buka di Indonesia. Selain itu, isu multikulturalisme juga dibahas, apalagi jumlah imigran di Swedia paling banyak di antara negara Nordic lainnya.

Pada sisa bab ini, Booth juga menjelaskan mengenai stereotipe-stereotipe orang Swedia seperti tidak menyapa dan diam hening di jalan ataupun dalam transportasi umum.

Nah, kalau mengenai Swedia saya bisa memberi tambahan karena berkesempatan tinggal disini kurang lebih 2 tahun untuk belajar.

Kalau untuk pendidikan, universitas seperti KTH, Stockholm University, Uppsala University, dan Lund University masuk ke top universitas di dunia walaupun menurut saya ranking internasional tidak terlalu penting karena kualitas pendidikannya yang sudah merata. Berdasarkan cerita teman saya, seorang yang kuliah di universitas apa, bisa mengambil mata kuliah di universitas lain dengan mudah dengan credit yang bisa ditransfer.

Swedia juga relatif aman, walaupun selama tinggal di sini saya mengalami 3 kejadian tidak mengenakkan: lampu sepeda saya diambil, gembok sepeda saya dirusak (untung sepedanya enggak ikut hilang), dan tas saya hilang diambil ketika sedang makan di restoran cepat saji.

Yah, kurang lebih begitulah isi dari buku ini. Kalau bingung dengan tulisan saya, mungkin bisa membaca bukunya langsung. Tentunya buku ini bukanlah review sosiologi komprehensif tentang bagaimana masyarakat negara Nordic ini menjalani hidupnya. Jika ingin mengetahui bagaimana aslinya kehidupan mereka, bisa sebagai tamu sejenak dengan menjadi turis, ataupun tinggal untuk belajar dan bekerja di salah satu negara tersebut.

Salam.

Whatsapp Chat Analyzer

Jadi ceritanya mahasiswa asal Indonesia yang tinggal di Stockholm menggunakan whatsapp sebagai media komunikasi untuk saling berbagi informasi hingga keluh kesah. Karena jumlah pesertanya yang memang tidak terlalu banyak (20+++), saya rasa, dibanding grup Facebook atau mailing list, group chat whatsapp memang lebih cocok untuk komunikasi yang membutuhkan respons yang relatif cepat.

Berawal dari rasa ingin tahu akan esensi dari pembicaraan di grup whatsapp tersebut, saya pun penasaran dan ingin menganalisis kontennya. Bak gayung bersambut, ternyata whatsapp menyediakan fitur untuk mengarsip pembicaraan dan mengirimkannya lewat email. Caranya cukup tahan percakapan yang ingin diarsip. Kemudian pilih ‘Email conversation’ > ‘Without media’. Gambar di bawah menunjukkan langkah-langkah tersebut. Nama dan tulisan disamarkan untuk menjaga privasi.

archive conversationwithout media

Hasilnya adalah sebuah file text. Setiap pesan chat ditulis pada satu baris dengan format “Tanggal – User: Pesan” (tanpa tanda kutip). Kode python dibawah digunakan untuk membaca file tersebut.

def read(filename):
    """ Read text file containing whatsapp chat and return the list of list of time, author, and its text
    :param filename: the filename of the chat text file
    :return: chat 2d list
    """
    chat = []
    with open(filename, 'r') as f:
        for line in f:
            lines = line.split(' - ')  # Divide between date and the rest
            if len(lines) > 1:
                lines2 = lines[1].split(': ')  # Divide between user and text
                if len(lines2) > 1:
                    speaker = lines2[0]
                    text = lines2[1]
                else:
                    speaker = ''
                    text = lines2[0]
                timestamp = lines[0]
            else:
                timestamp = ''
                speaker = ''
                text = lines[0]
            chat += [[timestamp, speaker, text]]
    return chat

Sip, setelah kita punya datanya, kita bisa geledah dan obrak-abrik isinya untuk dianalisis lebih lanjut.

Statistika dasar

Pertama-pertama. kita ingin tahu ada berapa banyak baris dalam percakapan.

date

Hmmm, ternyata ada sekitar 137 pesan per harinya. Lumayan aktif juga.

Kemudian kita ingin tahu siapa sih yang paling sering bunyi dan siapa yang paling senyap. Kita hitung total berapa banyak pesan yang ditulis per orangnya.

user frequency
Nama dan nomor telepon disamarkan untuk menjaga privasi

Wah, ternyata ada perbedaan yang cukup jomplang antara yang paling sering mengirim pesan dengan yang paling tidak sering mengirim pesan. Bahkan yang nomor 1 jumlah pesannya sekitar 2 kali dari yang nomor 2. Distribusi ini sepertinya mengikuti Zipf’s Law.

Frekuensi kata

Fitur utama dalam analisis dokumen biasanya adalah frekuensi kata. Model ini biasanya dikenal dengan nama Bag-of-Words. Kalau misalkan fitur ini dirasa kurang cukup ekspresif, biasanya ditambah lagi menjadi n-grams model, dimana kata dihitung kemunculannya bersama kata lain.

Dalam analisis dokumen juga biasanya terdapat kata-kata yang frekuensinya tinggi namun tidak memberi makna lebih kepada tulisan, seperti kata hubung dan teman-temannya. Kumpulan kata-kata tersebut sering disebut dengan istilah stopwords. Stopwords ini biasanya dihilangkan sebelum analisis agar proses lebih ringkas dan akurat. Saya memakai daftar kata stopwords dari https://sites.google.com/site/kevinbouge/stopwords-lists yang ternyata mengambil dari thesis “A Study of Stemming Effects on Information Retrieval in Bahasa Indonesia“.

Sekarang kita coba hitung frekuensi kata dalam chat minus stopwords. Histogram hasilnya bisa dilihat di bawah.

word frequency

Hmm, menarik. Ternyata kata-kata yang paling banyak keluar adalah kata sambung yang salah ketik seperti ‘yg‘ dan ‘d‘.  Kata-kata lain yang banyak muncul adalah nama panggilan ke penghuni grup yang lain. Selain itu, ternyata grup ini cukup suka tertawa, terlihat dari 3 kemunculan ekspresi tawa yaitu ‘hahaha‘, ‘wkwk‘, dan ‘haha‘. Selain itu, ternyata grup ini rajin olah raga juga, dilihat dari kata ‘badminton‘ yang muncul lebih dari 200 kali.

Emoji

if a picture paints a thousand words then why can’t I paint you“. Kurang lebih itulah sepenggal lagu If dari Bread. Penggunaan emoji atau emoticon sangat kentara dalam chatting karena satu gambarnya bisa mengekspresikan hal yang sulit jika dicoba disampaikan dengan kata-kata. Penggunaan emoji ini sangat pesat hingga menimbulkan sentimen kalau nanti kita bisa kembali ke zaman Mesir kuno dengan tulisan hieroglyph-nya. Karena umumnya penggunaan emoji ini, saya pun mencoba menghitung frekuensi dari tiap-tiap emoji.

Yang agak menyulitkan mungkin adalah emoji ini direpresentasikan dalam unicode dan di-encode dalam UTF-8 sehingga harus dibuat fungsi konversinya dulu antar keduanya. Gambar untuk plot didapat dari https://github.com/github/gemoji/ yang saya dapat link-nya dari apps.timwhitlock.info/emoji/tables/unicode. Kesulitan lain adalah ternyata Python Image Library punya sedikit untuk png dengan transparency. Apa boleh buat, gambar emoji-nya pun harus saya konversi ke jpg dengan utilitas mogrify dari imagemagick. Histogram hasilnya bisa dilihat di gambar di bawah.

emoji frequency

Hmm, menarik. Bisa dilihat, emoji teratas adalah senyum sambil berkeringat yang saya baca sebagai ekspresi dari ‘hehe’. Sisanya adalah berbagai ekspresi untuk senyum dan tertawa. Tetapi emoji ke 3 yang agak aneh. Mata. Ada apa dengan mata? Emoji ke 8, ‘see no evil monkey’ juga aneh. Apakah ada hubungannya dengan emoji ke 3?

Topik

Target berikutnya adalah Topic modelling. Lazimnya, setahu saya ini memakai teknik Latent Dirichlet Allocation (LDA). Karena saya belum pernah implementasi teknik ini sebelumnya dan kekurangan waktu untuk mencoba, saya mencoba mencari apakah ada library lain siap pakai. Saya ketemu situs startup untuk klasifikasi teks http://www.monkeylearn.com/. Di situs tersebut terdapat servis untuk melakukan klasifikasi topik dokumen secara general. Untuk free account diberikan 1000 kali panggilan API. Yah, cukuplah untuk proyek kecil-kecilan ini.

monkeylearn1monkeylearn2

Karena model-nya dibangun dari korpus Bahasa Inggris, maka teks harus diterjemahkan dulu ke bahasa tersebut. Hal ini sebenarnya bisa mengurangi akurasi, akan tetapi akurasi bukan tujuan utama yang dicari. Pilihan pertama saya, Google Translate API, ternyata tidak gratis. Ini tentunya cukup memberatkan saya yang cuma mahasiswa. Saya pun memakai layanan alternatif dari Yandex, search engine buatan Rusia.

topic

Dan inilah hasilnya. Ternyata percakapan di grup whatsapp ini dikategorikan ke ‘Entertainment & Recreation’. Hmm, bisa jadi. Yang agak aneh adalah kategori kedua, ‘Anime’, yang merupakan subkategori dari Entertainment di atas karena seingat saya tidak ada diskusi tentang anime sama sekali di grup. Hmm, inilah sulitnya memakai model buatan orang. Sulit untuk dianalisis.

Sebenarnya masih ada lagi yang mau saya coba, seperti menggunakan t-SNE untuk melihat kemiripan antar user. Namun, apa daya TTM (thesis telah memanggil).

Kode lengkap dapat dilihat di https://github.com/mitbal/wca. Cukup ikuti petunjuk di README untuk menjalankan program.

Semoga bermanfaat. Salam.

2015

2014 sudah berlalu. Ini rapor saya dalam hal menulis di blog dan coding di github.

pos blog

 

github2

Target 2015? Dua kali lipatkan hasil sebelumnya. Semoga tidak terlalu muluk.

Sampai jumpa di 2016.

Stockholm

Stockholm is a dark and cold place.

Kurang lebih itulah yang dikatakan oleh bapak2 pengurus museum Nobel yang memberikan kata sambutan pada acara acara Welcome Reception dari KTH kepada mahasiswa internasional, 15 purnama yang lalu, di Stockholm City Hall. Saya yang baru datang beberapa hari yang lalu seakan terhenyak. Karena sejak saya datang hingga hari itu, Stockholm saya rasakan dalam cahaya yang berbeda. Hangat serta sejuk, walau matahari bersinar begitu teriknya.

Hal itu akhirnya saya rasakan ketika kegelapan menyelimuti Stockholm dari musim gugur hingga 6 bulan ke depan. Dark karena awan tampaknya selalu menggentayangi langit. Cold karena suhu dari bulan Oktober sudah bergelayut di satu digit derajat. Terkadang kabut pekat juga turut menyelimuti sekujur kota. Tidak heran kalau ada mitos yang menyatakan kalau tingkat bunuh diri di Swedia tinggi, walaupun merupakan salah satu negara yang paling bahagia di dunia. Izinkan saya tumpahkan perasaan saya ke dalam puisi.

Matahari tak pernah benar-benar terbit

Dia hanya mengintip dari sela-sela awan yang sempit

Dapatkah kurasakan paparan sinarnya lagi

Perasaan hangat yang kini telah pergi

Mohon maaf kalau puisinya kurang bagus. Maklum dulu S1 saya gelarnya S.Kom alias Sastra Komputer. Untungnya Stockholm dapat kembali dinikmati pada waktu musim panas. Tapi keluhannya sekarang adalah waktu puasa yang lama. Haha, dasar saya yang memang kurang bersyukur.

the_mist
Asap kebakaran hutan Riau baru sampai utara, atau adegan dari film The Mist…

 

Walaupun Stockholm itu sangat indah, tetapi menurut saya ini bukan kota turis yang mempunyai banyak atraksi dibandingkan kota tujuan turis populer lainnya. Meme di bawah mungkin bisa sedikit mengilustrasikan keadaan Stockholm.

Stockhom tourist

Walaupun begitu, jika Anda terlanjur datang berikut tempat yang bisa dikunjungi. Saya kompilasi agar kalau ada yang tanya bisa saya arahkan langsung ke tulisan ini kalau misalkan dia tidak percaya dengan rekomendasi dari trip advisor atau wikitravel.

1. Central, Sergels Torg dan sekitarnya.

Kalau misalkan Anda datang dengan menggunakan pesawat dan turun di bandara Arlanda, atau bis flyggbussarna dari bandara Skavsta, maka Anda akan sampai di Central Stockholm yang merupakan gabungan dari terminal bis (Terminalen), stasiun kereta (Central Station), dan stasiun kereta bawah tanah (T-Centralen). Di Sergels Torg ini yang bisa dilihat antara lain tugu Sergels (bukan nama sebenarnya) dan gedung Kulturhuset yang berisi perpus, teater, cafe, dan miniatur Stockholm.

20140315_171447

20141026_163100
Suka dipakai sebagai tempat demo. Untung berjalan tertib dan tidak rusuh.

 

Pusat pertokoan dan perbelanjaan (H & M, Intersport, Clas Ohlsson) juga dapat dinikmati di sini.

2. Drottninggatan

Dari Sergels Torg, lanjutkan perjalanan menuju kota tua melalui jalan Drottninggatan (Jalan Ratu jika diterjemahkan). Oleh-oleh standar seperti helm Viking bertanduk (walau aslinya cuma mitos) dapat dibeli di sini.

DSC00722

3. Gamla Stan

Gamla Stan memiliki arti Kota Tua. Istana Raja (Royal Palace), gedung Parlemen Swedia (Riksdag), dan museum Nobel dapat dilihat di sini selain Anda menikmati jalan gang sempit di tengah bebatuan bangunan tua.

20140315_170121

 

20140315_170455

4. Stadhuset

Stadhuset, atau Stockholm Public Hall, adalah salah satu landmark andalan kota Stockholm. Tempat ini mungkin paling terkenal sebagai tempat pesta jamuan makan malam untuk pesta Nobel setiap tahunnya.

DSC01145

DSC01135
in the Golden Hall of Mountain King

 

6. Katarina Hissen

Kunjungi Katarina Hissen untuk mendapatkan pemandangan tertinggi di tengah kota Stockholm. Katarina Hissen, yang dialihbahasakan menjadi Lift Katarina, dapat dicapai di Slussen.

DSC00877r

 

DSC01643

Jangan lupa ketika di Stockholm untuk makan di restoran dengan cita rasa lokal, Max. Konon burger-nya paling enak se-Skandinavia. Selain murah dan enak, ada Wi-Fi gratis yang mungkin jarang bisa ditemui di tempat lain di Stockholm.

Selamat jalan-jalan. Salam.