在RTextTools中创建分析模型

8

我正在尝试将文本文档分类到多个类别中。 我的下面的代码运行良好。

matrix[[i]] <- create_matrix(trainingdata[[i]][,1], language="english",removeNumbers=FALSE,stemWords=FALSE,weighting=weightTf,minWordLength=3)                              
container[[i]] <- create_container(matrix[[i]],trainingdata[[i]][,2],trainSize=1:50,testSize=51:100) ,
models[[i]] <- train_models(container[[i]], algorithms=c("MAXENT","SVM"))
results[[i]] = classify_models(container[[i]],models[[i]])

当我尝试使用以下代码获取精确度、召回率和准确率值时:
analytic[[i]]  <- create_analytics(container[[i]], results[[i]])

I get the following error:

Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA_real_, NA_real_ : 
  duplicate 'row.names' are not allowed

我的分类是以文本格式呈现的。 如果我将这些分类转换为数字格式,那么上面的代码就可以正常工作。

是否有一种方法来保持分类文本格式,并获得精度、召回率、准确率值。

我的目标是为多类分类器获取精度、召回率、准确率值和混淆矩阵。 是否有其他软件包可用于获取多类文本分类器(一对所有)的上述值。


你能试一下运行 factor(Categories) 吗? - Silence Dogood
有没有任何解决方法,可以做到这一点? - Prasanna Nandakumar
2
我遇到了相同的错误。在RTextTools::create_analytics中,有一个名为create_Topic_summary的本地函数,其中包含testing_codes <- as.numeric(as.vector(container@testing_codes))。这会导致NA填充testing_codes。仍在研究中。 - HowYaDoing
4
好的,我已经让它工作了。我必须进行两个步骤:1.将其转换为因子。 然后将该因子转换为数字。 我想这就像“类别1”-> 1,“类别2”-> 2一样。 如果您查看 RTextTools:用于文本分类的监督学习软件包 中的示例,该示例使用USCongress $ major作为类别标签。 它恰好是一个整数。 - HowYaDoing
2个回答

8

正如用户3294343所评论的那样,以下方法使我成功将我的类字段转换为因子(factor),再转换为数字(numeric):

doc_matrix <- create_matrix(dataset.arff$text, language="english", removeNumbers=TRUE, stemWords=TRUE, removeSparseTerms=.998)
container <- create_container(doc_matrix, as.numeric(factor(dataset.arff$"@@class@@")), trainSize=1:1500, testSize=1501:1999, virgin=FALSE)

那对我来说解决了错误。

0
以上提到的技巧对我有用,转换为因子
matrix <- create_matrix(combinedDF["error"], language="english", 
                    removeNumbers=TRUE, stemWords=FALSE, weighting=tm::weightTfIdf)
len <- dim(combinedDF)[1]
container <- create_container(matrix,as.numeric(factor(combinedDF$class)),trainSize=1:len, testSize=1:len, 
                          virgin=TRUE)
maxent_model <- train_model(container,"MAXENT")
maxent_results <- classify_model(container,maxent_model)
analytics <- create_analytics(container, maxent_results, b=1)

请问您能告诉我您的答案和dsg的答案有什么区别吗? - Hardik Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接