在使用 Quanteda 包阅读我的语料库后,在使用各种后续语句时出现相同的错误:
UseMethod(“texts”)中的错误:没有适用于“文本”的适用方法应用于类“c('corpus_frame','data.frame')”)的对象。
例如,当使用这个简单的语句时:texts(mycorpus)[2]
我的实际目标是创建一个 dfm(它给了我与上面相同的错误消息)。
我用这段代码阅读了语料库:
`mycorpus < corpus_frame(readtext("C:/Users/renswilderom/Documents/Stuff Im
working on at the moment/Newspaper articles DJ/test data/*.txt",
docvarsfrom="filenames", dvsep="_", docvarnames=c("Date of Publication",
"Length LexisNexis"), encoding = "UTF-8-BOM"))`
我的数据集由 50 篇报纸文章组成,包括一些元数据,例如出版日期。
为什么我每次都会收到此错误?非常感谢您的帮助!
回应1:
仅使用时,readtext()
我会更进一步,texts(text.corpus)[1]
并且不会产生错误。
但是,在标记化时,再次发生相同的错误,因此:
token <- tokenize(text.corpus, removePunct=TRUE, removeNumbers=TRUE, ngrams
= 1:2)
tokens(text.corpus)
产量:
UseMethod(“tokenize”)中的错误:没有适用于“tokenize”的方法应用于“c('readtext','data.frame')”类的对象
UseMethod(“tokens”)中的错误:没有适用于“tokens”的适用方法应用于类“c('readtext','data.frame')”的对象
回应 2:
现在我得到了这两个错误消息作为回报,我最初也得到了,所以我开始使用corpus_frame()
UseMethod(“tokens”)中的错误:没有适用于“tokens”的适用方法应用于“c('corpus_frame','data.frame')”类的对象
此外:警告消息:“语料库”已弃用。改用“corpus_frame”。查看帮助(“已弃用”)
我是否需要指定“标记化”或任何其他步骤仅应用于“文本”列而不应用于整个数据集?
回应 3:
谢谢你,帕特里克,这确实澄清了我,让我更进一步。运行时:
# Quanteda - corpus way
readtext("C:/Users/renswilderom/Documents/Stuff Im working on at the moment/Newspaper articles DJ/test data/*.txt",
docvarsfrom = "filenames", dvsep = "_",
docvarnames = c("Date of Publication", "Length LexisNexis", "source"),
encoding = "UTF-8-BOM") %>%
corpus() %>%
tokens(removePunct = TRUE, removeNumbers = TRUE, ngrams = 1:2)
我明白了:
tokens_internal(texts(x), ...) 中的错误:... 列表不包含 3 个元素此外:警告消息:removePunctremoveNumbers 已弃用;改用 remove_punctremove_numbers
所以我相应地改变了它(使用remove_punct
and remove_numbers
),现在代码运行良好。
或者,我也试过这个:
# Corpus - term_matrix way
readtext("C:/Users/renswilderom/Documents/Stuff Im working on at the moment/Newspaper articles DJ/test data/*.txt",
docvarsfrom = "filenames", dvsep = "_",
docvarnames = c("Date of Publication", "Length LexisNexis", "source"),
encoding = "UTF-8-BOM") %>%
term_matrix(drop_punct = TRUE, drop_numbers = TRUE, ngrams = 1:2)
这给出了这个错误:
term_matrix(., drop_punct = TRUE, drop_numbers = TRUE, ngrams = 1:2) 中的错误:无法识别的文本过滤器属性:“drop_numbers”
去除 后drop_numbers = TRUE
,实际生成矩阵。非常感谢您的帮助!