library(udpipe)
library(dplyr)
library(igraph)
library(ggraph)
library(tidyverse)
library(ggrepel)

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

caesar_subset <-  caesar |> 
  filter(upos == "NOUN")


cooc <- cooccurrence(caesar_subset, term = "lemma", 
                     group = c("doc_id", "sentence_id")) |>
  as_tibble() |> 
  filter(cooc > 40)

g <- graph_from_data_frame(d = cooc, directed = FALSE)
ggraph(g, layout = "fr") +
  geom_edge_link(aes(width = cooc, alpha = cooc), 
                 color = "#5D6D7E", 
                 edge_width = 1.) +
  geom_node_point(aes(size = degree(g)), 
                  color = "#E67E22", 
                  alpha = 0.7) +
  geom_node_text(aes(label = name), 
                 point.padding = unit(0.2, "lines"), 
                 repel = TRUE,
                 size = 5, 
                 fontface = "bold") +
  scale_edge_width(range = c(0.2, 2), name = "Частота") +
  scale_size_area(max_size = 10, name = "Degree") +
  theme_void() +
  labs(title = "Граф совместной встречаемости существительных") +
  theme(legend.position = "right",
    plot.title = element_text(hjust = 0.5, face = "bold"))

Латинское слово Перевод Примечание
miles воин
hostis враг
castra лагерь, укрепление
dies день
copia запас, изобилие В ед. числе
copiae войско Во мн. числе
locus место

Связь res и causa - возможно, из фразы “causa rei”

LS0tCnRpdGxlOiAiQ2Flc2FyIG5vdW4gY29vY2N1cnJlbmNlIgphdXRob3I6ICJWb3JvbmNoaWtoaW4gRWdvciIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodWRwaXBlKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGlncmFwaCkKbGlicmFyeShnZ3JhcGgpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdncmVwZWwpCgpjYWVzYXIgPC0gdWRwaXBlX3JlYWRfY29ubGx1KCJodHRwczovL2dpdGh1Yi5jb20vbG9jdXNjbGFzc2ljdXMvdGV4dF9hbmFseXNpc18yMDI0L3Jhdy9tYWluL2ZpbGVzL2JnX2xhdGlucGlwZS5jb25sbHUiKQoKY2Flc2FyX3N1YnNldCA8LSAgY2Flc2FyIHw+IAogIGZpbHRlcih1cG9zID09ICJOT1VOIikKCgpjb29jIDwtIGNvb2NjdXJyZW5jZShjYWVzYXJfc3Vic2V0LCB0ZXJtID0gImxlbW1hIiwgCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gYygiZG9jX2lkIiwgInNlbnRlbmNlX2lkIikpIHw+CiAgYXNfdGliYmxlKCkgfD4gCiAgZmlsdGVyKGNvb2MgPiA0MCkKCmcgPC0gZ3JhcGhfZnJvbV9kYXRhX2ZyYW1lKGQgPSBjb29jLCBkaXJlY3RlZCA9IEZBTFNFKQpnZ3JhcGgoZywgbGF5b3V0ID0gImZyIikgKwogIGdlb21fZWRnZV9saW5rKGFlcyh3aWR0aCA9IGNvb2MsIGFscGhhID0gY29vYyksIAogICAgICAgICAgICAgICAgIGNvbG9yID0gIiM1RDZEN0UiLCAKICAgICAgICAgICAgICAgICBlZGdlX3dpZHRoID0gMS4pICsKICBnZW9tX25vZGVfcG9pbnQoYWVzKHNpemUgPSBkZWdyZWUoZykpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiI0U2N0UyMiIsIAogICAgICAgICAgICAgICAgICBhbHBoYSA9IDAuNykgKwogIGdlb21fbm9kZV90ZXh0KGFlcyhsYWJlbCA9IG5hbWUpLCAKICAgICAgICAgICAgICAgICBwb2ludC5wYWRkaW5nID0gdW5pdCgwLjIsICJsaW5lcyIpLCAKICAgICAgICAgICAgICAgICByZXBlbCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgc2l6ZSA9IDUsIAogICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gImJvbGQiKSArCiAgc2NhbGVfZWRnZV93aWR0aChyYW5nZSA9IGMoMC4yLCAyKSwgbmFtZSA9ICLQp9Cw0YHRgtC+0YLQsCIpICsKICBzY2FsZV9zaXplX2FyZWEobWF4X3NpemUgPSAxMCwgbmFtZSA9ICJEZWdyZWUiKSArCiAgdGhlbWVfdm9pZCgpICsKICBsYWJzKHRpdGxlID0gItCT0YDQsNGEINGB0L7QstC80LXRgdGC0L3QvtC5INCy0YHRgtGA0LXRh9Cw0LXQvNC+0YHRgtC4INGB0YPRidC10YHRgtCy0LjRgtC10LvRjNC90YvRhSIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiLAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9ICJib2xkIikpCmBgYAoKfCDQm9Cw0YLQuNC90YHQutC+0LUg0YHQu9C+0LLQviB8INCf0LXRgNC10LLQvtC0ICAgICAgICAgICAgfCDQn9GA0LjQvNC10YfQsNC90LjQtSAgIHwKfDotLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAp8ICoqbWlsZXMqKiAgICAgICB8INCy0L7QuNC9ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAp8ICoqaG9zdGlzKiogICAgICB8INCy0YDQsNCzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAp8ICoqY2FzdHJhKiogICAgICB8INC70LDQs9C10YDRjCwg0YPQutGA0LXQv9C70LXQvdC40LUgfCAgICAgICAgICAgICAgfAp8ICoqZGllcyoqICAgICAgICB8INC00LXQvdGMICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAp8ICoqY29waWEqKiAgICAgICB8INC30LDQv9Cw0YEsINC40LfQvtCx0LjQu9C40LUgICAgfCDQkiDQtdC0LiDRh9C40YHQu9C1ICB8CnwgKipjb3BpYWUqKiAgICAgIHwg0LLQvtC50YHQutC+ICAgICAgICAgICAgIHwg0JLQviDQvNC9LiDRh9C40YHQu9C1IHwKfCAqKmxvY3VzKiogICAgICAgfCDQvNC10YHRgtC+ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CgrQodCy0Y/Qt9GMIHJlcyDQuCBjYXVzYSAtINCy0L7Qt9C80L7QttC90L4sINC40Lcg0YTRgNCw0LfRiyAiY2F1c2EgcmVpIgoK