使用RTextTools进行二元文字分类时出错

使用RTextTools进行二元文字分类时出错,r,tm,n-gram,text-classification,R,Tm,N Gram,Text Classification,我正在尝试使用RTextTools执行一个双字符文本分类。我在创建DocumentTermMatrix of Bigrams(如下所示)时遇到一个错误。如何修复它 样本数据集: text <- c('sunny','rainy','sunny sunny','sunny rainy','rainy sunny','rainy rainy','sunny sunny sunny','sunny rainy sunny','sunny sunny rainy','rainy sunny sun

我正在尝试使用RTextTools执行一个双字符文本分类。我在创建DocumentTermMatrix of Bigrams(如下所示)时遇到一个错误。如何修复它

样本数据集:

text <- c('sunny','rainy','sunny sunny','sunny rainy','rainy sunny','rainy rainy','sunny sunny sunny','sunny rainy sunny','sunny sunny rainy','rainy sunny sunny','rainy rainy sunny')
issunny <- c('y','n','y','n','n','n','y','y','y','y','n')
data <- data.frame(text,issunny)
代码:

还尝试使用
RWeka
库,但遇到错误:

library(RTextTools)
library(tm)
library(RWeka)

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
dtMatrix <- DocumentTermMatrix(Corpus(VectorSource(data["text"])), control=list(tokenize = BigramTokenizer))       

Error in `[.simple_triplet_matrix`(matrix, totalSize, ) : subscript out of bounds
库(RTextTools)
图书馆(tm)
图书馆(鲁韦卡)

BigramTokenizer第一个在这里也抛出一个错误。也使用
作为.character(数据[,“文本])
。看起来像只虫子。第二个很好用。无论如何,我会尝试
library(quanteda);dfm(作为.character(数据[,“文本]),ngrams=2)
。这是一个极好的文本挖掘包。所有这些代码都是必需的吗?错误发生在第一行。@lukeA非常感谢。正如您所提到的,第二个问题中的As.character(数据[,“text”]可以正常工作。但是现在我遇到了另一个错误,正如我在问题的编辑部分所示。@Pascal我包含整个代码的原因是几天前我尝试创建DocumentTermMatrix时,我能够创建DocumentTermMatrix(不记得如何创建)但是在预测容器中出现了一个错误。我当时无法重现该错误,因为我被DocumentTermMatrix创建击中。第一个在这里也会抛出一个错误。还有
as.character(data[,“text”])
。看起来像个bug。第二个很好用。无论如何,我会尝试
library(quanteda);dfm(as.character(data[,“text”]),ngrams=2)
。这是一个极好的文本挖掘软件包。所有这些代码都是必需的吗?错误发生在第一行。@lukeA非常感谢。正如您提到的,As.character(数据[,“text”]在第二个中,一个很好。但是现在我遇到了另一个错误,正如我在问题的编辑部分所示。@Pascal我包含整个代码的原因是几天前我尝试创建DocumentTermMatrix时,我能够创建一个DocumentTermMatrix(不记得如何创建)但是在预测容器中出现了一个错误。我无法重现这个错误,因为当时我被DocumentTermMatrix创建所击中。
dtMatrix <- create_matrix(data["text"], ngramLength=2)
container <- create_container(dtMatrix, data$issunny, trainSize=1:nrow(data), virgin=FALSE)
model <- train_model(container, "TREE")
predictionData <- list("sunny sunny sunny rainy rainy", "rainy sunny rainy rainy", "hello", "", "this is another rainy world")
predMatrix <- create_matrix(predictionData, originalMatrix=dtMatrix)
predSize <- length(predictionData)
predictionContainer <- create_container(predMatrix, labels=rep(0,predSize), testSize=1:predSize, virgin=FALSE)
result <- classify_model(predictionContainer, model)
dtMatrix <- create_matrix(data["text"], ngramLength=2);

Error in FUN(X[[i]], ...) : non-character argument
library(RTextTools)
library(tm)
library(RWeka)

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
dtMatrix <- DocumentTermMatrix(Corpus(VectorSource(data["text"])), control=list(tokenize = BigramTokenizer))       

Error in `[.simple_triplet_matrix`(matrix, totalSize, ) : subscript out of bounds
predictionContainer <- create_container(predMatrix, labels=rep(0,predSize), testSize=1:predSize, virgin=FALSE);

Error in validObject(.Object) : invalid class “matrix.csr” object: ra has too few, or too many elements