Advertisement

Monday, February 26, 2018

Social Media Analytics (SMA)

KJN Gan, bisa ga sih kita ngolah data media sosial tapi ga usah pake ribet ... Saya kan sibuk Gan, setiap hari harus update Instagram, ke Mall, jalan², bengong sambil dengerin musik, & nonton Sinetron. Mana sempet kalau harus belajar yang terlalu rumit gitu, pusing kepala Barbie.
TSya ... ada sih ... mari kita bahas contoh aplikasi sederhana yang bisa dibuat dengan modul Pattern dan Textblob. (featuring Sastrawi, networkx, pyLDAvis, & NLTK).

Bagi praktisi atau mereka yang sedang jenuh belajar teori & ingin hands-on dengan aplikasi nyata dan ndak terlalu memperdulikan (dulu) masalah teori/scalability, maka post ini untuk kamu.. ya kamu ... :) ... Di post ini saya (berusaha) tidak menyentuh teori dan menunjukkan mudahnya melakukan Social Media Analytic (SMA) dasar dengan Python.




Syarat:

  1. Ngorbanin kuota nonton drama korea di youtube sedikit untuk jalanin program ini
    (butuh koneksi internet saat run programnya).
  2. Install modul yang dibutuhkan (diterangkan kemudian).
  3. Download tiga file berikut: TSutantoSMA.pyinstalModul.py, dan Easy_Sma.ipynb dengan cara membuka link ini, kemudian klik kanan pada masing-masing file tersebut dan memilih menu "Save (content) as".
KJN'Gan syaratnya apa ga bisa cuma satu aja? ... Banyak amat ada 3!...
TSBisa, tapi 1.a, 1.b, dan 1.c ... gimana? ... 
KJNya udah deh gapapa 'Gan .. ane rela berkorban ... Ane mah gitu orangnya, baik pisan ... sok atuh 'Gan lanjutkeun ... 
TS... #MencobaBersabar ... #tarikNafas3x

Instalasi Modul

Sayangnya saat tulisan ini dibuat sepertinya ada masalah dengan source modul pattern. Sehingga terpaksa instalasi modulnya agak ndak straight forward. Ok, here's what we need to do (asumsi dilakukan di windows):
  1. Install git : https://git-scm.com/downloads
    Cara install-nya mudah, ibarat kata Profesor Xavier: "pokoknya next-next aja sampe ada tombol finish" 😄
  2. Install modul pattern dengan cara membuka terminal (command prompt)
    C:\Temp\git clone -b development https://github.com/clips/pattern
    C:\Temp\cd pattern
    C:\Temp\python setup.py install # Linux ==> sudo python3.6 setup.py install
    Disarankan buka command prompt-nya sebagai administrator. Catatan: jangan lakukan ini:
    "pip install pattern" atau "pip install pattern3".
  3. Install modul² lain yang dibutuhkan: Mudahnya gunakan file ini : instalModul.py.
    File tersebut akan secara automatis menginstall/update modul-modul yang dibutuhkan (Notes: the code is given 'as is' & without warranty, you are responsible for your own action). Untuk menjalankan-nya (misal instalModul.py ada di C:\Temp):
    C:\Temp\python instalModul.py
    [Kalau masih belum jelas, examine this screenshot]
  4. "Kalau" ada error ketika install modul "WordCloud", maka lakukan hal ini:
    a. Unduh wordcloud-1.3.3-cp36-cp36m-win_amd64.whl dari Link ini.
    b. Misal file tersebut berada di "C:\Temp", jalankan perintah ini untuk menginstal modul wordcloud:
    C:\Temp\pip install wordcloud-1.3.3-cp36-cp36m-win_amd64.whl
Dengan mengasumsikan semua modul terinstal dengan baik (tanpa error), "TSutantoSMA.py" dan "Easy_Sma.ipynb" sudah di unduh ke (misal) C:\Temp, mari kita mulai saja ber-SMA ria ... :) ...  Pada kesempatan kali ini kita coba kaji pendapat penduduk twitter tentang "Jakarta", karena tau kan 'Gan... Jakarta lagi panas ... 🙊 ... Jadi mari kita pakai keywords topic berikut untuk mencoba mencari tau apa kata netizen tentang Jakarta di 7 hari ke belakang ini (mengapa 7 hari? baca post ini):

