Selasa, 20 Maret 2018

Algoritma Deep Learning Sentimental Test pada Twitter API dengan Bahasa R

LOGIKA PROGRAM
Koddingan di bawah ini adalah pemanggilan pustaka yang ada pada bahasa R , diantaranya twitter, plyr, stringr, xlsx, ggplot2, ROAuth, dan dplyr

#connect all libraries
library(twitteR)
library(plyr)
library(stringr)
library(xlsx)
#library(ggplot2)
#library(ROAuth)
#library(dplyr)

Potongan koddingan di bawah berfungsi untuk akses ke data atau konten yang ada pada twitter

api_Key <- "___"
api_Secret <- "______"
accessToken <- "_____"
accessTokenSecret <- "______"
setup_twitter_oauth(api_key,api_secret, accessToken, accessTokenSecret)

Potongan koddingan dibawah berguna untuk mengscan bank data yang telah dibuat sebelum nya yaitu bank kata positif dan negative. Dalam membuat bank kata harus di simpan dalam .txt agar bisa di deteksi program

setwd("file:///Users/daniella/Desktop/")
pos = scan("positive-words.txt", what='character', comment.char=';')
neg = scan("negative-words.txt", what='character', comment.char=';')

Potongan di bawah adalah untuk pencarian kata negative atau positif dengan mnggunakan pustaka plyr dan string

score.sentiment = function(tweets, pos.words, neg.words)
{
  require(plyr)
  require(stringr)

Menghapus karakter grafis seperti emoticon

  scores = laply(tweets, function(tweet, pos.words, neg.words) {
    tweet = gsub('[^[:graph:]]','', tweet) #removes graphic characters like emoticons

Menghapus tanda baca

    tweet = gsub('[^[:punct:]]','', tweet) #removes punctuation

Menghapus kontrol karakter

    tweet = gsub('[^[:cntrl:]]','', tweet) #removes control characters

Menghapus angka

    tweet = gsub('\\d+','', tweet) #removes numbers
    tweet = str_replace_all(tweet, "[^[:graph:]]", "")

Membuat semua huruf kecil

    tweet = tolower(tweet) #makes all letters lowercase
   
splits kata dalam tweet

    word.list = str_split(tweet, '\\s+') #splits the tweet by word in a list

mengubah daftar ke dalam vektor

    word = unlist(word.list) #turn the list into vector

Mengembalikan nilai pencocokan untuk kata-kata dari bank kata

    pos.matches = match(words, pos.words)
    neg.matches = match(words, neg.words)

Mencocokkan nilai ke benar atau salah (sesuai atau tidak dengan bank kata)

    pos.matches = !is.na(pos.matches)
    neg.matches = !is.na(neg.matches)

True atau false dihitung sebagai 0 dan 1 sehingga dapat ditambahkan  

    score = sum(pos.matches) - sum(neg.matches)

Pengembalian nilai score

    return(score)
  }, pos.words, neg.words)
  scores.df = data.frame(score = scores, text = tweets)
  return(scores.df)
}

Menemukan 100 tweet dalam bahasa Indonesia yang mengandung dari bank kata (ex: kw,crack,premium)dan mengambilnya dari twitter

piracywords <- c("kw", "crack", "premium")
needle <- paste(piracywords, collapse = " OR ")
tweets = searchTwitter(needle, n=100, lang = "id") #finding 100 tweets in Indonesian language that contain words above
Tweets.text = laply(tweets, function(t)t$getText()) #get text from tweets

Memanggil fungsi sentimen

analysis = score.sentiment(Tweets.text, pos, neg) #call sentiment function

membuat grafik histogram dari result

hist(analysis$score) #make histogram from the result

hasil dari program ke .xlsx

write.xlsx(analysis, "SentimentResult.xlsx") #extract the result into Excel file