小编ds1*_*s10的帖子

使用R和Rweka在termdocument矩阵中使用bigrams而不是单个单词

我找到了一种在术语 - 文档矩阵中使用bigrams而不是单个令牌的方法.解决方案已在stackoverflow上提出: findAssocs用于R中的多个术语

这个想法是这样的:

library(tm)
library(RWeka)
data(crude)

#Tokenizer for n-grams and passed on to the term-document matrix constructor
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
txtTdmBi <- TermDocumentMatrix(crude, control = list(tokenize = BigramTokenizer))
Run Code Online (Sandbox Code Playgroud)

但最后一行给出了错误:

Error in rep(seq_along(x), sapply(tflist, length)) : 
  invalid 'times' argument
In addition: Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
Run Code Online (Sandbox Code Playgroud)

如果我从最后一行删除了tokenizer它会创建一个常规的tdm,所以我猜问题是在BigramTokenizer函数中的某个地方,尽管这是Weka网站在这里给出的相同例子:http://tm.r-forge.r -project.org/faq.html#Bigrams.

text r text-mining

16
推荐指数
2
解决办法
1万
查看次数

从R中的语料库计算单个文档中的单词并将其放入数据框中

我有文本文档,在每个文档中我都有电视剧剧集的文字.每个文件都是不同的系列.我想比较每个系列中最常用的单词,我想我可以使用ggplot绘制它们,并且在一个轴上有'系列1术语至少出现x次',''系列2术语至少出现x次' 另外一个.我希望我需要的是一个包含3列'Terms','Series x','Series Y'的数据帧.系列x和y具有该单词出现的次数.

我尝试了多种方法来做到这一点但失败了.我最接近的是我可以阅读语料库并创建一个包含一列中所有术语的数据框,如下所示:

library("tm")

corpus <-Corpus(DirSource("series"))
corpus.p <-tm_map(corpus, removeWords, stopwords("english"))  #removes stopwords
corpus.p <-tm_map(corpus.p, stripWhitespace)  #removes stopwords
corpus.p <-tm_map(corpus.p, tolower)  
corpus.p <-tm_map(corpus.p, removeNumbers)
corpus.p <-tm_map(corpus.p, removePunctuation)
dtm <-DocumentTermMatrix(corpus.p)
docTermMatrix <- inspect(dtm)
termCountFrame <- data.frame(Term = colnames(docTermMatrix))
Run Code Online (Sandbox Code Playgroud)

然后我知道我可以添加一个列添加如下的单词:

termCountFrame$seriesX <- colSums(docTermMatrix)
Run Code Online (Sandbox Code Playgroud)

但是当我只想要一个时,这会增加两个文件的出现次数.

所以我的问题是:

1)是否可以在单个doc上使用colSums,如果没有,是否有另一种方法可以将doctermmatrix转换为具有每个文档的术语计数的数据帧

2)是否有人知道如何限制这一点,以便我在每个文档中获得最常用的术语

r corpus text-mining dataframe

5
推荐指数
1
解决办法
1万
查看次数

完全删除R中的数据帧行.停止表()为删除的数据返回0

我想从数据帧列中出现的次数中创建一个饼图.但是,在制作饼图之前,我想要删除5个单词.我有一个数据框,我可以使用以下内容删除这些行:

subset(df, tag != "rubbish")
Run Code Online (Sandbox Code Playgroud)

但是,如果我然后使用

pie(table(df$tag)
Run Code Online (Sandbox Code Playgroud)

垃圾仍然出现在饼图中,但是有零实例.

table(df$tag) 在子集之前给了我类似的东西:

tag1  3
tag2  7
rubbish 9
Run Code Online (Sandbox Code Playgroud)

之后:

tag1  3
tag2  7
rubbish 0
Run Code Online (Sandbox Code Playgroud)

无论如何,如果没有table()返回零,完全删除垃圾?我试过,table(df$tag, exclude="rubbish")但我想删除多个标签.

r subset dataframe pie-chart

4
推荐指数
1
解决办法
1437
查看次数

标签 统计

r ×3

dataframe ×2

text-mining ×2

corpus ×1

pie-chart ×1

subset ×1

text ×1