将大字符转换为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
中的食谱
我想计算我收集的大量推文的成对词频。这样我就可以在 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
中的食谱