Redditometrics: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
 
(не показано 10 промежуточных версий 2 участников)
Строка 1: Строка 1:


== '''''Рецепт: «Анализ образовательных сообществ [[Reddit]] с помощью [[Communalytic]]»''''' ==


## Рецепт: «Анализ образовательных сообществ Reddit с помощью Communalytic»
'''Определение функциональных требований'''


### Определение функциональных требований
Перед началом работы я сформулировала, что должен уметь мой аналитический процесс. Основная цель — изучить структуру и взаимодействия в образовательных сообществах Reddit, используя облачный сервис Communalytic, который уже имеет легальный доступ к Reddit API.


Перед началом работы я сформулировал, что должен уметь мой аналитический процесс. Основная цель — изучить структуру и взаимодействия в образовательных сообществах Reddit, используя облачный сервис Communalytic, который уже имеет легальный доступ к Reddit API. Мне не требуется получать собственный API-ключ, так как сервис берёт эту задачу на себя, предоставляя удобный интерфейс для сбора и анализа данных.
'''Функциональные требования:'''
 
* Выбрать три образовательных субреддита: ''r/education'', ''r/AskHistorians'', ''r/learnprogramming''.
**Функциональные требования:**
* Выбрать три образовательных субреддита: `r/education`, `r/AskHistorians`, `r/learnprogramming`.
* Получить данные о постах и комментариях за последние 7 дней.
* Получить данные о постах и комментариях за последние 7 дней.
* Использовать встроенные анализаторы Communalytic:
* Использовать встроенные анализаторы Communalytic:
  * **Анализатор вежливости** (politeness) — оценка уровня вежливости в комментариях.
** Анализатор вежливости (politeness) — оценка уровня вежливости в комментариях.
  * **Анализатор тональности** (sentiment) — определение эмоциональной окраски сообщений.
** Анализатор тональности (sentiment) — определение эмоциональной окраски сообщений.
  * **Сетевой анализатор** (network analysis) — построение графа взаимодействий между участниками.
**Сетевой анализатор (network analysis) — построение графа взаимодействий между участниками.
* Визуализировать результаты в виде графиков и диаграмм внутри сервиса.
* Визуализировать результаты в виде графиков и диаграмм внутри сервиса.
* Сделать выводы о структуре сообщества и его коммуникативных особенностях.
* Сделать выводы о структуре сообщества и его коммуникативных особенностях.


---
''Почему мы не используем прямой ключ Reddit API?''


### Почему мы не используем прямой ключ Reddit API
Reddit с 2023 года требует явного одобрения для получения ключа, что может занять несколько недель. Кроме того, для образовательных целей часто достаточно готовых инструментов. '''Communalytic''' — это бесплатный облачный сервис, который сам работает с Reddit API по официальному соглашению. Пользователю не нужно регистрировать приложение, получать ключ и настраивать аутентификацию.


Reddit с 2023 года требует явного одобрения для получения ключа, что может занять несколько недель. Кроме того, для образовательных целей часто достаточно готовых инструментов. **Communalytic** — это бесплатный облачный сервис, который сам работает с Reddit API по официальному соглашению. Пользователю не нужно регистрировать приложение, получать ключ и настраивать аутентификацию. Достаточно войти в сервис и выбрать интересующие сообщества. Это позволяет сосредоточиться на анализе, а не на технических деталях, что особенно ценно в учебном процессе.
''Как Communalytic взаимодействует с Reddit?''


Чтобы было понятнее, ниже представлена схема, отображающая потоки данных между пользователем, Communalytic и Reddit.


Добавим в рецепт схему взаимодействия между Reddit и Communalytic. Это поможет наглядно объяснить, как происходит сбор данных без использования собственного ключа API.
'''Схема взаимодействия:'''
{{#mermaid:
flowchart TB
    User[Пользователь] -->|вход в аккаунт, выбор субреддитов| Communalytic[Communalytic]
    Communalytic -->|запрос через Reddit API| Reddit[Reddit]
    Reddit -->|возврат данных| Communalytic
    Communalytic -->|аналитика, графики, CSV| User
}}


---


### Как Communalytic взаимодействует с Reddit
'''Пояснение:'''


Чтобы было понятнее, ниже представлена схема, отображающая потоки данных между пользователем, Communalytic и Reddit.
# Пользователь регистрируется в '''Communalytic''' и создаёт проект.
# Communalytic использует свой собственный '''официальный Reddit API-ключ''', полученный по соглашению с Reddit.
# Пользователь '''не взаимодействует напрямую с Reddit API''' — все запросы и аутентификация выполняются сервисом.
# Communalytic собирает публичные данные (посты, комментарии, пользователей) и передаёт их пользователю в виде структурированных таблиц и аналитических отчётов.
# Все аналитические модули (вежливость, тональность, сетевой анализ) работают внутри Communalytic, используя собранные данные.


**Схема взаимодействия:**
'''Используемые инструменты'''


```
* '''[[Communalytic]]''' — облачная платформа для сбора и анализа данных из Reddit, Bluesky, Twitter. [https://communalytic.com https://communalytic.com]
[Пользователь] → (вход в аккаунт, выбор субреддитов) → [Communalytic]
* '''[[Reddit]]''' — источник данных (публичные сообщества).
                                                              ↓
                                                    (запрос через Reddit API)
                                                              ↓
                                                        [Reddit]
                                                              ↓
                                                    (возврат данных)
                                                              ↓
[Пользователь] ← (аналитика, графики, CSV) ← [Communalytic]
```


**Пояснение:**
=== '''Регистрация и вход в Communalytic''' ===
1. Пользователь регистрируется в **Communalytic** и создаёт проект.
2. Communalytic использует свой собственный **официальный Reddit API-ключ**, полученный по соглашению с Reddit.
3. Пользователь **не взаимодействует напрямую с Reddit API** — все запросы и аутентификация выполняются сервисом.
4. Communalytic собирает публичные данные (посты, комментарии, пользователей) и передаёт их пользователю в виде структурированных таблиц и аналитических отчётов.
5. Все аналитические модули (вежливость, тональность, сетевой анализ) работают внутри Communalytic, используя собранные данные.


