将术语 - 文档矩阵转换为R中的节点/边列表

时间:2014-09-11 13:01:01

标签: r graph tm gephi text-analysis

我在R

中使用了tm包,这是一个术语文档稀疏矩阵

我可以使用以下代码片段转换为术语矩阵:

library("tm")
data(crude)
couple.of.words <- c("embargo", "energy", "oil", "environment", "estimate")
tdm <- TermDocumentMatrix(crude, control = list(dictionary = couple.of.words))    
tdm.matrix <- as.matrix(tdm)
tdm.matrix[tdm.matrix>=1] <- 1
tdm.matrix <- tdm.matrix %*% t(tdm.matrix)

但它并不是我真正需要的,因为我必须构建一个适合加载到像Gephi这样的网络分析工具中的数据框。理想情况下,此数据框应包含三列:

{term1,term2,term1和term2共同出现的文档数量}

例如(不是来自上述示例中提供的实际数据),如果单词&#34; embargo&#34;和&#34;能源&#34;共同出现在三个文档中(这可以在tdm矩阵中看到,每个文档都适合一列),我有一个这样的行:

+-----------+-------------+------+
| term1     | term 2      | Freq |
+-----------+-------------+------+
| oil       | energy      |  3   |
+-----------+-------------+------+

如何从term-document或term-term matrix构建此节点/边缘数据框?

1 个答案:

答案 0 :(得分:2)

如果再添加一行代码

,您可以获得所需的内容
desired <- as.data.frame(as.table(tdm.matrix))
head(desired)

#         Terms Terms.1 Freq
# 1     embargo embargo    8
# 2      energy embargo    6
# 3 environment embargo    2
# 4    estimate embargo    4
# 5         oil embargo   44
# 6     embargo  energy    6

as.table()实际上只会改变班级。事实上,有一种现有的as.data.frame.table()方法可以根据您的需要将表格展平为频率列表。