Selasa, 20 Maret 2018

SENTIMENT ANALYSIS


TUGAS DEEP LEARNING
ANGGOTA  KELOMPOK

- EGA DWI PRASETYA
- MUHAMMAD SUKRI ADIYANT0
- MUHAMMAD JANUARDI SANTOSO
- NUUR MADANI ABUL HAKIM
Pada postingan kali ini akan dibahas mengenai SENTIMENT ANALYSIS dan cara implementasi nya.

APA ITU SENTIMENT ANALYSIS ?
Opinion Mining / Sentiment Analysis (sebagian besar researcher menganggap dua istilah ini sama/interchangeable) merupakan sebuah cabang penelitian di domain Text Mining yang mulai booming pada awal tahun 2002-an. Riset-nya mulai marak semenjak paper dari B.Pang dan L.Lee [1] keluar. Secara umum, Sentiment analysis ini dibagi menjadi 2 kategori besar :
1   Coarse-grained sentiment analysis
2   Fined-grained sentiment analysis
Coarse-grained sentiment analysis - kita mencoba melakukan proses analysis pada level Dokumen. Singkatnya adalah kita mencoba mengklasifikasikan orientasi sebuah dokumen secara keseluruhan. Orientasi ini ada 3 jenih : Positif, Netral, Negatif. Akan tetapi, ada juga yang menjadikan nilai orientasi ini bersifat kontinu / tidak diskrit.

Fined-grained sentiment analysis - kategori kedua ini yang sedang Naik Daunsekarang. Maksudnya adalah para researcher sebagian besar fokus pada jenis ini. Obyek yang ingin diklasifikasi bukan berada pada level dokumen melainkan sebuah kalimat pada suatu dokumen.
contoh :
    Saya tidak suka programming. (negatif)
    Hotel yang baru saja dikunjungi sangat indah sekali. (positif)
BAHASA R
Bahasa R (disingkat dengan R saja) adalah suatu fasilitas perangkat lunak terpadu untuk manipulasi data, simulasi, kalkulasi dan peragaan graphik. R memiliki kemampuan menganalisis data dengan sangat efektif dan dilengkapi dengan operator pengolahan array dan matriks. Tidak kalah menariknya R memiliki kemampuan penampilan grafik yang sangat sophisticated demikian pula peragaan untuk datanya.
Bahasa R merupakan versi sumber terbuka (open-source) dari bahasa pemrograman S (Azola dan Harrel, 2006). Versi komersial yang berbasis bahasa S adalah S plus. Bahasa R memiliki kemampuan yang tidak kalah dangan paket-paket program pengolahan data komersial bahkan dalam beberapa hal kemampuannya lebih baik. Perbandingan R khususnya terhadap SAS dibahas secara rinci oleh Azola dan Harrel (2006). Bahasa R mendapat sambutan yang baik dari kalangan statistikawan di seluruh dunia, sayangnya di Indonesia belum banyak dikenal. Tulisan ini dibuat untuk mengenalkan bahasa R khsusunya kalangan akademisi di Indonesia, dan untuk mendukung gerakan IGOS (Indonesia Go Open Source).

CONTOH PROGRAM SENTIMENT ANALYSIS DENGAN MENGGUNAKAN BAHASA R
Disini akan dibuat sebuah program sentiment analysis yang akan membaca tweets yang ada di twitter dimana kita bisa menganalisa isi dari tweets yang di fetch dari linimasa twitter.

Hal - hal yang kita persiapkan adalah sebagai berikut :

1. R studio
2. apps untuk api twitter dengan program kita
3. sebuah akun twitter
4. koneksi internet

LANGKAH PERTAMA ADALAH PASTIKAN ANDA MEMILIKI KONEKSI INTERNET YANG BAIK karna kita membutuhkan koneksi yang stabil guna mengambil tweets dari internet

LANGKAH KEDUA

Buat akun twitter jika belum memiliki akun twitter, jika sudah bisa lanjut ke langkah selanjutnya

LANGKAH KETIGA

Buat sebuah apps twitter dengan cara masuk ke https://apps.twitter.com dan login dengan akun twitter anda dan buat sebuah app, pertama login dengan akun twitter anda




buat aplikasi baru



Jika sudah dibuat masuk ke settings di akun twitter anda dan berikan akses untuk aplikasi anda


 Jika sudah buka bagian settings pada halaman apps https://apps.twitter.com

Ingat settingan diatas atau jangan tutup halaman tersebut karna token - token yang ada diatas akan kita butuhkan untuk melakukan sentimen analisis.


Oke buka R STUDIO


R studio merupakan salah satu aplikasi yang bisa kita gunakan untuk meng-compile dan meng-run program R

Tuliskan (copas) program dibawah