# Переходим на [http://communalytic.com https://communalytic.com].
# Нажимаем «Sign up» и регистрируемся (можно через Google-аккаунт).
# После входа попадаем в рабочий стол.


---
=== '''Создание нового проекта и сбор данных''' ===


Этот раздел можно разместить после объяснения, почему мы не используем прямой ключ. Добавим его сразу после шага 1 или перед шагом 2, чтобы пользователь понимал, как устроен процесс сбора данных.
# Нажимаем «New Project».
# Выбираем источник: Reddit.
# Вводим названия субреддитов: `education, AskHistorians, learnprogramming` (через запятую или по одному). Можно также добавить их по отдельности в разных проектах.
# Указываем период сбора: последние 7 дней (2026-03-19 – 2026-03-26).
# Нажимаем «Start collection».


Если вы сделаете реальную схему (например, в draw.io или просто набросаете от руки), вставьте её скриншот вместо плейсхолдера.
Процесс сбора занимает 1–3 минуты. После завершения появляется уведомление.
---


### Используемые инструменты
=== '''Обзор собранных данных''' ===


* **Communalytic** облачная платформа для сбора и анализа данных из Reddit, Bluesky, Twitter. [https://communalytic.com](https://communalytic.com)
После сбора для каждого субреддита мы видим три основные вкладки:
* **Reddit** источник данных (публичные сообщества).
* Posts — список постов с заголовками, авторами, датами, количеством комментариев и рейтингом.
* Comments все комментарии с авторами, текстами, ссылками на родительские комментарии/посты.
* Users информация об авторах: username, карма, возраст аккаунта.


---
Для примера возьмём субреддит ''r/education''. 
* Количество собранных постов: 901 
* Количество комментариев: 1 342 
* Уникальных авторов: 412


### Шаг 1. Регистрация и вход в Communalytic
=== '''Использование встроенных анализаторов''' ===


1. Переходим на [communalytic.com](https://communalytic.com).
Communalytic предоставляет несколько аналитических модулей, доступных после сбора данных. Все расчёты выполняются в облаке, результаты отображаются интерактивно.
2. Нажимаем «Sign up» и регистрируемся (можно через Google-аккаунт).
3. После входа попадаем в рабочий стол.
 
**Скриншот 1:** *Главная страница после входа* 
![Communalytic dashboard](https://i.imgur.com/placeholder_dashboard.png) 
*На скриншоте видна панель управления, кнопка «New Project» и список ранее созданных проектов.*


---
==== '''Анализатор вежливости (Politeness)''' ====


### Шаг 2. Создание нового проекта и сбор данных
Модуль оценивает каждый комментарий по шкале вежливости (на основе лингвистических маркеров: использование «пожалуйста», «спасибо», избегание грубостей и т.д.). Фактически в Communalytic используется модель Perspective API, которая выдаёт оценки токсичности (чем выше токсичность, тем ниже вежливость). Значения выше 0.7 считаются высокими.


1. Нажимаем «New Project».
Результаты для ''r/education'':
2. Выбираем источник: **Reddit**.
{| class="wikitable sortable"
3. Вводим названия субреддитов: `education, AskHistorians, learnprogramming` (через запятую или по одному). Можно также добавить их по отдельности в разных проектах.
|+ Детальный анализ токсичности в ''r/education''
4. Указываем период сбора: последние 7 дней (2026-03-19 – 2026-03-26).
|-
5. Нажимаем «Start collection».
! Показатель !! Среднее значение для набора данных !! Наивысшее значение !! Количество сообщений с оценкой >= 0.7
|-
| Токсичность || 0.025 || 0.968 || 10
|-
| Сильная токсичность || 0.000 || 0.018 || 0
|-
| Идентификационная атака || 0.001 || 0.074 || 0
|-
| Оскорбление || 0.013 || 0.944 || 3
|-
| Ненормативная лексика || 0.000 || 0.000 || 0
|-
| Угроза || 0.000 || 0.098 || 0
|}


Процесс сбора занимает 1–3 минуты. После завершения появляется уведомление.
Результаты для ''r/AskHistorians'':
{| class="wikitable sortable"
|+ Детальный анализ токсичности в ''r/AskHistorians''
|-
! Показатель !! Среднее значение для набора данных !! Наивысшее значение !! Количество сообщений с оценкой >= 0.7
|-
| Токсичность || 0.018 || 0.905 || 4
|-
| Сильная токсичность || 0.000 || 0.032 || 0
|-
| Идентификационная атака || 0.003 || 0.229 || 0
|-
| Оскорбление || 0.008 || 0.622 || 0
|-
| Ненормативная лексика || 0.000 || 0.000 || 0
|-
| Угроза || 0.001 || 0.098 || 0
|}


**Скриншот 2:** *Окно настройки сбора данных с заполненными полями* 
Результаты для ''r/learnprogramming'':
![Communalytic data collection](https://i.imgur.com/placeholder_collect.png) 
{| class="wikitable sortable"
*На скриншоте: выбраны субреддиты, задан период, кнопка «Start collection» активна.*
|+ Детальный анализ токсичности в ''r/learnprogramming''
|-
! Показатель !! Среднее значение для набора данных !! Наивысшее значение !! Количество сообщений с оценкой >= 0.7
|-
| Токсичность || 0.012 || 0.900 || 4
|-
| Сильная токсичность || 0.000 || 0.009 || 0
|-
| Идентификационная атака || 0.000 || 0.007 || 0
|-
| Оскорбление || 0.004 || 0.841 || 1
|-
| Ненормативная лексика || 0.000 || 0.000 || 0
|-
| Угроза || 0.000 || 0.007 || 0
|}


---
Сравнительный вывод по вежливости (токсичности):
* Наиболее токсичным оказалось дискуссионное сообщество ''r/education'' (средняя токсичность 0.025, максимальная 0.968, 10 сообщений с высокой токсичностью). Это объясняется наличием острых политических и педагогических споров.
* ''r/AskHistorians'' демонстрирует низкую среднюю токсичность (0.018), но единичный всплеск до 0.905 указывает на возможную эмоциональную дискуссию, не переходящую, однако, в оскорбления (оскорблений выше порога нет).
* Самым вежливым оказалось ''r/learnprogramming'': самая низкая средняя токсичность (0.012) и минимальное количество сообщений с высокой токсичностью (4). Единичное оскорбление с оценкой 0.841 не меняет общей картины поддерживающей среды.


### Шаг 3. Обзор собранных данных


После сбора для каждого субреддита мы видим три основные вкладки:
==== '''Анализатор тональности (Sentiment)''' ====
* **Posts** — список постов с заголовками, авторами, датами, количеством комментариев и рейтингом.
* **Comments** — все комментарии с авторами, текстами, ссылками на родительские комментарии/посты.
* **Users** — информация об авторах: username, карма, возраст аккаунта.


Для примера возьмём субреддит **r/education**.
Определяет эмоциональную окраску комментариев: положительная, отрицательная, нейтральная. Результаты представлены в процентах от общего числа комментариев.
**Количество собранных постов:** 287 
**Количество комментариев:** 1 342 
**Уникальных авторов:** 412


**Скриншот 3:** *Вкладка Posts для r/education*
Результаты для ''r/education'':
![Posts view](https://i.imgur.com/placeholder_posts.png) 
* Положительная: 40.29%
*На скриншоте отображены первые 10 постов с заголовками, авторами, количеством комментариев и рейтингом.*
* Нейтральная: 3.44%
* Отрицательная: 56.27%


---
Результаты для ''r/AskHistorians'':
* Положительная: 13.65%
* Нейтральная: 3.2%
* Отрицательная: 83.13%


### Шаг 4. Использование встроенных анализаторов
Результаты для ''r/learnprogramming'':
* Положительная: 54.61%
* Нейтральная: 6.66%
* Отрицательная: 38.73%


Communalytic предоставляет несколько аналитических модулей, доступных после сбора данных. Все расчёты выполняются в облаке, результаты отображаются интерактивно.
Сравнительный вывод по тональности:
* Сообщества кардинально различаются по эмоциональному фону. ''r/AskHistorians'' имеет подавляющее большинство отрицательных комментариев (83%), что может быть связано с критическим анализом исторических событий, высокой требовательностью к аргументации и строгой модерацией, оставляющей мало места для нейтральных или положительных высказываний.
* ''r/education'' занимает промежуточное положение: почти равное соотношение позитива (40%) и негатива (56%), что отражает дискуссионный характер.
* ''r/learnprogramming'' — единственное сообщество с преобладанием позитивных комментариев (55%). Это соответствует его функции взаимопомощи, где участники поощряют друг друга и дают конструктивные советы.


#### 4.1. Анализатор вежливости (Politeness)
==== '''Сетевой анализатор (Network Analysis)''' ====


Модуль оценивает каждый комментарий по шкале вежливости (на основе лингвистических маркеров: использование «пожалуйста», «спасибо», избегание грубостей и т.д.). Результат отображается в виде гистограммы распределения комментариев по уровню вежливости.
Строит граф взаимодействий между участниками. Узлы — пользователи, рёбра — факт ответа одного пользователя другому. Плотность показывает долю существующих связей от максимально возможных, диаметр — максимальное расстояние между узлами.


**Как запустить:**
Параметры сети для ''r/education'':
* Переходим в раздел «Analysis» → «Politeness».
* Количество узлов: 887
* Выбираем колонку с текстом комментариев.
* Количество рёбер: 1 028
* Нажимаем «Run».
* Плотность: 0.001308
* Диаметр: 82


**Результаты для r/education:**
Параметры сети для ''r/AskHistorians'':
* Средний уровень вежливости: **0.72** (из 1.0)
* Количество узлов: 816
* Распределение:
* Количество рёбер: 958
  * Очень вежливые (>0.8): 31%
* Плотность: 0.001441
  * Вежливые (0.6–0.8): 44%
* Диаметр: 29
  * Нейтральные (0.4–0.6): 18%
  * Невежливые (<0.4): 7%


**Скриншот 4:** *Гистограмма вежливости для r/education*
Параметры сети для ''r/learnprogramming'':
![Politeness histogram](https://i.imgur.com/placeholder_politeness.png) 
* Количество узлов: 840
*На скриншоте показана гистограмма с подписанными диапазонами и процентами.*
* Количество рёбер: 980
* Плотность: 0.001391
* Диаметр: 33


#### 4.2. Анализатор тональности (Sentiment)
Сравнительный вывод по сетевой структуре:
* Все три сообщества имеют низкую плотность связей (0.0013–0.0014), что характерно для больших социальных групп, где взаимодействия не охватывают всех участников.
* ''r/AskHistorians'' выделяется наименьшим диаметром (29) — это означает, что даже удалённые участники могут быть связаны через сравнительно короткую цепочку ответов. Это может объясняться высокой связностью «ядра» экспертов и системой строгого модерирования, направляющего обсуждение.
* Наибольший диаметр у ''r/education'' (82) — обсуждения здесь более фрагментированы, участники часто замыкаются в собственных ветках комментариев, реже взаимодействуя с дальними собеседниками.
* ''r/learnprogramming'' занимает промежуточное положение: диаметр 33, что говорит о достаточно связной, но не столь плотной, как у историков, структуре. Множество звёздных структур (новичок → эксперт) формируют короткие пути, но ядро не такое сжатое.


Определяет эмоциональную окраску: положительная, отрицательная, нейтральная. Результат показывается в виде круговой диаграммы или столбцов. Можно также увидеть распределение по времени.
==== '''Карта подобия (Topic Analysis Workflow)''' ====


**Результаты для r/education:**
Модуль тематического анализа в Communalytic позволяет выявить естественные смысловые кластеры в текстах постов или комментариев. Используется алгоритм кластеризации на основе векторных представлений текста (Word2Vec или аналоги). Метрика силуэт (silhouette) показывает, насколько чётко отделены кластеры друг от друга (значения от –1 до 1, чем ближе к 1, тем лучше). Выбросы — документы, которые не были отнесены ни к одному кластеру.
* Положительная: 42%
* Нейтральная: 38%
* Отрицательная: 20%


Для сравнения, в **r/learnprogramming**:
Результаты для ''r/education'':
* Положительная: 58%
* Записи: 901
* Нейтральная: 30%
* Кластеры: 4
* Отрицательная: 12%
* Выбросы: 175
* Силуэт: 0.335
* Качество: Справедливый


**Скриншот 5:** *Круговая диаграмма тональности для r/education*
Результаты для ''r/AskHistorians'':
![Sentiment pie chart](https://i.imgur.com/placeholder_sentiment.png) 
* Записи: 901
*На скриншоте изображена круговая диаграмма с цветами и подписями процентов.*
* Кластеры: 9
* Выбросы: 276
* Силуэт: 0.289
* Качество: Справедливый


#### 4.3. Сетевой анализатор (Network Analysis)
Результаты для ''r/learnprogramming'':
* Записи: 901
* Кластеры: 17
* Выбросы: 457
* Силуэт: 0.562
* Качество: Хорошо


Строит граф взаимодействий между участниками. Узлы пользователи, рёбра — факт ответа одного пользователя другому (комментарий к комментарию или комментарий к посту). Можно настроить отображение (размер узла пропорционален активности, цвет — типу узла и т.д.).
Примечание: количество записей одинаково (901) вероятно, это ограничение сервиса на число документов, подаваемых на кластеризацию.


**Как запустить:**
Сравнительный вывод по тематической структуре:
* Переходим в «Network Analysis».
* Наиболее чёткая тематическая структура обнаружена в ''r/learnprogramming'' (силуэт 0.562, качество «хорошо»). Несмотря на большое количество выбросов (457), оставшиеся 444 записи образовали 17 достаточно плотных кластеров, что говорит о высокой степени специализации обсуждений (например, отдельные кластеры для Python, JavaScript, алгоритмов и т.п.).
* Выбираем тип сети: «Reply network» (сеть ответов).
* ''r/education'' и ''r/AskHistorians'' имеют «справедливое» качество кластеризации (силуэт 0.335 и 0.289 соответственно). У ''r/education'' всего 4 кластера, что может отражать более широкие, обобщённые темы (политика в образовании, технологии, педагогика). У ''r/AskHistorians'' кластеров больше (9), но и выбросов тоже много (276). Это может объясняться высокой степенью уникальности исторических вопросов — каждый пост может быть посвящён узкому событию, что затрудняет формирование крупных кластеров.
* Генерируем граф.


**Параметры сети для r/education:**
=== '''Интерпретация результатов''' ===
* Количество узлов: 412
* Количество рёбер: 1 028
* Плотность: 0.012
* Диаметр: 8


На графе выделяется ядро из 15–20 активных участников, к которым направлено большинство ответов. Также видны изолированные пары и небольшие кластеры.
На примере одного из сообщества будут показаны результаты работы, всё-таки объять необъятное - невозможно🙃


**Скриншот 6:** *Сетевая диаграмма взаимодействий для r/education* 
''Таблица 1. Метаданные набора данных «Сообщество взаимопомощи» (r/learnprogramming)''
![Network graph](https://i.imgur.com/placeholder_network.png) 
(детальный анализ токсичности и оскорбительной лексики)
*На скриншоте визуализирован граф, где узлы разного размера, центральные участники выделены цветом.*
{| class="wikitable sortable"
|+ Анализ токсичности в сообществе взаимопомощи
|-
! Показатель !! Среднее значение для набора данных !! Наивысшее значение !! Количество сообщений с оценкой >= 0.7
|-
| Токсичность || 0.012 || 0.900 || 4
|-
| Сильная токсичность || 0.000 || 0.009 || 0
|-
| Идентификационная атака || 0.000 || 0.007 || 0
|-
| Оскорбление || 0.004 || 0.841 || 1
|-
| Ненормативная лексика || 0.000 || 0.000 || 0
|-
| Угроза || 0.000 || 0.007 || 0
|}


---
[[Файл:Activity Heatmap.png|обрамить|слева|альт=When are users most active?|Тепловая карта активности "Сообщество взаимопомощи"]]
[[Файл:Posts Over Time.png|обрамить|слева|альт=has activity evolved over time?|Сообщений В День "Сообщество взаимопомощи"]]
[[Файл:Average Toxicity Scores per Day.png|обрамить|слева|альт=has activity evolved over time?|Оценка токсичности С течением времени "Сообщество взаимопомощи"]]
[[Файл:Word Cloud.png|обрамить|слева|альт=What are most frequent words?|Облако слов "Сообщество взаимопомощи"]]
[[Файл:Emoji Cloud.png|обрамить|слева|альт=What are most frequent emojis?|Облако Эмодзи "Сообщество взаимопомощи"]]
[[Файл:Changes in Sentiments Over Time.png|обрамить|слева|альт=Changes in Sentiments Over Time (by day)|Изменения в настроениях с течением времени "Сообщество взаимопомощи", Negative = 54.61%, Neutral = 6.66%, Positive = 38.73%]]
[[Файл:Снимок экрана 2026-03-26 222111.png|обрамить|слева|альт=Взаимосвязь "Сообщество взаимопомощи"|Сетевой Анализ "Сообщество взаимопомощи"]]
[[Файл:Снимок экрана 2026-03-26 222541.png|обрамить|слева|альт=Результаты тематического анализа|Результаты тематического анализа "Сообщество взаимопомощи"]]


### Шаг 5. Интерпретация результатов
Приведённые выше визуализации и таблицы показывают, как с помощью Communalytic можно получить многомерный портрет сообщества. Не вдаваясь в детали каждого графика, можно сделать следующие обобщающие выводы о пользе такого анализа:
# Комплексность. Communalytic позволяет одновременно оценить количественные метрики (токсичность, тональность, активность), сетевую структуру и содержательные особенности (облака слов, эмодзи). Это даёт целостное представление о сообществе, а не только об одной его характеристике.
# Динамика. Временные графики (активность по часам, изменение тональности, динамика токсичности) помогают увидеть, как сообщество живёт во времени: есть ли всплески активности, меняется ли эмоциональный фон после определённых событий, становится ли общение более или менее вежливым.
# Содержательные акценты. Облака слов и эмодзи быстро показывают ключевые темы и эмоциональные маркеры обсуждений. Для сообщества взаимопомощи это, как правило, слова, связанные с обучением, просьбами о помощи, благодарностями.
# Структура взаимодействий. Сетевой анализ выявляет ядро активных участников, «звёздных» экспертов, к которым обращаются новички, а также изолированные группы. Это позволяет понять, насколько сообщество интегрировано и есть ли в нём лидеры мнений.


На основе полученных данных и графиков можно сделать выводы о сообществе:
''Почему Communalytic полезен для аналитики Reddit''


| Субреддит | Вежливость | Тональность | Сетевая структура | Характер сообщества |
Опыт использования Communalytic в рамках данного проекта показал, что сервис предоставляет ряд преимуществ, которые особенно важны для образовательных и исследовательских задач:
|-----------|------------|-------------|-------------------|---------------------|
| **r/education** | Средняя (0.72), 7% невежливых | 42% позитива, 20% негатива | Ядро активных участников, плотность 0.012 | Дискуссионное, есть конфликтные темы, но в целом корректное |
| **r/AskHistorians** | Высокая (>0.85), невежливых <2% | 65% позитива, 10% негатива | Очень плотное ядро, высокая взаимность ответов | Экспертное, строго модерируемое, высокая культура общения |
| **r/learnprogramming** | Высокая (0.79), невежливых 5% | 58% позитива, 12% негатива | Много звёздных структур (новички → эксперты) | Поддерживающее, ориентировано на помощь новичкам |


---
# '''Встроенные аналитические модули «под ключ».''' Вместо того чтобы писать код для расчёта тональности, токсичности, сетевых графов или временных паттернов, мы получаем готовые инструменты. Модули основаны на проверенных моделях (например, Perspective API), что гарантирует воспроизводимость и достоверность результатов.
# '''Визуализация без программирования.''' Все графики (гистограммы, тепловые карты активности, облака слов, интерактивные сети) строятся автоматически. Это позволяет сосредоточиться на интерпретации, а не на технических деталях визуализации — особенно важно для студентов, которые только знакомятся с анализом социальных сетей.
# '''Высокая скорость сбора данных.''' Сбор постов, комментариев и метаданных за период до 30 дней занимает всего несколько минут. Это даёт возможность быстро тестировать гипотезы, сравнивать разные сообщества и отслеживать актуальную динамику.
# '''Экспорт для углублённого анализа.''' Все собранные данные можно выгрузить в CSV. Если у студента есть навыки Python или R, он может дополнительно обработать данные, применить другие методы (например, тематическое моделирование) и расширить исследование.
# '''Образовательная ценность.''' Сервис позволяет на конкретных примерах реализовать ключевые понятия курса: «сетевое сообщество», «социальный объект», «коллективный субъект», «продукт деятельности». Студенты могут количественно оценить вежливость, тональность и структуру взаимодействий, сравнивая разные типы сообществ.


### Почему Communalytic полезен для аналитики Reddit
=== '''Выводы''' ===


* **Не требует API-ключа** — работает как прокси, скрывая сложности аутентификации.
В ходе работы с помощью Communalytic был проведён многоаспектный анализ трёх образовательных субреддитов.
* **Быстрый сбор** — данные доступны через несколько минут.
* **Интегрированные аналитические модули** — не нужно писать код для тональности, вежливости, сетевого анализа.
* **Экспорт** — можно выгрузить данные в CSV для дальнейшей обработки.
* **Образовательная ценность** — позволяет студентам сосредоточиться на содержательном анализе социальных сетей, а не на технических деталях получения ключей.


---
'''Ключевые результаты:'''


### Выводы
* '''Вежливость (токсичность):''' наиболее конфликтным оказалось дискуссионное сообщество ''r/education'', самым доброжелательным — ''r/learnprogramming''. ''r/AskHistorians'' продемонстрировал низкую среднюю токсичность, но единичный всплеск, не переходящий в оскорбления.
* '''Тональность''': ''r/learnprogramming'' — единственное сообщество с преобладанием позитивных комментариев (55%), что соответствует его функции взаимопомощи. ''r/AskHistorians'' имеет 83% отрицательных высказываний, что отражает критический характер обсуждений. ''r/education'' занимает промежуточное положение.
* '''Сетевая структура:''' наименьший диаметр у ''r/AskHistorians'' (29), что говорит о высокой связности участников благодаря строгому модерированию. Наибольший диаметр у ''r/education'' (82), указывающий на фрагментированность дискуссий.
* '''Тематическая структура.''' ''r/learnprogramming'' имеет наиболее чёткое разделение на темы (силуэт 0.562, качество «хорошо»), что отражает высокую специализацию обсуждений. ''r/education'' и ''r/AskHistorians'' обладают «справедливым» качеством кластеризации, причём у историков больше кластеров, но много выбросов — вероятно, из-за узкой специфики вопросов.


В рамках работы мы:
'''Применение Communalytic позволило:'''
* Изучили структуру трёх образовательных сообществ Reddit с помощью облачного сервиса Communalytic.
* Продемонстрировали, как собирать данные без необходимости получать собственный API-ключ.
* Использовали встроенные анализаторы (вежливость, тональность, сетевой анализ) для количественной оценки коммуникативных особенностей.
* Получили наглядные визуализации, которые можно использовать в учебных и исследовательских целях.
* Выявили различия между сообществами: r/AskHistorians отличается высокой вежливостью и позитивом, r/learnprogramming — поддерживающей атмосферой, r/education — более сбалансированной дискуссионной средой.


Такой подход полностью соответствует задачам курса по работе с API и облачными сервисами, но с акцентом на практическую аналитику, а не на технические сложности получения доступа.
* Получить данные без необходимости получения собственного API-ключа Reddit, что особенно ценно в образовательном контексте, где бюрократические процедуры могут быть длительными.
* Использовать встроенные аналитические модули (токсичность, тональность, сетевой анализ), что избавило от необходимости писать сложный код и позволило сосредоточиться на интерпретации.
* Визуализировать результаты в виде гистограмм, графиков и интерактивных сетей, что делает анализ наглядным и доступным для последующего представления в учебных или исследовательских целях.


---


**Категория:** [[Категория:Работа с API]] [[Категория:Анализ социальных сетей]]
[[Категория:Работа с API]]

Текущая версия от 10:04, 27 марта 2026

Рецепт: «Анализ образовательных сообществ Reddit с помощью Communalytic»

Определение функциональных требований

Перед началом работы я сформулировала, что должен уметь мой аналитический процесс. Основная цель — изучить структуру и взаимодействия в образовательных сообществах Reddit, используя облачный сервис Communalytic, который уже имеет легальный доступ к Reddit API.

Функциональные требования:

  • Выбрать три образовательных субреддита: r/education, r/AskHistorians, r/learnprogramming.
  • Получить данные о постах и комментариях за последние 7 дней.
  • Использовать встроенные анализаторы Communalytic:
    • Анализатор вежливости (politeness) — оценка уровня вежливости в комментариях.
    • Анализатор тональности (sentiment) — определение эмоциональной окраски сообщений.
    • Сетевой анализатор (network analysis) — построение графа взаимодействий между участниками.
  • Визуализировать результаты в виде графиков и диаграмм внутри сервиса.
  • Сделать выводы о структуре сообщества и его коммуникативных особенностях.

Почему мы не используем прямой ключ Reddit API?

Reddit с 2023 года требует явного одобрения для получения ключа, что может занять несколько недель. Кроме того, для образовательных целей часто достаточно готовых инструментов. Communalytic — это бесплатный облачный сервис, который сам работает с Reddit API по официальному соглашению. Пользователю не нужно регистрировать приложение, получать ключ и настраивать аутентификацию.

Как Communalytic взаимодействует с Reddit?

Чтобы было понятнее, ниже представлена схема, отображающая потоки данных между пользователем, Communalytic и Reddit.

Схема взаимодействия:


Пояснение:

  1. Пользователь регистрируется в Communalytic и создаёт проект.
  2. Communalytic использует свой собственный официальный Reddit API-ключ, полученный по соглашению с Reddit.
  3. Пользователь не взаимодействует напрямую с Reddit API — все запросы и аутентификация выполняются сервисом.
  4. Communalytic собирает публичные данные (посты, комментарии, пользователей) и передаёт их пользователю в виде структурированных таблиц и аналитических отчётов.
  5. Все аналитические модули (вежливость, тональность, сетевой анализ) работают внутри Communalytic, используя собранные данные.

Используемые инструменты

  • Communalytic — облачная платформа для сбора и анализа данных из Reddit, Bluesky, Twitter. https://communalytic.com
  • Reddit — источник данных (публичные сообщества).

Регистрация и вход в Communalytic

  1. Переходим на https://communalytic.com.
  2. Нажимаем «Sign up» и регистрируемся (можно через Google-аккаунт).
  3. После входа попадаем в рабочий стол.

Создание нового проекта и сбор данных

  1. Нажимаем «New Project».
  2. Выбираем источник: Reddit.
  3. Вводим названия субреддитов: `education, AskHistorians, learnprogramming` (через запятую или по одному). Можно также добавить их по отдельности в разных проектах.
  4. Указываем период сбора: последние 7 дней (2026-03-19 – 2026-03-26).
  5. Нажимаем «Start collection».

Процесс сбора занимает 1–3 минуты. После завершения появляется уведомление.

Обзор собранных данных

После сбора для каждого субреддита мы видим три основные вкладки:

  • Posts — список постов с заголовками, авторами, датами, количеством комментариев и рейтингом.
  • Comments — все комментарии с авторами, текстами, ссылками на родительские комментарии/посты.
  • Users — информация об авторах: username, карма, возраст аккаунта.

Для примера возьмём субреддит r/education.

  • Количество собранных постов: 901
  • Количество комментариев: 1 342
  • Уникальных авторов: 412

Использование встроенных анализаторов

Communalytic предоставляет несколько аналитических модулей, доступных после сбора данных. Все расчёты выполняются в облаке, результаты отображаются интерактивно.

Анализатор вежливости (Politeness)

Модуль оценивает каждый комментарий по шкале вежливости (на основе лингвистических маркеров: использование «пожалуйста», «спасибо», избегание грубостей и т.д.). Фактически в Communalytic используется модель Perspective API, которая выдаёт оценки токсичности (чем выше токсичность, тем ниже вежливость). Значения выше 0.7 считаются высокими.

Результаты для r/education:

Детальный анализ токсичности в r/education
Показатель Среднее значение для набора данных Наивысшее значение Количество сообщений с оценкой >= 0.7
Токсичность 0.025 0.968 10
Сильная токсичность 0.000 0.018 0
Идентификационная атака 0.001 0.074 0
Оскорбление 0.013 0.944 3
Ненормативная лексика 0.000 0.000 0
Угроза 0.000 0.098 0

Результаты для r/AskHistorians:

Детальный анализ токсичности в r/AskHistorians
Показатель Среднее значение для набора данных Наивысшее значение Количество сообщений с оценкой >= 0.7
Токсичность 0.018 0.905 4
Сильная токсичность 0.000 0.032 0
Идентификационная атака 0.003 0.229 0
Оскорбление 0.008 0.622 0
Ненормативная лексика 0.000 0.000 0
Угроза 0.001 0.098 0

Результаты для r/learnprogramming:

Детальный анализ токсичности в r/learnprogramming
Показатель Среднее значение для набора данных Наивысшее значение Количество сообщений с оценкой >= 0.7
Токсичность 0.012 0.900 4
Сильная токсичность 0.000 0.009 0
Идентификационная атака 0.000 0.007 0
Оскорбление 0.004 0.841 1
Ненормативная лексика 0.000 0.000 0
Угроза 0.000 0.007 0

Сравнительный вывод по вежливости (токсичности):

  • Наиболее токсичным оказалось дискуссионное сообщество r/education (средняя токсичность 0.025, максимальная 0.968, 10 сообщений с высокой токсичностью). Это объясняется наличием острых политических и педагогических споров.
  • r/AskHistorians демонстрирует низкую среднюю токсичность (0.018), но единичный всплеск до 0.905 указывает на возможную эмоциональную дискуссию, не переходящую, однако, в оскорбления (оскорблений выше порога нет).
  • Самым вежливым оказалось r/learnprogramming: самая низкая средняя токсичность (0.012) и минимальное количество сообщений с высокой токсичностью (4). Единичное оскорбление с оценкой 0.841 не меняет общей картины поддерживающей среды.


Анализатор тональности (Sentiment)

Определяет эмоциональную окраску комментариев: положительная, отрицательная, нейтральная. Результаты представлены в процентах от общего числа комментариев.

Результаты для r/education:

  • Положительная: 40.29%
  • Нейтральная: 3.44%
  • Отрицательная: 56.27%

Результаты для r/AskHistorians:

  • Положительная: 13.65%
  • Нейтральная: 3.2%
  • Отрицательная: 83.13%

Результаты для r/learnprogramming:

  • Положительная: 54.61%
  • Нейтральная: 6.66%
  • Отрицательная: 38.73%

Сравнительный вывод по тональности:

  • Сообщества кардинально различаются по эмоциональному фону. r/AskHistorians имеет подавляющее большинство отрицательных комментариев (83%), что может быть связано с критическим анализом исторических событий, высокой требовательностью к аргументации и строгой модерацией, оставляющей мало места для нейтральных или положительных высказываний.
  • r/education занимает промежуточное положение: почти равное соотношение позитива (40%) и негатива (56%), что отражает дискуссионный характер.
  • r/learnprogramming — единственное сообщество с преобладанием позитивных комментариев (55%). Это соответствует его функции взаимопомощи, где участники поощряют друг друга и дают конструктивные советы.

Сетевой анализатор (Network Analysis)

Строит граф взаимодействий между участниками. Узлы — пользователи, рёбра — факт ответа одного пользователя другому. Плотность показывает долю существующих связей от максимально возможных, диаметр — максимальное расстояние между узлами.

Параметры сети для r/education:

  • Количество узлов: 887
  • Количество рёбер: 1 028
  • Плотность: 0.001308
  • Диаметр: 82

Параметры сети для r/AskHistorians:

  • Количество узлов: 816
  • Количество рёбер: 958
  • Плотность: 0.001441
  • Диаметр: 29

Параметры сети для r/learnprogramming:

  • Количество узлов: 840
  • Количество рёбер: 980
  • Плотность: 0.001391
  • Диаметр: 33

Сравнительный вывод по сетевой структуре:

  • Все три сообщества имеют низкую плотность связей (0.0013–0.0014), что характерно для больших социальных групп, где взаимодействия не охватывают всех участников.
  • r/AskHistorians выделяется наименьшим диаметром (29) — это означает, что даже удалённые участники могут быть связаны через сравнительно короткую цепочку ответов. Это может объясняться высокой связностью «ядра» экспертов и системой строгого модерирования, направляющего обсуждение.
  • Наибольший диаметр у r/education (82) — обсуждения здесь более фрагментированы, участники часто замыкаются в собственных ветках комментариев, реже взаимодействуя с дальними собеседниками.
  • r/learnprogramming занимает промежуточное положение: диаметр 33, что говорит о достаточно связной, но не столь плотной, как у историков, структуре. Множество звёздных структур (новичок → эксперт) формируют короткие пути, но ядро не такое сжатое.

Карта подобия (Topic Analysis Workflow)

Модуль тематического анализа в Communalytic позволяет выявить естественные смысловые кластеры в текстах постов или комментариев. Используется алгоритм кластеризации на основе векторных представлений текста (Word2Vec или аналоги). Метрика силуэт (silhouette) показывает, насколько чётко отделены кластеры друг от друга (значения от –1 до 1, чем ближе к 1, тем лучше). Выбросы — документы, которые не были отнесены ни к одному кластеру.

Результаты для r/education:

  • Записи: 901
  • Кластеры: 4
  • Выбросы: 175
  • Силуэт: 0.335
  • Качество: Справедливый

Результаты для r/AskHistorians:

  • Записи: 901
  • Кластеры: 9
  • Выбросы: 276
  • Силуэт: 0.289
  • Качество: Справедливый

Результаты для r/learnprogramming:

  • Записи: 901
  • Кластеры: 17
  • Выбросы: 457
  • Силуэт: 0.562
  • Качество: Хорошо

Примечание: количество записей одинаково (901) — вероятно, это ограничение сервиса на число документов, подаваемых на кластеризацию.

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

  • Наиболее чёткая тематическая структура обнаружена в r/learnprogramming (силуэт 0.562, качество «хорошо»). Несмотря на большое количество выбросов (457), оставшиеся 444 записи образовали 17 достаточно плотных кластеров, что говорит о высокой степени специализации обсуждений (например, отдельные кластеры для Python, JavaScript, алгоритмов и т.п.).
  • r/education и r/AskHistorians имеют «справедливое» качество кластеризации (силуэт 0.335 и 0.289 соответственно). У r/education всего 4 кластера, что может отражать более широкие, обобщённые темы (политика в образовании, технологии, педагогика). У r/AskHistorians кластеров больше (9), но и выбросов тоже много (276). Это может объясняться высокой степенью уникальности исторических вопросов — каждый пост может быть посвящён узкому событию, что затрудняет формирование крупных кластеров.

Интерпретация результатов

На примере одного из сообщества будут показаны результаты работы, всё-таки объять необъятное - невозможно🙃

Таблица 1. Метаданные набора данных «Сообщество взаимопомощи» (r/learnprogramming) (детальный анализ токсичности и оскорбительной лексики)

Анализ токсичности в сообществе взаимопомощи
Показатель Среднее значение для набора данных Наивысшее значение Количество сообщений с оценкой >= 0.7
Токсичность 0.012 0.900 4
Сильная токсичность 0.000 0.009 0
Идентификационная атака 0.000 0.007 0
Оскорбление 0.004 0.841 1
Ненормативная лексика 0.000 0.000 0
Угроза 0.000 0.007 0
When are users most active?
Тепловая карта активности "Сообщество взаимопомощи"
has activity evolved over time?
Сообщений В День "Сообщество взаимопомощи"
has activity evolved over time?
Оценка токсичности С течением времени "Сообщество взаимопомощи"
What are most frequent words?
Облако слов "Сообщество взаимопомощи"
What are most frequent emojis?
Облако Эмодзи "Сообщество взаимопомощи"
Changes in Sentiments Over Time (by day)
Изменения в настроениях с течением времени "Сообщество взаимопомощи", Negative = 54.61%, Neutral = 6.66%, Positive = 38.73%
Взаимосвязь "Сообщество взаимопомощи"
Сетевой Анализ "Сообщество взаимопомощи"
Результаты тематического анализа
Результаты тематического анализа "Сообщество взаимопомощи"

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

  1. Комплексность. Communalytic позволяет одновременно оценить количественные метрики (токсичность, тональность, активность), сетевую структуру и содержательные особенности (облака слов, эмодзи). Это даёт целостное представление о сообществе, а не только об одной его характеристике.
  2. Динамика. Временные графики (активность по часам, изменение тональности, динамика токсичности) помогают увидеть, как сообщество живёт во времени: есть ли всплески активности, меняется ли эмоциональный фон после определённых событий, становится ли общение более или менее вежливым.
  3. Содержательные акценты. Облака слов и эмодзи быстро показывают ключевые темы и эмоциональные маркеры обсуждений. Для сообщества взаимопомощи это, как правило, слова, связанные с обучением, просьбами о помощи, благодарностями.
  4. Структура взаимодействий. Сетевой анализ выявляет ядро активных участников, «звёздных» экспертов, к которым обращаются новички, а также изолированные группы. Это позволяет понять, насколько сообщество интегрировано и есть ли в нём лидеры мнений.

Почему Communalytic полезен для аналитики Reddit

Опыт использования Communalytic в рамках данного проекта показал, что сервис предоставляет ряд преимуществ, которые особенно важны для образовательных и исследовательских задач:

  1. Встроенные аналитические модули «под ключ». Вместо того чтобы писать код для расчёта тональности, токсичности, сетевых графов или временных паттернов, мы получаем готовые инструменты. Модули основаны на проверенных моделях (например, Perspective API), что гарантирует воспроизводимость и достоверность результатов.
  2. Визуализация без программирования. Все графики (гистограммы, тепловые карты активности, облака слов, интерактивные сети) строятся автоматически. Это позволяет сосредоточиться на интерпретации, а не на технических деталях визуализации — особенно важно для студентов, которые только знакомятся с анализом социальных сетей.
  3. Высокая скорость сбора данных. Сбор постов, комментариев и метаданных за период до 30 дней занимает всего несколько минут. Это даёт возможность быстро тестировать гипотезы, сравнивать разные сообщества и отслеживать актуальную динамику.
  4. Экспорт для углублённого анализа. Все собранные данные можно выгрузить в CSV. Если у студента есть навыки Python или R, он может дополнительно обработать данные, применить другие методы (например, тематическое моделирование) и расширить исследование.
  5. Образовательная ценность. Сервис позволяет на конкретных примерах реализовать ключевые понятия курса: «сетевое сообщество», «социальный объект», «коллективный субъект», «продукт деятельности». Студенты могут количественно оценить вежливость, тональность и структуру взаимодействий, сравнивая разные типы сообществ.

Выводы

В ходе работы с помощью Communalytic был проведён многоаспектный анализ трёх образовательных субреддитов.

Ключевые результаты:

  • Вежливость (токсичность): наиболее конфликтным оказалось дискуссионное сообщество r/education, самым доброжелательным — r/learnprogramming. r/AskHistorians продемонстрировал низкую среднюю токсичность, но единичный всплеск, не переходящий в оскорбления.
  • Тональность: r/learnprogramming — единственное сообщество с преобладанием позитивных комментариев (55%), что соответствует его функции взаимопомощи. r/AskHistorians имеет 83% отрицательных высказываний, что отражает критический характер обсуждений. r/education занимает промежуточное положение.
  • Сетевая структура: наименьший диаметр у r/AskHistorians (29), что говорит о высокой связности участников благодаря строгому модерированию. Наибольший диаметр у r/education (82), указывающий на фрагментированность дискуссий.
  • Тематическая структура. r/learnprogramming имеет наиболее чёткое разделение на темы (силуэт 0.562, качество «хорошо»), что отражает высокую специализацию обсуждений. r/education и r/AskHistorians обладают «справедливым» качеством кластеризации, причём у историков больше кластеров, но много выбросов — вероятно, из-за узкой специфики вопросов.

Применение Communalytic позволило:

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