Homework №9

Автор

Arina Morozova

Дата публикации

1.12.2024

Дуглас Адамс “Автостопом по галактике” Книга 1

Библиография (Адамс 1997, 1)

Начало работы

Для начала подгружаю библиотеки, которые мне понадобятся

library(rvest)
library(tidyverse)
library(tidytext)
library(tokenizers)
library(stopwords)
library(udpipe)
library(ggplot2)
library(dplyr)
library(wordcloud)

Затем сайт с текстом книги, которую я буду изучать. Достаю сам текст и преобразовываю его в tibble

text <- read_html ("https://www.booksite.ru/fulltext/0/001/005/082/004.htm") |>
  html_elements("pre") |>
  html_text2()

my_text <- text |>
  as_tibble()

my_text <- my_text |> 
  rename(text = value)

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

udpipe_download_model(language = "russian-syntagrus")

syntagrus <- udpipe_load_model(file = "russian-syntagrus-ud-2.5-191206.udpipe")

Анализ

Аннотирую текст и преобразовываю его в таблицу

best_text <- udpipe_annotate(syntagrus, my_text$text)

text_lemma <- as_tibble(best_text) |> 
  select(-paragraph_id) |>
  select(-doc_id)

Создаю новую таблицу с именами собственными

characters <- text_lemma |> 
  filter(upos == "PROPN") |> 
  select(token, lemma, upos)

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

characters_counts <- characters |> 
  group_by(lemma) |> 
  count() |> 
  arrange(-n)

for (val in 5:6)
{characters_counts <- characters_counts [-5,]}

characters_counts <- characters_counts[-c(6:230), ]

characters_counts |>
  ggplot(aes(reorder(lemma, n), n, fill = lemma)) +
  geom_col(show.legend = F) +
  ylab(NULL) + 
  xlab(NULL) +
coord_flip() 

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

adjective <- text_lemma |> 
  filter(upos == "ADJ") |> 
  select(token, lemma, upos)|>
  group_by(lemma) |> 
  count() |> 
  arrange(-n)

other <- c ("самый", "другой", "сам", "должен", "второй", "общий", "всеобщий", "полицейский", "прочий", "следующий", "умный", "Форд", "рад", "третий", "9-множественный", "каков", "М-м-", "остальной", "данный")

clean_adjective <- adjective |>
  filter(!lemma %in% other) |>
  as_tibble()

Добавляю палитру и создаю облако слов из отобранных мною прилагательных

pal <- c("#f1c40f", "#34495e", 
         "#8e44ad", "#3498db",
         "#2ecc71")
wordcloud(clean_adjective$lemma, 
          clean_adjective$n,
          min.freq = 3,
          max.words = 50, 
          scale = c(3, 0.8),
          colors = pal, 
          random.color = TRUE, 
          rot.per = 0.2)

Результат

Я смогла выяснить имена основных персонажей в книге и кто из них чаще всего фигурирует в тексте (Артур), подтвердив таким образом, что именно он является главным героем произведения. А также я создала облако прилагательных для того, чтобы проследить, как описываются герои и пейзажи в жанре научной фантастики. В итоге можно отметить, что большая часть прилагательных довольно будничная и не сильно отличается от других жанров, за исключением нескольких не самых часто используемых терминов, например, “галактический”, “звездный”, “космический”.

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

Адамс, Дуглас. 1997. Автостопом по Галактике. АСТ.