Skip to content

Instantly share code, notes, and snippets.

@tukachev
Created June 12, 2023 14:54
Show Gist options
  • Save tukachev/87af1cdf029407398d6cd5acc961c89a to your computer and use it in GitHub Desktop.
Save tukachev/87af1cdf029407398d6cd5acc961c89a to your computer and use it in GitHub Desktop.
library(jsonlite)
library(stringr)
library(tidyverse)
library(wordcloud)
# Загружаем данные из JSON-файла
data <- fromJSON("result.json")
# str(data$messages$text[10])
message_text <- data$messages$text
# Создаем функцию для извлечения хэштегов из текста
extract_hashtags <- function(text) {
str_extract_all(text, "#\\w+")
}
# Извлекаем все хэштеги из списка сообщений и объединяем их в один вектор
all_hashtags <- unlist(lapply(data$messages$text, extract_hashtags))
# Считаем частоту встречаемости каждого хэштега
hashtag_freq <- table(all_hashtags)
# Преобразуем таблицу частот в датафрейм
hashtag_df <- as.data.frame(hashtag_freq, stringsAsFactors = FALSE)
# Добавляем названия столбцов
colnames(hashtag_df) <- c("Хэштег", "Частота встречаемости")
# Упорядочиваем строки по убыванию частоты встречаемости
hashtag_df <- hashtag_df[order(-hashtag_df$"Частота встречаемости"),]
row.names(hashtag_df) <- NULL
# Выводим полученный датафрейм
hashtag_df
# создаем список слов и их частот из датафрейма
word_freq <- data.frame(hashtag = hashtag_df$Хэштег, freq = hashtag_df$`Частота встречаемости`)
# выводим облако слов на экран
png(filename = "wordcloud.png", width=800, height=800, res = 100)
wc <- wordcloud(words = word_freq$hashtag, freq = word_freq$freq, max.words = 200,
random.order = F, rot.per = 0.35, colors = brewer.pal(8, "Dark2"))
dev.off()
df <- hashtag_df %>% slice(1:25)
# создаем график
ggplot(data = df, aes(x = reorder(`Хэштег`, `Частота встречаемости`), y = `Частота встречаемости`)) +
geom_bar(stat = "identity", fill = "darkblue") +
ggtitle("Частота хэштегов") +
ylab("Количество использований") +
xlab("Хэштег") +
scale_y_continuous(limits = c(0,50), expand = c(0,0)) +
theme(panel.background = element_blank(), axis.ticks = element_blank()) +
coord_flip()
ggsave("hashtags_bar.png", dpi = 300, scale = 1.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment