将大字符转换为R中Gephi的字频矩阵

时间:2017-01-28 14:09:46

标签: r twitter frequency tm gephi

我想计算我收集的大量推文的成对词频。这样我就可以在Gephi(网络图)中使用它们进行可视化。当前数据看起来像这样(它是一个字符)。

head(Tweet_text)
[1] "habits that separates successful persons from mediocre persons habit success startup entrepreneurship"                 
[2] "business entrepreneurship tech watch youtube star casey neistat ride a drone dressed as santa"        
[3] "how to beat procrastination work deadlines workculture productivity management hr hrd entrepreneurship"
[4] "reading on entrepreneurship and startups and enjoying my latte"                                        
[5] "not a very nice way to encourage entrepreneurship and in the same sentence dog another company"        
[6] "us robotics founder on earlyday internet entrepreneurship articles management" 

结构如下:

str(Tweet_text)
 chr [1:8661] "habits that separates successful persons from mediocre persons habit success startup entrepreneurship" ...

在此示例数据集中,我有8661条推文。现在我想计算所有这些可以导出到Gephi的推文的成对字频率。我正在寻找的最终结果如下:

+------------------------+--------------+------+
| term1                  | term 2       | Freq |
+------------------------+--------------+------+
| entrepreneurship       | startup      |  2   |
+------------------------+--------------+------+

所以我开始在tm包中使用DocumentTermMatrix函数:

dtm <- DocumentTermMatrix(Corpus(VectorSource(Tweet_text)))

这很有效(见下面的频率&#34;成功&#34;在第一条推文中):

inspect(dtm[1, c("success")])
<<DocumentTermMatrix (documents: 1, terms: 1)>>
Non-/sparse entries: 1/0
Sparsity           : 0%
Maximal term length: 7
Weighting          : term frequency (tf)

    Terms
Docs success
   1       1

在此之后,我尝试将这些频率放在所需的表格格式中:

m<-as.matrix(dtm)
m[m>=1] <- 1
m <- m %*% t(m)
Dat_Freq <- as.data.frame(as.table(m))

但是现在第一个问题开始了,矩阵太大了。接下来我不知道如何将成对字段频率限制为特定值。例如,一对需要具有频率> 10,这样矩阵就不会变大。

非常感谢您的建议,我如何以csv格式获得这些成对频率。

一切顺利:)

2 个答案:

答案 0 :(得分:1)

您可以做的另一件事是使用tidytext包。

我们假设您的数据位于名为tweets的数据框中,而text是相应的变量

library(tidytext)
library(dplyr)

tweets %>%
   unnest_tokens(bigram, text, token = "ngrams", n = 2) %>%
   count(bigram, sort = TRUE) %>%
   head(100)

会给你100个最常见的双桅帆船。当然,首先删除停用词可能是一个好主意,所以看看Tidy text mining book

中的食谱

答案 1 :(得分:0)

我认为你应该检查RWeka库,尤其是NGramTokenizer()函数。它将允许您获得所有成对词。然后你应该使用findFreqTerms()函数只选择术语&gt; 10.