2017-01-28 42 views
0

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

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 | 
+------------------------+--------------+------+ 

于是我开始使用DocumentTermMatrix功能在TM封装:

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

这个工作(见下文中的“成功”的频率第一鸣叫):

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)) 

但是现在第一个问题开始了,矩阵太大了。接下来,我不知道如何才能限制成对wordfrequencies到一个特定的价值。举例来说,一个对需要有一个> 10的频率,这样矩阵不会变大。

希望你的建议,我怎么能以csv格式获得这些成对频率。

一切顺利:)

回答

1

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

假设你的数据在一个名为tweetstext数据帧是对应的变量

library(tidytext) 
library(dplyr) 

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

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

+0

谢谢Yannis P.!我以前不认识这本书,所以我一定会检查一下。我会评论,如果我找到了解决方案:)。是的,你说得对,我需要先清除停用词。 –

+0

已经找到了一些时间来检查,并且tidytext库适用于成对词频率!感谢Yannis! –

+0

似乎是在R –

0

我想你应该检查RWeka库尤其是NGramTokenizer()函数。它可以让你获得所有成对的单词。然后,您应该使用findFreqTerms()函数来选择只有项> 10.

+0

的食谱非常感谢,我会直接检查它是否有效。 :) –