Paketler

Emoji analizimiz için gerekli paketlerimizi indirdikten sonra kütüphanede çağırma işlemini yapalım.

library(googlesheets4)
library(httr)
library(readxl)
library(googleAuthR)
library(tuber)
library(writexl)
library(stringi)
library(stringr)
library(emojifont)
library(ggplot2)
library(showtext)
## Loading required package: sysfonts
## Loading required package: showtextdb
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidytext)
library(tokenizers)
library(ggimage)
## 
## Attaching package: 'ggimage'
## The following object is masked from 'package:emojifont':
## 
##     geom_emoji
library(extrafont)
## Registering fonts with R
## 
## Attaching package: 'extrafont'
## The following object is masked from 'package:showtextdb':
## 
##     font_install
library(Cairo)
library(wordcloud2)
library(ggtext)

Youtube’den veri çekmek için client id ve client secretlerimi çağıralım.

# clientid <- "*******************************************"
# client_secret <- "******************************"
# yt_oauth(clientid, client_secret, token = '')

Youtube videoları için ıd’lerimizi çağırıp excel dosyasına verileri çağıralım.

# get_all_comments(video_id = "**************")
# kpoptr <- get_all_comments(video_id = "*********************")
# write_xlsx(yorumlar, "C:\\Youtube\\yorum10.xlsx")

EMOJİ ANALİZİ

Verileri çektikten sonra, excele aktardığımız verileri ‘kozmetik’ olarak tanımlayıp çağıralım.

# kozmetik <- read_xlsx(file.choose())
kozmetik <- read_xlsx("kozmetik.xlsx")

Bu kod bir karakter vektöründen emoji ve diğer sembolleri çıkarmak için kullanılır.

emojiler <- stri_extract_all_regex(kozmetik$textOriginal, "\\p{So}|\\p{Sk}")

Geçersiz (NA) değerleri çıkararak bir emoji listesi oluşturalım.Bu kod parçası, emojiler listesinden NA (eksik veya boş) değerleri çıkarır. Bunun amacı, sadece geçerli emoji ve sembol listelerinin tutulmasını sağlamaktır.

temizlenmis_emojiler <- emojiler[!is.na(emojiler)]

Temizlenmiş emojileri çağıralım.

Temizlenmiş emojileri görmek için ” print(temizlenmis_emojiler) ” kodunu kullanabiliriz. Burada çalıştırmıyorum çünkü çok fazla emoji çıkıyor.

Kaç tür emoji kullanıldığını bulalım.

kac_tur_emoji_kullanilmis <- length(unique(temizlenmis_emojiler))
print(kac_tur_emoji_kullanilmis)
## [1] 1628

‘showtext_auto()’ fonksiyonu, R’da metinleri görüntülemek için farklı yazı tiplerini otomatik olarak yüklemeyi ve kullanmayı sağlar. Özellikle grafiksel çıktılar üretirken, metinlerin daha estetik ve çekici görünmesini sağlamak için kullanışlıdır.

showtext_auto()

Bu kod, ‘temizlenmis_emojiler’ listesindeki tüm emoji öğelerini tek bir vektörde birleştirir.

tum_emojiler <- unlist(temizlenmis_emojiler)

Bu kod, ‘tum_emojiler’ vektöründeki her bir emoji öğesinin frekansını hesaplar ve bu frekansları bir tablo olarak saklar.

emoji_freq <- table(tum_emojiler)

Bu kod, emoji frekanslarını içeren ‘emoji_freq’ tablosunu bir veri çerçevesine dönüştürür.

emoji_freq_df <- data.frame(emoji = names(emoji_freq), frequency = as.numeric(emoji_freq))

‘str()’ fonksiyonu, bir veri çerçevesinin yapısını gösteren özet bilgileri sağlar.

