在R中使用文字属性的社交网络

时间:2019-02-23 15:05:28

标签: r networking text

我不确定是否可以在R中做我想做的事,但是我有一个看起来像这样的数据框:

df <- data.frame(Book=c(1,1,1,2,2,2,3,3,3), 
                 Character=c('Sally', 'Jessie', 'Linda', 'Sally', 'Jessie', 'Linda', 'Sally', 'Jessie', 'Linda'),
                 Target=c('Jessie', 'Sally', 'Jessie', 'Jessie', 'Sally', 'Sally', 'Jessie', 'Linda', 'Sally'),
                 Word=c('cool', 'good', 'like', 'time', 'good', 'like', 'time', 'good', 'like'),
                 Total=c(1,2,4,2,4,3,2,4,4),
                 AllTotal=c(5,10,11,5,10,11,5,10,11))

“字符”列是说“单词”的人,“目标”是要说的人。因此,我有一个定向网络。我正在尝试建立一个社交网络,该社交网络基于与特定人群交谈时谁使用哪些单词。例如,当Sally与Jessie交谈时,Sally可能只使用某些单词(比如说“ cool”),而Jessie可能一直与网络中的每个人都使用“ cool”一词。

(“总计”列是角色A在给定书中说一个单词的次数,而“全部总计”是角色A在所有书中说一个单词的次数。)

我使用了R包“ textnets”,但它只是将相似的单词整体聚集在一起,而不考虑谁在向谁说什么。有什么办法可以在此软件包或其他软件包中做我想要的事情?

install.packages('devtools')
library(devtools)
install_github("cbail/textnets")
library(textnets)

textnet <- PrepText(df, groupvar = "Character", textvar = "Word", node_type = "groups", pos = "all")
text_network <- CreateTextnet(textnet)
VisTextNet(text_network, label_degree_cut = 0)

(CreateTextnet函数不适用于此简单示例,但适用于以相同方式设置的较大数据集;我不明白为什么)。

我认为我需要显示的是Sally-> Jessie,边缘带有“ cool”一词,而Jessie-> Sally和Jessie-> Linda的边缘带有“ cool”。或某种聚类情节,其中Sally和Jessie围绕“酷”一词聚类(但是我​​需要知道是谁在向谁使用它,所以我不确定这是否可行)。

我将“ igraph”软件包用于常规社交网络(不包括Word数据),但是我不知道是否可以通过某种方式将Word数据添加到其中。

install.packages('igraph')
library(igraph)
edgeDat <- graph.edgelist(as.matrix(df[,2:3]), directed=T)
plot(edgeDat)

关于这种网络称为什么以及我如何实现的任何想法?

0 个答案:

没有答案