Записки о Галльской войне

Автор

Екатерина Моисеева

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

library(tidyverse)
library(ggraph)
library(igraph)
library(udpipe)

caesar <- udpipe_read_conllu("https://github.com/locusclassicus/text_analysis_2024/raw/main/files/bg_latinpipe.conllu")

caesar_subset <-  caesar |> 
  filter(upos == "VERB") # здесь по-хорошему можно было бы избавиться от глагола possum, но я его оставлю, чтобы граф выглядел внушительнее

cooc <- cooccurrence(caesar_subset, term = "lemma", 
                     group = c("doc_id", "sentence_id")) |>
  as_tibble() |> 
  filter(cooc > 10)
cooc
# A tibble: 49 × 3
   term1    term2     cooc
   <chr>    <chr>    <dbl>
 1 facio    possum      37
 2 possum   venio       31
 3 possum   video       28
 4 facio    mitto       25
 5 do       facio       23
 6 facio    impero      22
 7 fero     possum      22
 8 habeo    possum      22
 9 cognosco facio       21
10 possum   sustineo    20
# ℹ 39 more rows

Построим график и обозначим чертой информацию о том, насколько часто встречаются друг с другом глаголы.

cooc_graph <- graph_from_data_frame(cooc)

set.seed(21092024)
ggraph(cooc_graph, layout = "dh", maxiter = 100) +
  geom_edge_arc(aes(alpha = cooc),
                color = "grey5",
                strength = 0.2
  ) + 
  # изменения тут
  geom_node_label(aes(label = name),
                  fill = 'lightblue',
                  color = "navyblue"
  ) +
  scale_fill_manual(values = cols) +
  scale_edge_linetype_manual(values = c("dashed", "solid")) +
  theme_graph(base_family = "sans") +
  theme(legend.position = "bottom") +
  labs(title = 'Совместная встречаемость глаголов')