Redditometrics

Материал из Поле цифровой дидактики

Рецепт: «Анализ образовательных сообществ 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, что особенно ценно в образовательном контексте, где бюрократические процедуры могут быть длительными.
  • Использовать встроенные аналитические модули (токсичность, тональность, сетевой анализ), что избавило от необходимости писать сложный код и позволило сосредоточиться на интерпретации.
  • Визуализировать результаты в виде гистограмм, графиков и интерактивных сетей, что делает анализ наглядным и доступным для последующего представления в учебных или исследовательских целях.