О чем вообще студенческий журнал «Своими словами»? | По материалам культурного раздела

Методология и подход к анализу

Был проведен компьютерный анализ корпуса текстов культурного раздела студенческого журнала «Своими словами», размещенных на сайте НИУ ВШЭ — Санкт-Петербург. Цель — выявить основные смысловые направления журнала и охарактеризовать его дискурсивную структуру с помощью цифровых методов.

Сбор данных

library(rvest)
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.2
✔ ggplot2   4.0.0     ✔ tibble    3.3.0
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.1.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter()         masks stats::filter()
✖ readr::guess_encoding() masks rvest::guess_encoding()
✖ dplyr::lag()            masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(udpipe)
Warning: package 'udpipe' was built under R version 4.5.2
library(wordcloud2)
library(stopwords)
library(tidytext)
library(topicmodels)
library(furrr)
Loading required package: future
library(ldatuning)

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

url <- "https://spb.hse.ru/humart/svoimislovami/news/"

pages <- paste0(url, c("", "page2.html", "page3.html", "page4.html", "page5.html", "page6.html",
                       "page7.html", "page8.html", "page9.html", "page10.html", "page11.html",
                       "page12.html", "page13.html", "page14.html", "page15.html", "page16.html"))

links <- pages |> 
  map(read_html) |> 
  map(\(x) html_elements(x, "a") |> html_attr("href")) |> 
  # Для каждоый отдельной страницы
  # найти все теги a. Из каждого тега достать только адрес.
  flatten_chr() |> 
  # Ссылки объединяем в вектор.
  str_subset("humart/svoimislovami/news/\\d") |> 
  # Оставляем только ссылки на новости (которые начинаются с цифры).
  unique()

publications <- links |>
  map_df(\(url) {
    page <- read_html(url)
    tibble(
      title = page |> html_element("h1") |> html_text(trim = TRUE),
      # С помощью trim = TRUE очистим тексты от «мусора».
      url = url,
      text = page |> 
        html_elements(".news-item__text p, .content p, .article p") |>
        # Обращаемся к классам,
        # к которым относятся публикации.
        html_text(trim = TRUE) |> 
        paste(collapse = " ")
    )
  })

publications <- publications |>
  mutate(
    doc_id = paste0("doc", row_number()))

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

model_path <- udpipe_download_model(language = "russian")$file_model
ud_model <- udpipe_load_model(model_path)

Облако слов

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

anno <- udpipe_annotate(
  ud_model,
  x = publications$text,
  doc_id = publications$doc_id
) |>
  as_tibble()

lemmas <- anno |>
  filter(upos %in% c("NOUN", "ADJ", "VERB", "ADV")) |>
  mutate(lemma = str_to_lower(lemma)) |>
  filter(str_detect(lemma, "^[а-я]+$"))

stopwords <- stopwords("ru")

freq <- lemmas |>
  count(lemma, sort = TRUE) |>
  filter(!lemma %in% stopwords) |>
  filter(n >= 5) |> 
  slice_max(n, n = 20)

wordcloud2(freq, size = 0.6)

Облако слов корпуса журнала «Своими словами»

Крупнейшие слова — «время», «год», «история», «мир» — указывают на выраженную рефлексивность текстов. Журнал явно работает с осмыслением истории, человеческого опыта. Слова «литература», «книга», «роман», «фильм», «искусство», «музей», «выставка» образуют кластер, который показывает: журнал систематически обращается к культуре как предмету анализа.

Тематическое моделирование

  pubs_tokens <- lemmas |>  
  filter(!lemma %in% stopwords) |> 
  transmute(
    token = lemma,
    id = doc_id
  )

dtm <- pubs_tokens |>
  count(id, token, name = "n") |>
  cast_dtm(document = id, term = token, value = n)

plan(multisession, workers = 8)

n_topics <- c(2, 4, 8, 16, 32, 64)

lda_models <- n_topics  |> 
  future_map(topicmodels::LDA, x = dtm, 
             control = list(seed = 2012), .progress = TRUE)

data_frame(k = n_topics,
           perplex = map_dbl(lda_models, perplexity))  |> 
  ggplot(aes(k, perplex)) +
  geom_point() +
  geom_line() +
  labs(title = "Оценка LDA модели",
       x = "Число топиков",
       y = "Perplexity")

Была применена модель латентного размещения Дирихле из пакета topicmodels. На предварительном этапе было протестировано несколько значений числа тем с использованием метрики perplexity. При больших значениях k (20+) темы становились фрагментированными и плохо интерпретируемыми, хотя, согласно ldatuning, количество тем может превышать 30.

lda <- LDA(dtm, k = 6, control = list(seed = 2012))

topics <- tidy(lda, matrix = "beta")

top_terms <- topics |> 
  filter(topic < 6) |> 
  group_by(topic) |> 
  arrange(-beta) |> 
  slice_head(n = 12) |> 
  ungroup()

top_terms |> 
  mutate(term = reorder(term, beta)) |> 
  ggplot(aes(term, beta, fill = factor(topic))) +
  geom_col(show.legend = FALSE) + 
  facet_wrap(~ topic, scales = "free", ncol=3) +
  coord_flip()

Облако слов корпуса журнала «Своими словами»

В итоге, поскольку документов не очень много, было установлено значение 6. Взглянем на топ-пять тем.

Распределение топиков

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

(Коллектив авторов 2025)

References

Коллектив авторов. 2025. “Культурный Раздел Студенческого Журнала «Своими Словами».” 2025. https://spb.hse.ru/humart/svoimislovami/.