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

Convert large character into word frequency matrix for Gephi in R

我想计算我收集的大量推文的成对词频。这样我就可以在 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)))

这有效(请参阅下面第一条推文中 "success" 的频率):

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

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

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

但是现在第一个问题出现了,矩阵太大了。除此之外,我不知道如何将成对词频限制为特定值。例如,一对需要频率 > 10,这样矩阵就不会变大。

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

祝一切顺利:)

我认为您应该检查 RWeka 库,尤其是 NGramTokenizer() 函数。它将允许您获得所有可能的成对单词。然后你应该使用 findFreqTerms() 函数来 select 仅术语 > 10。

您可以做的另一件事是使用 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

中的食谱