str(emoji_freq_df)
## 'data.frame':    424 obs. of  2 variables:
##  $ emoji    : chr  "`" "´" "^" "╯" ...
##  $ frequency: num  6 2 6 1 1 2 2 8 1 10 ...

ÇUBUK GRAFİĞİ

Bu kod, emoji frekanslarını içeren emoji_freq_df veri çerçevesini frekansa göre sıralar, en yüksek frekansa sahip olan 25 emojiyi seçer ve bunları ‘top_25_emojiler’ adlı bir veri çerçevesine atar.

top_25_emojiler <- emoji_freq_df %>%
  arrange(desc(frequency)) %>%
  head(25)

Bu kod, ‘top_25_emojiler’ veri çerçevesindeki emoji sütununu seçer ve sadece bu sütunu içeren bir vektör oluşturur.

top_25_emojiler_unicode <- top_25_emojiler$emoji

Bu kod, ‘top_25_emojiler_unicode’ vektöründeki her bir emojiyi temsil eden Unicode karakterlerini çıkarmak için düzenli ifadeleri kullanır.

unicode_liste <- stri_extract_all_regex(top_25_emojiler_unicode, "[\\p{So}\\p{Sk}]+")

Bu kod parçası, ‘top_25_emojiler’ veri çerçevesinden emoji ve frekans sütunlarını ayırarak iki ayrı vektör oluşturur.

emoji_labels <- top_25_emojiler$emoji
emoji_counts <- top_25_emojiler$frequency

Bu kod parçası, ‘top_25_emojiler’ veri çerçevesindeki emoji sütununu döndürerek, en yüksek frekansa sahip olan emoji öğelerinin bir vektörünü elde etmenizi sağlar.

top_25_emojiler$emoji
##  [1] "❤"          "😍"         "😂"         "😘"         "💜"        
##  [6] "\U{01f970}" "🙏"         "😊"         "♥"          "🏻"        
## [11] "💖"         "💕"         "👍"         "🤗"         "💙"        
## [16] "🌸"         "💗"         "☺"          "🤣"         "\U{01f929}"
## [21] "💛"         "\U{01f97a}" "😅"         "👏"         "💞"

ÇUBUK GRAFİK

Bu kod, ‘top_25_emojiler’ veri çerçevesindeki en çok kullanılan 25 emojiyi görselleştirmek için bir çubuk grafik oluşturur.

# Gerekli kütüphaneleri yükle
library(ggplot2)
library(stringi)
library(dplyr)

# En çok kullanılan 25 emojiyi içeren veri çerçevesini frekansa göre sıralayın
top_25_emojiler <- emoji_freq_df %>%
  arrange(desc(frequency)) %>%
  head(25)

# En çok kullanılan 25 emojiyi ve frekanslarını seçin
emoji_labels <- top_25_emojiler$emoji
emoji_counts <- top_25_emojiler$frequency

# En çok kullanılan 25 emoji için Unicode karakterlerini çıkarmak
unicode_liste <- stri_extract_all_regex(top_25_emojiler$emoji, "[\\p{So}\\p{Sk}]+") %>% unlist()

# Çubuk grafik oluşturma
ggplot(top_25_emojiler, aes(x = reorder(emoji, -frequency), y = frequency)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  geom_text(aes(label = frequency), vjust = -0.5, color = "black", size = 3.5) +
  labs(title = "En Çok Kullanılan 25 Emoji", x = "Emoji", y = "Frekans") +
  theme_minimal() +
  theme(text = element_text(size = 12, family = "sans"),
        axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_x_discrete(labels = function(x) stri_unescape_unicode(x))

EMOJİ BULUTU

Bu kod parçası, emoji etiketleri ve frekanslarını içeren bir veri çerçevesi oluşturur ve bu veri çerçevesini kullanarak bir kelime bulutu oluşturur.

emoji_data <- data.frame(word = emoji_labels, freq = emoji_counts)
wordcloud2 (data = emoji_data, size= 2, color = "random-light", backgroundColor = "white")