Pada jaman yang sudah berbeda ini perkembangan teknologi semakin maju, hampir di setiap negara bermunculan startup-startup baru yang mendukung perkembangan ekonomi negara tersebut dari berbagai bidang startup termasuk dari bidang jual-beli barang online. startup di indonesia yang sangat terkenal yaitu traveloka, tokopedia, gojek, dan bukalapak.
dan tidak ketinggalan tanggapan masyarakat terhadap startup-startup yang ada di indonesia yang selalu membanjiri twitter. tanggapan masyarakat yang bersifat buruk dan baik sangat banyak sekali di twitter yang ditujukan untuk para startup-startup tersebut.
pada pembelajaran machine learning terdapat metode yang dapat mengklasifikasi sebuah text yang sebelumnya telah dipelajari oleh sebuah program tersebut, yaitu menggunakan teknik naive bayes classifier.
tweet -tweet yang tersebar di twitter.com mengenai ecommerce di indonesia dapat kita klasifikasikan dengan menggunakan metode naive bayes classifier. dataset tweet ecommerce di indonesia yang kita akan gunakan kali ini didapatkan dari https://www.kaggle.com/robertvici/indonesia-top-ecommerce-unicorn-tweets dengan format file JSON.
untuk mengeksekusi naive bayes classifier, disini kita menggunakan library scikit learn pada bahasa pemograman python. untuk langkah yang pertama yaitu kita menginvestigasi atau mengecek dataset yang telah kita dapatkan sebelumnya menggunakan library pandas.
dimulai dengan memanggil library python pandas lalu dilanjutkan dengan membuat variabel dengan nama ecommerceyang didalamnya terdapat dataset dari setiap ecommerce.
import pandas as pd
bukalapak = pd.read_json("bukalapak.json", lines=True)
tokopedia = pd.read_json("tokopedia.json", lines=True)
lazada = pd.read_json("lazadaID.json", lines=True)
shopee = pd.read_json("ShopeeID.json", lines=True)
blibli = pd.read_json("bliblidotcom.json", lines=True)
selanjutnya kita akan mengecek jumlah kolom, tweet, dan jumlah data atau panjang data yang terdapat di dataset setiap variabel. untuk contoh disini kita menggunakan dataset tokopedia.
print(tokopedia.columns)
print(len(tokopedia))
print(tokopedia.loc[12]["tweet"])
Output:
Index([‘id’, ‘conversation_id’, ‘created_at’, ‘date’, ‘time’, ‘timezone’,
‘user_id’, ‘username’, ‘name’, ‘place’, ‘tweet’, ‘mentions’, ‘urls’,
‘photos’, ‘replies_count’, ‘retweets_count’, ‘likes_count’, ‘hashtags’,
‘cashtags’, ‘link’, ‘retweet’, ‘quote_url’, ‘video’, ‘near’, ‘geo’,
‘source’, ‘user_rt_id’, ‘user_rt’, ‘retweet_id’, ‘reply_to’,
‘retweet_date’, ‘translate’, ‘trans_src’, ‘trans_dest’],
dtype=’object’)
31152
Biar makin #SemangatRamadan, kamu bisa bergaya makin kece pakai merchandise Gatot Kaca. Yuk, beli sekarang karena ada Cashback hingga Rp15.000! Klik gambar di bawah 👇
setelah mengecek jumlah kolom, tweet, dan jumlah data, selanjutnya kita mengklasifikasi dataset, diawali dengan membuat variabel untuk setiap ecommerce yang didalamnya terdapat pemanggilan kolom tweet dari dataset setiap eccomerce lalu merubahnya kedalam list.
dilanjutkan dengan memanggil setiap variable yang merupakan tipe data list lalu menambahkannya. selanjutnya membuat variabel labels yang dimana didalamnya membuat list dengan label angka 0 untuk list tweet bukalapak, label angka 1 untuk list tweet tokopedia, label angka 2 untuk list tweet lazada, label angka 3 untuk list tweet shopee, dan yang terakhir label angka 4 untuk list tweet blibli.
bukalapak_tweet = bukalapak["tweet"].tolist()
tokopedia_tweet = tokopedia["tweet"].tolist()
lazada_tweet = lazada["tweet"].tolist()
shopee_tweet = shopee["tweet"].tolist()
blibli_tweet = blibli["tweet"].tolist()
all_tweet = bukalapak_tweet + tokopedia_tweet + lazada_tweet + shopee_tweet + blibli_tweet
labels = [0] * len(bukalapak_tweet) + [1] * len(tokopedia_tweet) + [2] * len(lazada_tweet) + [3] * len(shopee_tweet) + [4] * len(blibli_tweet)
selanjutnya kita masuk ke training dan test dataset, kita disini menggunakan fungsi train test split yang dipanggil dari library scikit learn dan fungsi model selection. untuk memanggil fungsi train test split dengan inputan variabel all_tweet sebagai X dan variabel labels sebagai y dengan train size sebesar 0.8 dan test size sebesar 0.2 dan dengan random state sebesar 1, kita menyiapkan empat variable yaitu train_data, test_data, train_labels, dantest_labels.
from sklearn.model_selection import train_test_split
train_data, test_data, train_labels, test_labels = train_test_split(all_tweet, labels, train_size=0.8, test_size=0.2, random_state=1)
setelah melakukan train test split untuk dataset, selanjutnya kita memformat dataset untuk scikit learn, kita perlu mengubah data kita menjadi format yang dapat digunakan scikit-learn. Untuk melakukannya, kita akan menggunakan fungsi scikit learn yaitu CountVectorizer dan memanggil fungsi fit untuk mengajarkan kosakata dari set pelatihan. dilanjut dengan membuat variabel train_counts dan test_counts yang didalamnya terdapat fungsi .transform yang berfungsi untuk mengambil daftar string dan akan mengubah string tersebut ke dalam jumlah kata-kata yang terlatih.
from sklearn.feature_extraction.text import CountVectorizer
counter = CountVectorizer()
counter.fit(train_data, train_labels)
train_counts = counter.transform(train_data)
test_counts = counter.transform(test_data)
lalu kita masuk ke train dan test naive bayes classifier, dimulai dengan membuat variabel classifier yang didalamnya terdapat pemanggilan fungsi MultinomialNB yang dilanjutkan dengan memanggil fungsi fit dengan dua parameter yaitu variabel trains_counts dan trains_label. Lalu membuat variabel prediction yang berfungsi untuk mengambil daftar poin yang akan diuji yaitu dengan parameter test_count.
from sklearn.naive_bayes import MultinomialNB
classifier = MultinomialNB()
classifier.fit(train_counts, train_labels)
prediction = classifier.predict(test_counts)
untuk dapat mengetahui seberapa akurasi untuk model kita kali ini, kita dapat menggunakan fungsi dibawah yaitu mengevaluasi model.
from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels, prediction))
Output:
0.9344210798625227
Cara lain Anda dapat mengevaluasi model Anda adalah dengan melihat confusion matrix. Confusion matrix adalah tabel yang menjelaskan bagaimana classifier Anda membuat prediksinya.
from sklearn.metrics import confusion_matrix
print(confusion_matrix(test_labels, predictions))
Output:
[[ 8890 131 85 845 374]
[ 201 4918 389 490 245]
[ 260 192 23870 791 972]
[ 141 79 228 52659 368]
[ 112 42 398 755 10801]]
selanjutnya kita masuk ke tahap akhir yaitu memeriksa atau mengetes model yang kita telah buat. untuk dapat mengetes model, kita membuat sebuah string acak yang mengandung konteks mengenai ecommerce di indonesia lalu kita simpan kedalam variabel tweet. lalu variabel tweet akan ditransform menggunakan fungsi .transform supaya dapat mengambil daftar string dan akan mengubah string tersebut ke dalam jumlah kata-kata yang terlatih.
terakhir, kita membuat variabel final yaitu klasifikasi_tweet yang dimana berfungsi mengklasifikasi string yang telah disimpan di variabel tweet dengan fungsi .predict dengan parameter tweet_counts . untuk output yang dihasilkan variabel klasifikasi_tweet berupa list integer 0 untuk Bukalapak, 1 untuk Tokopedia, 2 untuk Lazada, 3 untuk Shopee, dan 4 untuk Blibli yang telah dispesifikan menggunakan pengkondisian if dan elif.
tweet = "hallo mbak, saya sangat senang belanja di aplikasi merah inih"
tweet_counts = counter.transform([tweet])
klasifikasi_tweet = classifier.predict(tweet_counts)
if klasifikasi_tweet == [0]:
print("Bukalapak")
elif klasifikasi_tweet == [1]:
print("Tokopedia")
elif klasifikasi_tweet == [2]:
print("Lazada")
elif klasifikasi_tweet == [3]:
print("Shopee")
elif klasifikasi_tweet == [4]:
print("Blibli")
Output:
Bukalapakkita mendapatkan hasil dari model yang telah kita buat dengan tweet “hallo mbak, saya sangat senang belanja di aplikasi merah inih” yaitu bukalapak, yang dimana klasifikasi dari model yang telah kita buat dapat bekerja dengan baik. untuk dapat mengakses notebook secara lengkap dapat akses di
https://www.kaggle.com/regiapriandi/ecommerce-tweet-classification-indonesiaTerimakasih atas perhatian teman-taman, saya harap tulisan ini dapat membantu teman-teman dan dapat bermanfaat, semoga kita selalu diberi kesehatan.
Semangat belajar.