topic = '"menurut saya" jakarta'

KJN'Gan, entar dulu 'Gan ... Agan "Encu" ya? ... 
TShah Encu?! .... Apaan tuh? ... 
KJNiye Encu, itu pendukung si Anu bin Fulan, Agan Tercyduk nih ....
TS: ... eh 'Tong ... SMA ga kenal pro-kontra atau hitam/putih, justru kita mau lihat apa kata si data...
KJNkirain gitu 'Gan ...
TS#JantungMulaiTersiksa ... Kalau ente ga suka ganti aja variabel "topic" dengan keyword lain yang ente suka, misal '"Ice Cream" rasa Micin'
KJNya ga usah sewot gitu lah 'Gan ... Woles aja ... 
TS#TarikNapesDalemDalem7x ...

Mulai dari post ini saya mau coba kombinasikan Tulisan dan Video, karena TS Males full tulisan lama nulisnya 😅 Semoga dengan video juga jadi lebih jelas ... Selanjutnya silahkan lanjut di video ya (pause videonya jika penjelasan TS terlalu cepat):
 

Kembali ke laptop Blog (Tulisan):

Catatan:
  1. Sentiment Analysis diatas tidak menggunakan proper Indonesian NLP, autocorrect, stemming, dll (kecuali saat Topic Modelling), tapi (SA) menggunakan automatic machine translation method seperti di paper ini
  2. retweet tidak saya filter (biarkan menjadi duplikasi). You can modify this, I left a hint in the code.
  3. Kata kunci (variabel topic) akan mempengaruhi berapa banyak tweet akan di dapatkan. Notes that walau N di set besar, tapi jika tweet 7 hari kebelakang hanya sedikit terhadap topic yang diberikan, maka tweet yang didapatkan akan tetap sedikit. Sebaliknya, jika topic yang dipilih sedang trend saat ini, maka kemungkinan besar akan ada cukup banyak tweet yang dapat di analisa. Jika tidak, maka sedikit atau bahkan tidak ada sama sekali tweet yang akan berhasil di crawl. 
  4. Jumlah tweet juga akan terbatas oleh aturan twitter ini yang juga pernah dibahas disini. Jika telah melewati batas quota akan muncul pesan "SearchEngineLimitError". Jika ingin mengolah data tweet di masa lampau (>7hari), silahkan baca post ini.
  5. Scalability dan Efisiensi/Performa tidak dihiraukan (murni implementasi dasar) agar code-nya mudah dipahami. Silahkan improve untuk latihan.... Atau kita bisa discuss sambil ngopi-ngopi kalau ketemu 😉.
KJNLoh Gan itu akurat ga sentimen analysis-nya?
TSKatanya ga mau teori ... Cara ini dasar sekali (Machine-Translated-Lexicon-Based) dan tidak terlalu akurat, but will do (i.e. lumayan untuk belajar). Kalau lagi bener dan ingin baca teorinya silahkan baca ini : [Link1] [Link2].

KJN Pak ada yang lebih mudah dari cara di video diatas & berhadiah Tongkat Selpih ga?
TS:  minum Panadol rasa Jambu Monyet terus jalan pulang sambil ngemil Mi'cin  ...    

#KJN = #KidsJamanNow

~~~~~~ FIN ~~~~~~


