Пакеты
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.1
## ✔ 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()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(udpipe)
## Warning: пакет 'udpipe' был собран под R версии 4.5.2
library(igraph)
## Warning: пакет 'igraph' был собран под R версии 4.5.2
##
## Присоединяю пакет: 'igraph'
##
## Следующие объекты скрыты от 'package:lubridate':
##
## %--%, union
##
## Следующие объекты скрыты от 'package:dplyr':
##
## as_data_frame, groups, union
##
## Следующие объекты скрыты от 'package:purrr':
##
## compose, simplify
##
## Следующий объект скрыт от 'package:tidyr':
##
## crossing
##
## Следующий объект скрыт от 'package:tibble':
##
## as_data_frame
##
## Следующие объекты скрыты от 'package:stats':
##
## decompose, spectrum
##
## Следующий объект скрыт от 'package:base':
##
## union
library(ggraph)
## Warning: пакет 'ggraph' был собран под R версии 4.5.2
Загружаем данные
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 > 35)
caesar_g <- graph_from_data_frame(cooc)
Граф
d <- as.numeric(degree(caesar_g))
V(caesar_g)$degree <- d
V(caesar_g)$hub <- ifelse(V(caesar_g)$degree >= 6, "hub", "other")
cols <- c(hub="#990099FF", other="#009900FF")
set.seed(21092024)
ggraph(caesar_g, layout="fr") +
geom_edge_link(color="grey50", edge_width=1.2) +
geom_node_label(aes(label=name, fill=hub), color="white") +
scale_fill_manual(values=cols) +
theme_graph()
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): семейство
## шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): семейство
## шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): семейство
## шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
