如果没有可重现的示例,这是无法验证的,但我在这里创建了一个,因为这可能是一个错误。但是,根据我尝试重现报告的错误,我认为不是。
这类问题最好在 quanteda GitHub 问题网站上提交,而不是 SO 问题。但是在这里很好解决,因为我还将向您展示一种避免使用tm的方法(即使您的示例没有指定,很明显您正在使用它的一些功能)。
library("quanteda")
## quanteda version 0.99.22
## Using 7 of 8 threads for parallel computing
ap.corpus <- corpus(LETTERS[1:10])
ap.corpus
## Corpus consisting of 10 documents and 0 docvars.
texts(ap.corpus)
## text1 text2 text3 text4 text5 text6 text7 text8 text9 text10
## "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
ap.corpus <- tm::Corpus(tm::VectorSource(ap.corpus))
## <<SimpleCorpus>>
## Metadata: corpus specific: 1, document level (indexed): 0
## Content: documents: 10
ap.corpus <- tm::tm_map(ap.corpus, tolower)
corpus(ap.corpus)
## Corpus consisting of 10 documents and 0 docvars.
corpus(ap.corpus) %>% texts()
## text1 text2 text3 text4 text5 text6 text7 text8 text9 text10
## "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
所以这一切似乎工作得很好。
但是,没有必要为此使用tm。您可以在quanteda中执行以下操作:
ap.corpus2 <- corpus(LETTERS[1:10])
texts(ap.corpus2) <- char_tolower(texts(ap.corpus2))
texts(ap.corpus2)
## text1 text2 text3 text4 text5 text6 text7 text8 text9 text10
## "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
但是,我们不鼓励您直接修改您的语料库,因为这是一种破坏性的更改,这意味着您无法恢复文本的大小写版本,如果您希望将它们用于其他目的。
使用工作流程要好得多,例如:
corpus(c("A B C", "C D E")) %>%
tokens() %>%
tokens_tolower()
## tokens from 2 documents.
## text1 :
## [1] "a" "b" "c"
##
## text2 :
## [1] "c" "d" "e"