如何解决R 中的 tolower(txt) 非字符参数错误用于文本挖掘
作为初学者,我正在尝试使用 R 语言进行简单的文本挖掘 (NLP)。
我使用 tm_map
函数预处理了我的数据并对其进行了检查,并删除了所有标点符号和数字。
我还使用 tolower()
函数将文本文档转换为小写。
效果很好。
但是在创建文档矩阵时,我遇到了错误的问题:
tolower(txt) 中的错误:非字符参数
这个错误是什么以及如何继续这个错误? 这与UTF8有关吗? 任何线索将不胜感激。
docs <- tm_map(docs,removePunctuation)
inspect(docs[1])
for(j in seq(docs)) {
docs[[j]] <- gsub("\n"," ",docs[[j]])
}
docs <- tm_map(docs,removeNumbers)
docs <- tm_map(docs,content_transformer(tolower))
docs <- tm_map(docs,removeWords,stopwords("english"))
docs <- tm_map(docs,stripWhitespace)
这一切都很好,我的文本文档(只是一本电子书)被转换为小写,没有空格、数字等。下一步返回错误。
# returns the above error.
dtm <- DocumentTermMatrix(docs)
解决方法
问题不是将您的语料库变成 DocumentTermMatrix
。问题在于您的 for
循环。它将您的语料库变成字符列表。
如果你想像这样使用gsub
,你需要使用content_transformer
函数。
# removes the need of the for loop and keeps everything in a corpus.
docs <- tm_map(docs,content_transformer(function(x) gsub("\n"," ",x)))
这消除了循环的需要并保持一切正常。在此行之后,您可以毫无问题地运行其余代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。