Владимир Ленин - ГОСУДАРСТВО И РЕВОЛЮЦИЯ
1 Введение
Цель данного проекта — провести количественный и визуальный анализ текста В. И. Ленина «Государство и революция». Исследование направлено на выявление ключевых слов, частотных закономерностей, контекстов употребления основных терминов и семантических связей между словами. + немного про эмоции и настрой Владимира Ильича. Выбрана тема была не просто так - около 5-6 лет автор принимал активное участие в общественной жизни и увлекался работами социалистических мыслителей(Маркс, Энгельс, франкфрутская школа + неомарксисты, немного Ленин).
2 Использованные библиотеки
library(pdftools) # для извлечения текста из PDF
library(dplyr) # для манипуляций с данными
library(tidytext) # для токенизации текста
library(stringr) # для регулярных выражений
library(ggplot2) # для графиков
library(wordcloud) # для облака слов
library(RColorBrewer) # цветовые палитры
library(stopwords) # список стоп-слов
3 Импорт и предварительная обработка текста:
PDF-документ был преобразован в текстовый формат, очищен от знаков препинания и приведён к нижнему регистру.
pdf_file <- "stateandrevolution.pdf"
text <- pdf_text(pdf_file)
text <- paste(text, collapse = " ") # объединяем все страницы в один текст
text_clean <- text %>%
str_replace_all("[^[:alpha:]\\s]", " ") %>% # оставляем только буквы и пробелы
str_squish() %>% # убираем лишние пробелы
tolower() # переводим в нижний регистр
Токенизация и удаление стоп-слов: текст разбит на отдельные слова, исключены общие служебные слова русского языка для выявления семантически значимых терминов.
# Токенизация
tokens <- tibble(text = text_clean) %>%
unnest_tokens(word, text)
# 5. Удаляем русские стоп-слова
russian_stop_words <- c(stopwords("ru", source = "snowball"), "это", "так", "как", "также") #их тоже вписал, потому что часто мешались
tokens_clean <- tokens %>%
filter(!word %in% russian_stop_words)
4 Вычислена частота слов
…и построены визуализации, включая гистограммы топ-10 слов и облако слов. Это позволило определить наиболее значимые лексические единицы, такие как «революция», «государство», «маркс» и «пролетариат».
5 Слово “именно” - чем оно примечательно?
Известно, что Ленин любил поспорить, “прибить” своих оппонентов, а потому его манера общения часто имела спортивный характер - стремление к усилениям, к этим “именно” - не просто так. Слово “именно” определенно имеет полемический характер - “именно пролетариат”, “именно советская власть”, “именно революция…” и т.д. (Именно “это”, но не “что-то другое”).
ggplot(top_words, aes(x = reorder(word, n), y = n)) +
geom_col(fill = "steelblue", alpha = 0.8) +
geom_text(aes(label = n), hjust = -0.2, size = 3.5) +
coord_flip() +
labs(title = "Топ-10 слов в 'Государство и революция'",
x = "Слово", y = "Частота") +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
set.seed(123)
par(bg = "white")
wordcloud(words = freq$word,
freq = freq$n,
max.words = 50,
colors = brewer.pal(8, "Dark2"),
scale = c(3, 0.5))
6 Контекстный анализ
С использованием регулярных выражений извлечены фрагменты текста вокруг ключевых слов «революция» и «государство», что позволяет проследить, в каких контекстах Ленин использует эти термины.
contexts <- str_extract_all(text_clean, ".{0,30}(революци[яи]|государств[оа]).{0,30}")
first_contexts <- head(unlist(contexts), 5)
for(i in 1:length(first_contexts)) {
cat(i, ":", first_contexts[i], "\n\n")
}
words <- unlist(str_split(text_clean, "\\s+"))
get_neighbors <- function(word, words_vector, window = 3){
positions <- which(words_vector == word)
neighbors <- c()
for(pos in positions){
start <- max(1, pos - window)
end <- min(length(words_vector), pos + window)
neighbors <- c(neighbors, words_vector[start:end])
}
neighbors <- neighbors[neighbors != word]
freq_table <- table(neighbors) %>%
as.data.frame(stringsAsFactors = FALSE) # важно!
return(freq_table)
}
neighbors_rev <- get_neighbors("революция", words)
neighbors_gos <- get_neighbors("государство", words)
В целом, данные говорят сами за себя. Слова “отмирает” и “исчезнет” - определенно речь идет про коммунизм, когда государства как такового не будет. А “свободное” и “народное” - про будущее советской власти. Возьмем во внимание, что написано это было в августе - сентябре 1917 года. Эта работа должна была потенциально привлечь и рабочих, и интеллигенцию ) Чем же привлечь в 1917 году, в период кризисов и проблем на фронте? Конечно же “свободным и народным”!
library(SnowballC)
tokens_clean <- tokens_clean %>%
mutate(stem = wordStem(word, language = "russian"))
stem_freq <- tokens_clean %>%
count(stem, sort = TRUE) %>%
slice_max(n, n = 10)
print(stem_freq)
cat("\n")
ggplot(stem_freq, aes(x = reorder(stem, n), y = n)) +
geom_col(fill = "darkgreen", alpha = 0.8) +
geom_text(aes(label = n), hjust = -0.2, size = 3.5) +
coord_flip() +
labs(title = "Топ-10 основ слов",
x = "Основа слова", y = "Частота") +
theme_minimal() +
theme(plot.title = element_text(face = "bold"))
7 Стемминг
Я применил стемминг - метод приведения слов к их основе. Библиотека Snowball находит корень слова, объединяя все его формы. Теперь все варианты “государства” превращаются в основу “государств”, и я вижу реальную частоту этой концепции
Семантическое ядро текста включает такие слова как класс, общество, вопрос, власть. Очевидно, что тут скорее речь идет про “вопрос власти”, который назрел в период двоевластия(логично).
Революции еще нет. Большевики не у власти. В самом начале 1917 года Ленин выступил с речью, которая полна пессимизма :
«Мы, старики, может быть, не доживем до решающих битв этой грядущей революции».
Так верил ли Ленин в революцию?
Посмотрим на этот момент с помощью сентимент-анализа(анализ самый простой).
positive_words <- c(
"свобода", "освобождение", "прогресс", "развитие", "справедливость",
"равенство", "братство", "труд", "пролетариат", "революция",
"социализм", "коммунизм", "демократия", "советы", "советский",
"интернационал", "солидарность", "коллективный", "народный"
)
negative_words <- c(
"угнетение", "эксплуатация", "насилие", "принуждение", "буржуазия",
"капитализм", "реакция", "контрреволюция", "империализм", "капиталист",
"помещик", "олигархия", "спекуляция", "паразитический", "агрессия"
)
sentiment_analysis <- tokens_clean %>%
mutate(sentiment = case_when(
word %in% positive_words ~ "положительный",
word %in% negative_words ~ "отрицательный",
TRUE ~ "нейтральный"
)) %>%
filter(sentiment != "нейтральный") %>%
count(sentiment, sort = TRUE)
print(sentiment_analysis)
cat("\n")
8 Какие итоги?
8.1 Ключевые концепции работы
центральными понятиями являются:
«Государство» (в формах «государство», «государства», «государственный»),
«Революция»
Имена основоположников марксизма — «Маркс» и «Энгельс».
8.2 Государство?
«Государство» часто соседствует с эпитетами «свободное», «народное», «буржуазное», а также с глаголами «отмирает», «исчезнет», что отражает ленинскую идею об отмирании государства после пролетарской революции.
«Революция» сочетается с определениями «пролетарская», «народная», «французская», что указывает на её историческую и классовую конкретизацию.
8.3 Уверен ли Ленин?
Простой сентимент-анализ показал преобладание положительной лексики (164 случая) над отрицательной (34). Это может говорить об оптимистическом, уверенном тоне Ленина в отношении революционных перспектив, хотя метод стоит уточнять более детальным словарём/сложным подбором/глубоким методом.