Занятие 9. Анализ публикационной активности сетевых сообществ

Задачи занятия

Виртуальные сообщества создаются прежде всего для коммуникации между участниками, обмена информацией, мнениями, оценками событий, обсуждения личных и общественных проблем. Поэтому, анализ сетевых молодежных сообществ не может обойтись без контент-анализа содержания постов, сообщества, реакции на них и дальнейшего распространения данной информации.

Задачи данного занятия: - научиться выгружать данные со стены сообщества, визиализировать общую публикационную активность; - отобрать наиболее значимые сообщения, вызвавшие наибольшее количество реакций (по количеству просмотров, лайков, репостов) - проанализировать содержание этих сообщений

В рамках этого занятия мы снова возвращаемся к работе с пакетом vkR, поэтому нужно вспомнить номер своего приложения в ВК и получить новый токен.

Выгрузка постов со стены

Чтобы выгрузить информацию со стены сообщества, нам необходимо ввести основные данные для работы с пакетом vkR:

#загрузить библиотеку
library(vkR)
#получить ключ
vkOAuth(11111111)# номер вашего приложения
#установить ключ
setAccessToken(access_token="vk1.a....КЛЮЧ ИЗ БРАУЗЕРА")
# установить версию API
v<-setAPIVersion("5.89")

Рассмотрим случай с выгрузкой данных со стены сообщества Института гуманитарных наук:

domain <- "ign21"
wall_ign <- getWallExecute(domain = domain, count = 0, progress_bar = TRUE)

  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%

У нас выгрузились все данные в формате большого списка, содержащего два элемента и более 17 мб информации о 1162 постах, которые были созданы в период с 1 сентября 2021 года. Логично, потому, что сообщество было создано 12 августа 2021 года. 2

Во втором элементе - как раз содержится вся информация о постах в формате таблицы.

Общий график публикационной активности

Давайте сначала построим график публикации материалов и основных реакций - лайков, комментариев, и репостов.

Для этого выгрузим данные метрики в отдельную таблицу и преобразуем данные в правильный формат.

Для работы нам будет нужна библиотека jsonlite - установите ее.

library(jsonlite)
metrics_ign <- jsonlite::flatten(wall_ign$posts[c("date", "likes", "comments", "reposts")])
metrics_ign$date <- as.POSIXct(metrics_ign$date, origin="1970-01-01", tz='Asia/Barnaul')

Теперь сгруппируем наши посты по месяцам и посчитаем, сколько разных реакций у нас получилось. Для работы с данными нам понадобятся библиотеки - dplyr, ggplot2, tidyr.

Сохраним результаты в таблице

library(dplyr)

Присоединяю пакет: 'dplyr'
Следующие объекты скрыты от 'package:stats':

    filter, lag
Следующие объекты скрыты от 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)
df_ign <- metrics_ign %>%
  mutate(period = as.Date(cut(date, breaks='months'))) %>%
  group_by(period) %>%
  summarise(likes = sum(likes.count), comments = sum(comments.count), reposts = sum(reposts.count), n = n())

Сделаем график:

ggplot(data=gather(df_ign, 'type', 'count', 2:5), aes(period, count)) + geom_line(aes(colour=type)) +
  labs(x='Date', y='Count')+
  theme_bw()

Видим, что внимание аудитории группы ИГН переменчиво: бывают взлеты и падения.

Подробный анализ по отдельным реакциям

Отсортируем наши данные по максимальному количеству лайков и посморим, в какие периоды их было больше всего:

df_ign |> 
  arrange(desc(likes)) |> 
  head()
# A tibble: 6 × 5
  period     likes comments reposts     n
  <date>     <int>    <int>   <int> <int>
1 2023-12-01  4908      362     547    53
2 2024-02-01  4650      492     564    43
3 2023-11-01  4622      514     568    54
4 2022-11-01  4285      740     504    44
5 2023-03-01  3928      332     770    50
6 2024-03-01  3782      234     369    42

Итак, больше всего лайков собрали посты в декабре 2023 и январе 2024 года, а также в ноябре 2022 и 2023 годов.

Попробуйте аналогично посчитать комментарии и репосты.

Как понять, какие сообщения вызвали наиболее бурную реакцию? Для этого нужно обратиться к исходным данным по стене.

Сохраним расширенную таблицу с постами и реакциями и функцию unnest(), чтобы распаковать вложенные таблицы в одну:

posts_ign<-wall_ign$posts
posts_ign$date <- as.POSIXct(posts_ign$date, origin="1970-01-01", tz='Asia/Barnaul')
posts_ign<-posts_ign |> 
  unnest(cols=c("likes", "reposts", "comments", "views"), names_sep = "_")

Давайте посмотрим на посты с максимальным количеством лайков:

max_likes<-posts_ign |> 
  arrange(desc(likes_count)) |> 
  select(date, likes_count, text) |> 
  head(10)
