试图对twitter数据进行一些分析.下载推文并使用下面的推文文本创建语料库
# Creating a Corpus
wim_corpus = Corpus(VectorSource(wimbledon_text))
Run Code Online (Sandbox Code Playgroud)
在尝试创建如下的TermDocumentMatrix时,我收到错误和警告.
tdm = TermDocumentMatrix(wim_corpus,
control = list(removePunctuation = TRUE,
stopwords = TRUE,
removeNumbers = TRUE, tolower = TRUE))
Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 'i, j, v' different lengths
In addition: Warning messages:
1: In parallel::mclapply(x, termFreq, control) :
all scheduled cores encountered errors in user code
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
3: In TermDocumentMatrix.VCorpus(corpus) : invalid document identifiers
4: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), :
NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出这个错误指示的内容吗?这可能与tm包有关吗?
已导入tm库.我正在使用R版本:R 3.0.1和RStudio:0.97
小智 11
我遇到了同样的问题,结果证明它与包兼容性有关.尝试安装
install.packages("SnowballC")
Run Code Online (Sandbox Code Playgroud)
并加载
library(SnowballC)
Run Code Online (Sandbox Code Playgroud)
在调用DocumentTermMatrix之前.
它解决了我的问题.
小智 7
我认为错误是由于推文消息中的一些"异国情调"字符,而tm函数无法处理.我使用推文作为语料库来获得同样的错误.也许以下解决方法有助于:
#将一些推文消息(此处从文本文件中)读入矢量
rawTweets <- readLines(con = "target_7_sample.txt", ok = TRUE, warn = FALSE, encoding = "utf-8")
Run Code Online (Sandbox Code Playgroud)
#将推文文本明确转换为utf-8
convTweets <- iconv(rawTweets, to = "utf-8")
Run Code Online (Sandbox Code Playgroud)
#上面的转换会为您留下矢量条目"NA",即那些无法处理的推文.使用以下命令删除"NA"条目:
tweets <- (convTweets[!is.na(convTweets)])
Run Code Online (Sandbox Code Playgroud)
如果某些推文的删除不是您的解决方案的问题(例如构建一个文字云),那么这种方法可能会起作用,您可以通过调用tm包的Corpus函数来继续.
问候 - 阿尔伯特
小智 6
我在一篇关于TM的文章中找到了解决这个问题的方法.
以下错误的示例如下:
getwd()
require(tm)
# Importing files
files <- DirSource(directory = "texts/",encoding ="latin1" )
# loading files and creating a Corpus
corpus <- VCorpus(x=files)
# Summary
summary(corpus)
corpus <- tm_map(corpus,removePunctuation)
corpus <- tm_map(corpus,stripWhitespace)
corpus <- tm_map(corpus,removePunctuation)
matrix_terms <- DocumentTermMatrix(corpus)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Warning messages: In TermDocumentMatrix.VCorpus(x, control) : invalid document identifiers
发生此错误的原因是您需要类Vector Source的对象来执行Term Document Matrix,但之前的转换会转换您的文本语料库,因此,更改函数不接受的类.
但是,如果在使用TermDocumentMatrix函数之前再添加一个命令,则可以继续.
下面是使用new命令的代码:
getwd()
require(tm)
files <- DirSource(directory = "texts/",encoding ="latin1" )
# loading files and creating a Corpus
corpus <- VCorpus(x=files)
# Summary
summary(corpus)
corpus <- tm_map(corpus,removePunctuation)
corpus <- tm_map(corpus,stripWhitespace)
corpus <- tm_map(corpus,removePunctuation)
# COMMAND TO CHANGE THE CLASS AND AVOID THIS ERROR
corpus <- Corpus(VectorSource(corpus))
matriz_terms <- DocumentTermMatrix(corpus)
Run Code Online (Sandbox Code Playgroud)
因此,您不会遇到更多问题.