我想计算我收集的大量推文的成对词频。这样我就可以在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格式获得这些成对频率。
一切顺利:)
答案 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.