How to improve:
  1. Clean & Relevant Data: Make sure datanya bersih dari tweet yang tidak terkait dengan topic & dalam timeframe yang tepat (Bukan sekedar 7 hari ke belakang). This can be done by carefully determining the topic keywords (use double quotation "" for phrases & look at hashtag trends) and-or manually filter the data.
  2. Gunakan NLP Indonesia (preprocessing: Tokenization, Stopwords, stemming, Lexicon Set, dll). Jalankan fungsi detect language (misal dengan langdetect/langid), karena orang Indonesia banyak yang seperti saya yang suka campur² bahasa Inggris & bahasa Indonesia 😁 #maaf
  3. Gunakan word embedding seperti Word2Vec + Known Strong Polarized words atau dengan kata lain gunakan penggabungan antara Domain Knowledge + Machine Learning. Use this knowledge/results in the crawling and in the Lexicon Set/SMA Models.
  4. Ensemble beberapa SA models (Misal Lexicon + satu atau lebih supervised approaches). Notes that supervised approach butuh training data, artinya beberapa data (tweet/social media posts) secara manual harus diberi label.
  5. Padukan Centrality Analysis dan Community Analysis ke Sentiment Analysis-nya : Hybrid Network and Content Based Analysis. Do this if someone pays you (well) to do it ... :) ... cause it's a lot of work ... :D ... but the analysis is going to be deep and pretty ... 
  6. Detect buzzer/bots and put some weights on their tweets (or simply exclude). You can also examine verified vs unverified users analysis (need API access). Hhhmmm... tahun ini ingin bikin project tentang ini ... #kode 😊
  7. Improve scalability efficiency. Code yang digunakan di post ini belum di optimasi sama sekali, there's lots of room for improvements. 
  8. Others ... (Please let me know in the comment section if you have some thoughts/experience that you want to share with us: Insya Allah pahala 'Gan 😊)
Kalau ada pertanyaan monggo comment di bawah.... Silahkan share jika sekiranya bermanfaat, like kalau emang suka, dan cicing ajah kalau ngga ... 😄

Cheers,

</TES>®

Code Encodings dan Module (Versions) yang dipakai di Blog Post ini:
# -*- coding: utf-8 -*-
# Python '3.6.3', Sastrawi '1.0.1', MatPlotLib '3.2.5' , Pattern '2.0.5', TextBlob '1.0.22', pyLDAvis '2.1.1'

Gallery Outputs:

Tokenization dalam Bahasa Inggris, Indonesia, & Alay

Kali ini kita akan membahas salah satu bagian penting dari Text Mining/Natural Language Processing: Tokenization. Tokenization adalah salah satu bagian penting dari proses awal pengolahan data teks. Pengolahan data teks dimulai dengan proses preprocessing yang terkadang disebut juga sebagai data munging/wrangling. Membahas definisi exact dari apa itu data Munging atau wrangling dan apa bedanya menurut saya tidak penting dan menghabiskan waktu. Salah satu istilah yang lebih umum dipakai adalah preprocessing, so mari kita pakai istilah ini saja.
[Text Analytics </TES>®]
Sebelum data diolah dalam model data science/machine learning, data dalam bentuk teks diolah dalam preprocessing terlebih dahulu. Di dalam preprocessing data teks ada beberapa sub proses utama:


  1. Sumber Data:
    Data dalam berbagai format (istilahnya variety di Big Data)  diterima oleh sistem/user. Contohnya berformat HTML, XML, pdf, csv, xls, atau data dari API media sosial yang sekarang seringnya berformat JSON.
  2. Parser:Formatted teks data seperti yang disebutkan di (1) biasanya memuat perintah "tags", misal <b>, {var:"text}, dsb.  Parser merubah teks data menjadi plain information yang siap diolah ke bentuk selanjutnya. Contoh:
    import json
    T = '{"Nama":"Udin", "umur":79}'
    data = json.loads(T)
    print("Nama:{0}, Umur:{1}".format(data['Nama'],data['umur']))
    TipsHati-hati walau di Pyhton tanda ' dan " interchangeable untuk string, tapi tidak untuk JSON.
    Di contoh di atas sebuah string T (misal berasal dari data berformat JSON) di load ke variabel data yang bertipe dictionary.
  3. Cleansing:Setelah proses Parser barulah text cleansing dilakukan. Pada proses ini akan dilakukan beberapa proses, sebagai contoh tokenization, filtering (e.g. stopwords removal), stemming/lemmatization, dsb. Nah di post ini mari kita fokus ke Tokenization terlebih dahulu.
Apa itu tokenization ? Apa ada hubungannya dengan Token di Gojek, Listrik PLN, atau TimeZone? ... yaaa,... kalau mau maksa sih ada aja hubungannya 😅, tapi tokenization disini adalah memisahkan kata, simbol, frase, dan entitas penting lainnya (yang disebut sebagai token) dari sebuah teks untuk kemudian di analisa. Token dalam NLP sering dimaknai dengan "sebuah kata", walau tokenisasi juga bisa dilakukan ke kalimat atau paragraf [more about this latter].

Stop, stop Gan ... ane udah paham ... udah ga usah dilanjutkan ... Gampang ini mah di Python. Gini doang kan?
T = "hi hi, I am Mukidi. Nice to meet you :)"
tokens = T.split()
print(tokens) # ['hi', 'hi', 'I', 'am', 'Mukidi.', 'Nice', 'to', 'meet', 'you', ':)']
Selesai kan Gan urusan? .... #lelumpatan #NgajakMakanMakan #BegadangMakanKacang ....

Bukan maksud hati untuk mempersulit hidup permasalahan, HHhmmm...🤔 sayangnya tidak sesederhana itu. Secara umum memang dalam bahasa Inggris, Indonesia dan bahasa-bahasa lainnya yang menggunakan alfabet romawi (a-z,0-9) "biasanya" memang dipisahkan dengan spasi. Dengan kata lain "mungkin" >90% memang begitu, tapi sayangnya tidak selalu (misal Kata Majemuk di bahasa Indonesia). Selain itu ada masalah lain:

Symbols 

Di output code diatas, hasil split ndak murni sebuah kata. "hi," dan "Mukidi." mengandung tanda koma dan titik. Kalau tidak ditangani maka kita akan mengolah "hi" dan "hi," sebagai 2 entitas yang berbeda.

Stop, stop Gan ... kalau cuma masalah itu, ane tau solusinye:
T = "hi hi, I am Mukidi. Nice to meet you :)"
symbols = [',', '.',':', ')']
for s in symbols:
    T = T.replace(s,' ')
tokens = T.split()
print(tokens) # ['hi', 'hi', 'I', 'am', 'Mukidi', 'Nice', 'to', 'meet', 'you']
Gimane? sip kan? #Sedakep #PalaMenengadah #MulutMangap #MintaDiFoto

Inefficiency

Hati-hati dengan perintah "T = T.replace(s,' ')" dengan cara diatas.

Python akan membuat memory baru untuk hasil replace di setiap iterasi-nya. Bayangkan di setiap iterasi ada "copy of T" di memory. Dan sayangnya setau saya (please CMIIW) tidak ada parameter untuk merubahnya menjadi "inplace" untuk perintah "replace" [Link]. Mengapa? Karena string di Python object immutable (tidak bisa dirubah), sama seperti tipe data Tuple. Ini ilustrasinya:

T = "hi hi, I am Mukidi. Nice to meet you :)"
print(T[0]) # ok, output "h"
T[0] = 'H' # => Error!!!! ...

Sehingga kalau T besar (misal mengolah banyak dokumen dengan ukuran masing² beberapa MBs) maka iterasi diatas akan berjalan lambat karena di memory akan melakukan create & destroy T pada setiap iterasi. Intinya komputer panas Gan ... kerjanya juga ndak efisien. Tapi ok untuk string yang kecil dan replace yang sederhana (misal status twitter).  Kalau keperluan replace-nya rumit, biasanya pakai regular expression (dibahas di post lain). Tapi kalau replace-nya sederhana maka perintah standard "replace" lebih cepat ketimbang reguler expression [baca disini].

"Don't Reinvent The Wheel"

Daripada susah², mending pakai module saja. Kalau kata orang Eropa: "mbok ya ora sah neko-neko to mas" 😄. Salah satu module untuk pengolahan bahasa yang paling tersohor adalah NLTK. Menggunakan NLTK tokenization diatas dilakukan dengan cara sebagai berikut:
import nltk
T = "hi hi, I am Mukidi. Nice to meet you :)"
Sentence_Tokens = nltk.sent_tokenize(T)
# Sentence_Tokens = ['hi hi, I am Mukidi.', 'Nice to meet you :)']
Word_Tokens = nltk.word_tokenize(T)
# Word_Tokens = ['hi', 'hi', ',', 'I', 'am', 'Mukidi', '.', 'Nice', 'to', 'meet', 'you', ':', ')']

Ntar dulu Gan ... itu di Word_Tokens masih ada symbol²-nya!... :(
Tenang Boss .... Setelah dapet tokens-nya baru kita lakukan cleansing, misal:
symbols = set(symbols)
Tokens_1 = [w for w in Word_Tokens if w not in symbols]
# ATAU jika hanya akan mengolah kata yang berupa huruf A-A, a-z, 0-9
Tokens_2 = [w for w in Word_Tokens if w.isalnum()]
# Tokens_1==Tokens_2 = ['hi', 'hi', 'I', 'am', 'Mukidi', 'Nice', 'to', 'meet', 'you']
Notes di contoh di atas "symbols" di rubah dari list ke set, karena di python "x in set" jauh lebih cepat ketimbang "x in list" [Keterangan lebih lanjut disini].  O iya ... best practice-nya ... sebaiknya sebelum di tokenize sebaiknya Text dirubah ke lowercase dulu. Perintahnya mudah (T = T.lower()). Namun kita akan bahas normalisasi tokens/words lebih lanjut di lain waktu. Last but not least, alternatif cara dengan isalnum diatas akan gagal jika di token-nya terdapat spasi, " ' ", "-", atau symbol lain selain A-Z,a-z, dan 0-9.

Tokenization tidak hanya language dependent, tapi juga environment dependent

Tokenization sebenarnya tidak sesederhana memisahkan berdasarkan spasi dan removing symbol. Sebagai contoh dalam bahasa Jepang/Cina/Arab suatu kata bisa terdiri dari beberapa karakter. Lalu seperti yang sudah dijabarkan sebelumnya ada kata² majemuk (2 atau lebih kata yang bermakna tunggal) seperti : "terima kasih", "rumah sakit", "tanggung jawab", dsb. Tidak mungkin untuk membahas semua Tokenization di post ini. Pembahasan akademis tentang Tokenizer ini-pun tidak sederhana, berikut saya contohkan beberapa paper akademis terkait tokenizer (pembahasan detailnya nanti di buku yang saya tulis saja ya, terlalu berat untuk blog post) [J.Jiang 2007][Jirí Maršík 2012][Horsmann 2015].

Di atas sudah dibahas tokenization bahasa Inggris, berikutnya kita akan bahas special tokenization (misal twitter) dan tokenization dalam bahasa Indonesia.

Tokenization data twitter (Alay):
 NLTK memiliki tokenization khusus untuk twitter. Berikut contohnya:
from nltk.tokenize import TweetTokenizer

Tokenizer = TweetTokenizer()
tweet = "This blog post is so cooool #smiley: :-) :-P <3 and some arrows < > -> <--"
tweet_token = Tokenizer.tokenize(tweet)
# tweet_token = ['This', 'blog', 'post', 'is', 'so', 'cooool', 
# '#smiley', ':', ':-)', ':-P', '<3', 'and', 'some', 'arrows', 
# '<', '>', '->', '<--']
Perhatikan bagaimana Tokenizer-nya tetap menjaga tanda hashtag (#). Bahkan kita bisa mencoba untuk menangani status alay sebagai berikut:
Tokenizer_Alayers1 = TweetTokenizer(strip_handles=True, reduce_len=True)
tweet = "@KiranaSutanto And IIIIIIiiiiii... Will Alwayys Luv Uuuuuuuuu <3 "
tweet_token = Tokenizer_Alayers1.tokenize(tweet)
# tweet_token = ['And', 'IIIiii', '...', 'Will', 'Alwayys', 'Luv', 'Uuuu', '<3']
Parameter "strip_handles" akan menghilangkan mention, dan "reduce_len" akan mengurangi character repetition >3 ke 3. Untuk alayers yang menggunakan character² aneh, NLTK punya moses tokenizer. Atau kombinasi antara modul unidecode dan-atau word correction seperti pyenchant (Py 3.4<), module autocorrect, atau generic spell_checker seperti Norvig Spell Checker. Berikut contohnya:
from unidecode import unidecode
Tweet_Alay = "ḊḕḀṙ ₲ØĐ, p̾l̾e̾a̾s̾e ḧḕḶṖ ṁḕ ẇḭṮḧ ṮḧḭṠ ḀḶḀẏḕṙṠ"
Tweet_Waras = unidecode(Tweet_Alay).lower()
# Tweet_Waras = 'dear god, please help me with this alayers'

Tokenizer Bahasa Indonesia:

Alayers ga penting banget sih, mari kita tinggalkan saja mereka dan bahas sesuatu yang lebih penting: Tokenizer bahasa Indonesia. First thing first, sayangnya NLTK setau saya tidak support Bahasa Indonesia, bahkan module NLP Python yang support bahasa Indonesia secara umum sangat langka (ehm ehm ehm ... #KodeKeras #ParaPenelitiNLPIndonesia #AtauSastraIndonesia). Kalaupun ada, dengan berbagai keterbatasan saja. Misal yang saya tau ini (Kalau tau more than this please comment di bawah ya, thanks 😊):

  1. Sastrawi 1.0.1 untuk stemming & stopwords bahasa Indonesia.
  2. Indonesian stopwords only
  3. Daftar Kata Dasar Indonesia (Saya punya yang dengan part-of-speech nya cuma lupa sumbernya 😅🙏)
  4. Wiktionary:ProyekWiki bahasa Indonesia [termasuk Lexicon]
  5. Daftar Kata Baku-Tidak Baku
  6. Last, but not least my favourite: Spacy.
Kita akan lakukan tokenisasi Bahasa Indonesia dengan Module Python Spacy. Saya pribadi lebih suka Spacy ketimbang Gensim, TextBlob, atau bahkan NLTK. Mengapa? Spacy cocok untuk level produksi (License-nya MIT !!!... 😍). Spacy sangat (sangat) cepat (me love fast/efficient modules 😍), ini perbandingan yang saya ambil dari websitenya:
[Spacy Benchmarks]

Sebelum kita mulai Tokenisasi Bahasa Indonesia dengan Spacy, pertama-tama saya perlu menyebutkan bahwa support untuk Bahasa Indonesia masih dalam tahap Alpha. Tapi development dan system-nya promising banget. Lagipula modifikasinya cukup mudah (kita bahas kalau kopi darat saja, lewat blog post riweuh 😅). Ok, cukup pengantarnya, here goes (probably) the most important code snippets of this post:
# Need Spacy >= 2.05
from spacy.lang.id import Indonesian
import spacy

nlp = Indonesian()  # use directly
nlp = spacy.blank('id')  # blank instance'
Teks = nlp('Hamzah melihat kupu-kupu di Taman')
Token_kata = [token.text for token in Teks]
# Token_kata = ['Hamzah', 'melihat', 'kupu-kupu', 'di', 'Taman']

There has been a very interesting development di Spacy. Saya berharap para ahli Bahasa Indonesia (Sastra Indonesia) dan para peneliti NLP Indonesia untuk gabung ke Spacy ketimbang menciptakan module Python baru tersendiri. Dengan begitu ilmu NLP-Indonesia bisa berkembang lebih cepat & efisien untuk kepentingan bersama.

Btw, post ini udah kepanjangan... saatnya Ishoma dan mengerjakan kerjaan lainnya ... 😄 ... Silahkan share jika sekiranya bermanfaat, like kalau emang suka, dan cicing wae kalau ngga ... 😁

Cheers,

</TES>®

Code Encodings dan Module Versions yang dipakai di Blog Post ini:
# -*- coding: utf-8 -*-
# NLTK '3.2.5' , Spacy '2.0.5', unidecode '1.0.22', json '2.0.9'

PS: Di near future saya ingin nulis tentang scalable Text Preprocessing, kalau udah lama ga ditulis-tulis juga tolong diingatkan ... 🙏😊

Testing Latex: zaNi=1ϕ(x)dx

Instalasi MongoDB

Mari kita mulai dengan cara menginstall MongoDB ver 3 dan RoboMongo di operating system Windows (7/8/10). RoboMongo adalah “PHPMyAdmin”-nya MongoDB, ia digunakan untuk memudahkan proses managemen database di MongoDB. Instalasi MongoDB relatif mudah, namun ada beberapa catatan penting yang perlu diperhatikan. Berikut langkah-langkah dan catatan kecil saya ketika menginstal MongoDB di Windows (Instalasi & implementasi di Linux sebenarnya lebih mudah :) ).
  1. Download versi terakhir MongoDB di link berikut (LINK), dan RoboMongo di Link ini (LINK).
    Catatan: Jangan salah pilih versi 32bit/64bit. Jika komputer yang digunakan 64bit, sebaiknya unduh yang versi 64bit, versi 32 bit memiliki banyak keterbatasan yang tidak sesuai untuk data yang besar.
  2. TIPS: Saat instalasi pilih “Custom”. Lewat pilihan Custom akan ada pilihan ke folder mana MongoDB akan di-install. Saya pribadi lebih menyukai program-program terpenting di install ke root (misal C:\MongoDB).
  3. Siapkan 3 buah folder lain: datadbdan logMisal “D:\MongoDB\log\”, “D:\MongoDB\data\”, dan “D:\MongoDB\data\db\”. Catatan: Folder data dan logdapat diletakkan dimana saja, defaultnya adalah “C:\data\db”.  Usahakan untuk meletakkan folder ini di drive dengan space terbanyak (Untuk production/profesional Sebaiknya drive khusus database – NAS).
  4. Tambahkan "C:\MongoDB\Server\3.0\bin" di Path anda [optional].
  5. Install MongoDB sebagai Service: Buka NotePad atau sembarang simple text editor lain. lalu ketikkan perintah-perintah berikut dan save sebagai “mongo.bat”. Sesuaikan dengan Letak data dan Log yang sudah ditetapkan di langkah ke [3]. Atau silahkan unduh filenya DISINI (Karena filenya ".bat" maka browser akan memberikan warning, jangan hawatir filenya hanya berisi perintah -perintah dibawah. If not sure, silahkan buka dengan NotePad untuk memastikan). Jalankan mongo.bat lewat Command Prompt sebagai administrator (Klik kanan icon command prompt lalu pilih run as administrator). “CD”/pindah ke directory dimana mongo.bat tersimpan, lalu jalankan filenya dengan mengetikan “mongo.bat” lalu tekan enter (eksekusi). ==> Yakinkan tidak ada pesan Error. Proses ini hanya dijalankan satu kali saja, tidak perlu dilakukan setiap komputer dinyalakan.
    echo logpath=D:\MongoDB\log\mongo.log
    C:\MongoDB\mongod.cfg
    C:\MongoDB\Server\3.0\bin\mongod.exe--dbpath D:\MongoDB\data\db --config C:\MongoDB\mongod.cfg --install
    net start MongoDB
  6. Instalasi RoboMongo sangat sederhana, jadi tidak perlu dibahas. Namun, apabila ada kendala silahkan komen dibawah.
  7. Restart [Just to make sure :)]
Cek Koneksi MongoDB:Setelah seluruh langkah diatas dilakukan, ada 2 cara memverifikasi apakah MongoDB telah terinstal dengan baik: [1]. Tombol Windows +R==>”Services.Msc”==> Cek di list service: “mongoDB”, atau [2]. Command Prompt==> “mongo” ==> enter, atau melalui RoboMongo seperti yang akan dijelaskan dibawah ini:
  1. Jalankan (run/eksekusi) RoboMongo.
  2. Pada tampilan awal klik “create
  3. Namakan koneksinya sesuai selera :) … misal “Koneksi_default
  4. Defaultnya MongoDB dapat diakses lewat localhost dengan port 27017, jadi kalau sebelumnya tidak melakukan customize saat instalasi, jangan rubah nilai-nilai ini.
  5. Tekan “save” lalu double click koneksi yang baru saja dibuat.
  6. Jika berhasil akan nampak tampilan ‘seperti’ gambar dibawah.
    RoboMongo InterfaceBeberapa fungsi dasar juga saya jelaskan di gambar tersebut. Jika tidak berhasil silahkan cek kembali lankah-langkah diatas & ulangi sampai lebaran tahun depan (#kidding :p , komen saja dibawah dan pesan error yang muncul)