#загрузить библиотеку
library(vkR)
#получить ключ
vkOAuth(11111111)# номер вашего приложения
#установить ключ
setAccessToken(access_token="vk1.a....КЛЮЧ ИЗ БРАУЗЕРА")
# установить версию API
<-setAPIVersion("5.89") v
Занятие 9. Анализ публикационной активности сетевых сообществ
Задачи занятия
Виртуальные сообщества создаются прежде всего для коммуникации между участниками, обмена информацией, мнениями, оценками событий, обсуждения личных и общественных проблем. Поэтому, анализ сетевых молодежных сообществ не может обойтись без контент-анализа содержания постов, сообщества, реакции на них и дальнейшего распространения данной информации.
Задачи данного занятия: - научиться выгружать данные со стены сообщества, визиализировать общую публикационную активность; - отобрать наиболее значимые сообщения, вызвавшие наибольшее количество реакций (по количеству просмотров, лайков, репостов) - проанализировать содержание этих сообщений
В рамках этого занятия мы снова возвращаемся к работе с пакетом vkR
, поэтому нужно вспомнить номер своего приложения в ВК и получить новый токен.
Выгрузка постов со стены
Чтобы выгрузить информацию со стены сообщества, нам необходимо ввести основные данные для работы с пакетом vkR
:
Рассмотрим случай с выгрузкой данных со стены сообщества Института гуманитарных наук:
<- "ign21"
domain <- getWallExecute(domain = domain, count = 0, progress_bar = TRUE) wall_ign
|
| | 0%
|
|======================================================================| 100%
У нас выгрузились все данные в формате большого списка, содержащего два элемента и более 17 мб информации о 1162 постах, которые были созданы в период с 1 сентября 2021 года. Логично, потому, что сообщество было создано 12 августа 2021 года. 2
Во втором элементе - как раз содержится вся информация о постах в формате таблицы.
Общий график публикационной активности
Давайте сначала построим график публикации материалов и основных реакций - лайков, комментариев, и репостов.
Для этого выгрузим данные метрики в отдельную таблицу и преобразуем данные в правильный формат.
Для работы нам будет нужна библиотека jsonlite
- установите ее.
library(jsonlite)
<- 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') metrics_ign
Теперь сгруппируем наши посты по месяцам и посчитаем, сколько разных реакций у нас получилось. Для работы с данными нам понадобятся библиотеки - dplyr
, ggplot2
, tidyr
.
Сохраним результаты в таблице
library(dplyr)
Присоединяю пакет: 'dplyr'
Следующие объекты скрыты от 'package:stats':
filter, lag
Следующие объекты скрыты от 'package:base':
intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)
<- metrics_ign %>%
df_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()
, чтобы распаковать вложенные таблицы в одну:
<-wall_ign$posts
posts_ign$date <- as.POSIXct(posts_ign$date, origin="1970-01-01", tz='Asia/Barnaul')
posts_ign<-posts_ign |>
posts_ignunnest(cols=c("likes", "reposts", "comments", "views"), names_sep = "_")
Давайте посмотрим на посты с максимальным количеством лайков:
<-posts_ign |>
max_likesarrange(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.
Аналогично, посмотрим материалы по количеству просмотров:
<-posts_ign |>
max_viewsarrange(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Уже завт…
Хотя многие материалы повторяются, видно, что большее количество просмотров есть и у других материалов, например, по мероприятиям для абитуриентов и студенческим праздникам.
<-posts_ign |>
max_repostsarrange(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 окт…
Если лайки и просмотры притягивают к себе материалы с ярким контентом, то репосты чаще касаются важных объявлений и предложений для активистов.
Самостоятельная работа
Создать анализ публикационной активности по всем своим сообществам: - сделать графики публикационной активности - выявить периоды с максимальной реакцией аудитории (по лайкам, комментариям и репостам) - проанализировать сообщения, набравшие максимальное количество лайков, репостов, комментариев.