Как сгенерировать igraph-совместимое ребро в R из данных - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть набор данных, который в настоящее время содержит набор слов, а также абзац, в котором они изначально были, например:

word <- c("wind", "statement", "card", "growth", "egg", "caption", "statement", "robin", "growth")
paragraph <- c(1, 1, 1, 2, 2, 2, 3, 3, 3)
data <- data.frame(word, paragraph)

, и я пытаюсь сгенерировать список ребер для igraph изэто то, что связывает каждое слово на основе его совместного вхождения в абзаце, подобном этому:

node1 <- c("wind", "wind", "statement", "statement", "card", "card", "growth", "growth", "egg", "egg", "caption", "caption", "statement", "statement", "robin", "robin", "growth", "growth")
node2 <- c("statement", "card", "wind", "card", "wind", "statement", "egg", "caption", "growth", "caption", "growth", "egg", "robin", "growth", "statement", "growth", "statement", "robin")
edges <- data.frame(node1, node2)

До сих пор я только выяснил, как вычислить корреляции между каждым словом на основе абзаца, используя

data <- data %>% group_by(word) %>% pairwise_cor(word, paragraph, sort = TRUE)

из пакета widyr, но для других манипуляций, которые я хочу запустить, мне действительно нужно, чтобы ребра были реальным числом совпадений, а не коэффициентом корреляции.Кто-нибудь знает, есть ли какой-нибудь код, который мог бы исправить это для меня?Любая помощь будет высоко ценится! *

1 Ответ

0 голосов
/ 19 апреля 2019

Я не совсем уверен, что вы имеете в виду, когда говорите: «Мне действительно нужно, чтобы ребра были фактическим числом совпадений, а не коэффициентом корреляции».Тем не менее, «я пытаюсь сгенерировать список ребер для igraph из него, который соединяет каждое слово на основе его вхождения в абзаце», кажется довольно ясным.Я понимаю, что если два слова находятся в одном и том же абзаце, они связаны между собой.Вы можете создать такой крайний список, используя combn, например:

Edges = c()
for(p in unique(data$paragraph)) { 
    Edges = c(Edges, word[combn(which(data$paragraph == p), 2)]) }
EL = matrix(Edges, ncol=2, byrow=T)

library(igraph)

g = graph_from_edgelist(EL, directed=FALSE)
plot(g)

Graph from paragraphs

...