#********************************************************************************#
#UNTUK MENGDOWNLOAD PACKAGES YANG DIBUTUHKAN
#CUKUP RUN SEKALI
#********************************************************************************#
install.packages("twitteR") 
install.packages("ROAuth")
install.packages("tm")
install.packages("ggplot2")
install.packages("wordcloud")
install.packages("sentimentr")
install.packages("plyr")
install.packages("RTextTools")
install.packages("devtools")
require(devtools)
install.packages("e1071")
install_github("sentiment140","okugami79")
install_url("https://cran.r-project.org/src/contrib/Archive/Rstem/Rstem_0.4-1.tar.gz")
install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz")

#********************************************************************************#
#Dibawah digunakan untuk memanggil library yang sudah didownload diatas
#********************************************************************************#
library(e1071)
library(twitteR)
library(ROAuth)
library(tm)
library(ggplot2)
library(wordcloud)
library(sentimentr)
library(plyr)
library(RTextTools)
library(sentiment)
library(Rstem)

#********************************************************************************#

setup_twitter_oauth("SVFEMAegGNipPya1JoTAPCa5D","mzegtlNSW8wcSCmUDE0hUXethYa5MAono4Ev2fwdqlPM9QQH4F","973513486792720385-6itI9TdbWfMp0XND3aQsnHitWxwMVpP","4E5vaX3Ymf5m3tneSG9ent5sqKUL3QEHCT88uRGafaHis")
# disini akan di kumpulkan 100 tweets yang mengandung kata "islam" dengan menentukan bahasa #inggris
some_tweets = searchTwitter("islam", n=100, lang="en")

# disini diambil hanya text nya saja sisanya dibuang seperti gambar, video, dll

some_txt = sapply(some_tweets, function(x) x$getText())

# akan dibuang kata - kata retweet

some_txt = gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", some_txt)

# dibuang mention - mention

some_txt = gsub("@\\w+", "", some_txt)

# dibuang tanda baca

some_txt = gsub("[[:punct:]]", "", some_txt)

# dibuang angka

some_txt = gsub("[[:digit:]]", "", some_txt)

# dibuang link - link

some_txt = gsub("http\\w+", "", some_txt)

# dibuang spasi yang tidak berguna

some_txt = gsub("[ \t]{2,}", "", some_txt)

some_txt = gsub("^\\s+|\\s+$", "", some_txt)

# fungsi error

try.error = function(x)
 
{
 
  # create missing value
 
  y = NA
 
  # tryCatch error
 
  try_error = tryCatch(tolower(x), error=function(e) e)
 
  # if not an error
 
  if (!inherits(try_error, "error"))
   
    y = tolower(x)
 
  # result
 
  return(y)
 
}

# lower case using try.error with sapply

some_txt = sapply(some_txt, try.error)

# remove NAs in some_txt

some_txt = some_txt[!is.na(some_txt)]

names(some_txt) = NULL

# classify emotion
#library(sentiment)
class_emo = classify_emotion(some_txt, algorithm="bayes", prior=1.0)

# get emotion best fit

emotion = class_emo[,7]

# substitute NA’s by "unknown"

emotion[is.na(emotion)] = "unknown"

# classify polarity

class_pol = classify_polarity(some_txt, algorithm="bayes")

# get polarity best fit

polarity = class_pol[,4]

# data frame with results

sent_df = data.frame(text=some_txt, emotion=emotion,
                    
                     polarity=polarity, stringsAsFactors=FALSE)

# sort data frame

sent_df = within(sent_df,
                
                 emotion <- factor(emotion, levels=names(sort(table(emotion), decreasing=TRUE))))

# plot distribution of emotions
ggplot(sent_df, aes(x=emotion)) +
  geom_bar(aes(y=..count.., fill=emotion)) +
  scale_fill_brewer(palette="Dark2") +
  labs(x="emotion categories", y="number of tweets")

######
ggplot(sent_df, aes(x=polarity)) +
 
  geom_bar(aes(y=..count.., fill=polarity)) +
 
  scale_fill_brewer(palette="RdGy") +
 
  labs(x="polarity categories", y="number of tweets")

######

emos = levels(factor(sent_df$emotion))

nemo = length(emos)

emo.docs = rep("", nemo)

for (i in 1:nemo)
 
{
 
  tmp = some_txt[emotion == emos[i]]
 
  emo.docs[i] = paste(tmp, collapse=" ")
 
}



####
# remove stopwords

emo.docs = removeWords(emo.docs, stopwords("english"))

# create corpus

corpus = Corpus(VectorSource(emo.docs))

tdm = TermDocumentMatrix(corpus)

tdm = as.matrix(tdm)

colnames(tdm) = emos

# comparison word cloud

comparison.cloud(tdm, colors = brewer.pal(nemo, "Dark2"),
                 
                 scale = c(3,.5), random.order = FALSE, title.size = 1.5)



OUTPUT
Adapun hasil dari program diatas adalah 





Grafik - grafik diatas merupakan contoh dari hasil mining tweets yang berisi kata ISLAM



Tidak ada komentar:

Posting Komentar