max_likes
# A tibble: 10 × 3
   date                likes_count text                                         
   <dttm>                    <int> <chr>                                        
 1 2023-05-23 16:00:05         513 "КЛИП ИНСТИТУТА ГУМАНИТАРНЫХ НАУК ☄️\n\nСамая…
 2 2023-03-15 10:00:00         321 "ТОЛЬКО ВМЕСТЕ МЫ СИЛЬНЫ\n\nВы верите в фей?…
 3 2023-02-23 15:00:03         321 "\U0001f48e Уровень очарования сегодня явно …
 4 2024-03-23 22:00:03         318 "Институт гуманитарных наук выражает глубоча…
 5 2022-11-22 12:00:03         309 "ИГН НА БИТВЕ, ИГ-ИГН НА БИТВЕ \U0001f4a5\n\…
 6 2023-10-28 12:00:01         307 "AVE ИНГУМ! PRIMO VICTORIA! \U0001f451\n\nВо…
 7 2023-12-17 17:00:01         298 "ВСЕ ЕЩЕ ДОСТОЙНЫ!\n\nВчера в концертном зал…
 8 2022-11-07 13:30:00         293 "ИГН СЛОВИЛИ ДЗЕН \U0001f9d8\U0001f3fc‍♀️\n\nНу…
 9 2023-02-23 19:02:17         282 "Концентрация мужества, ума и харизмы \U0001…
10 2024-03-07 16:00:05         274 "ФИНАЛ СОВСЕМ СКОРО! \U0001f525\n \nДо финиш…

Наибольшее количество лайков вызвали сообщения о новом клипе ИГН, результатах конкурса Мисс и Мистер ИГН, конкурс “Битва первокурсников”, и, конечно, соболезнования всем родственникам погибших в Crocus City Hall.

Аналогично, посмотрим материалы по количеству просмотров:

max_views<-posts_ign |> 
  arrange(desc(views_count)) |> 
  select(date, views_count, text) |> 
  head(10)
max_views
# A tibble: 10 × 3
   date                views_count text                                         
   <dttm>                    <int> <chr>                                        
 1 2022-02-28 17:00:01       28708 "Встречайте наших очаровательных участниц ко…
 2 2023-05-23 16:00:05       18743 "КЛИП ИНСТИТУТА ГУМАНИТАРНЫХ НАУК ☄️\n\nСамая…
 3 2022-09-23 20:30:00       14655 "Выиграйте три упаковки напитка от наших спо…
 4 2023-02-23 19:02:17       13835 "Концентрация мужества, ума и харизмы \U0001…
 5 2022-02-09 23:07:05       12474 "Хочешь владеть графическими программами? \U…
 6 2022-02-13 14:08:41       11920 "❗Не определились с выбором профессии для р…
 7 2022-01-26 09:31:49       10758 "Задумался о поступлении?\U0001f44d\U0001f3f…
 8 2023-03-22 19:00:03       10563 "ТАЙНА ЗА СЕМЬЮ ПЕЧАТЯМИ\n\n20 марта состоял…
 9 2021-12-08 18:29:21        9700 "Не пропустите! ‼Встреча успешных в професси…
10 2024-01-24 15:30:00        9215 "ТАТЬЯНАМ ПОСВЯЩАЕТСЯ \U0001f33a\n\nУже завт…

Хотя многие материалы повторяются, видно, что большее количество просмотров есть и у других материалов, например, по мероприятиям для абитуриентов и студенческим праздникам.

max_reposts<-posts_ign |> 
  arrange(desc(reposts_count)) |> 
  select(date, reposts_count, text) |> 
  head(10)
max_reposts
# A tibble: 10 × 3
   date                reposts_count text                                       
   <dttm>                      <int> <chr>                                      
 1 2023-04-01 14:00:05           183 "ВРЕМЯ ПЕРЕМЕН\n\nС первого сентября этого…
 2 2021-10-25 20:30:00           155 "Интернешнл закончился, а впереди незаплан…
 3 2023-05-23 16:00:05           146 "КЛИП ИНСТИТУТА ГУМАНИТАРНЫХ НАУК ☄️\n\nСам…
 4 2022-08-29 21:19:19           133 "Первый курс — это двери в новый мир! А чт…
 5 2022-08-23 18:00:02           105 "День знаний в [club206443834|Институте гу…
 6 2022-10-11 20:00:02            96 "МЕЛОМАНЫ ИГН, ОБЪЕДИНЯЙТЕСЬ! \U0001f3b5\n…
 7 2022-09-13 19:00:02            96 "\U0001faa9 Никаких больше вечеринок…\n\nм…
 8 2022-10-12 21:00:02            93 "Они любили студенчество и были активистам…
 9 2021-10-07 10:00:00            88 "\U0001f525 Институт гуманитарных наук отк…
10 2023-09-29 21:00:00            82 "К ПОСВЯЩЕНИЮ ГОТОВЫ\U0001f929 \n \n11 окт…

Если лайки и просмотры притягивают к себе материалы с ярким контентом, то репосты чаще касаются важных объявлений и предложений для активистов.

Самостоятельная работа

Создать анализ публикационной активности по всем своим сообществам: - сделать графики публикационной активности - выявить периоды с максимальной реакцией аудитории (по лайкам, комментариям и репостам) - проанализировать сообщения, набравшие максимальное количество лайков, репостов, комментариев.