设置将文本文件读入 tm Corpora 的编码

set encoding for reading text files into tm Corpora

正在使用 tm Corpus 加载一堆文档我需要指定编码。

所有文档均采用 UTF-8 编码。如果通过文本编辑器打开内容没问题,但语料库内容充满了奇怪的符号(indicioâ.,'sœs ....) 源文本为西班牙语。 ES_es

library(tm)
cname <- file.path("C:", "Users", "john", "Documents", "texts")
docs <- Corpus(DirSource(cname), encoding ="UTF-8")

> Error in Corpus(DirSource(cname), encoding = "UTF-8") : 
  unused argument (encoding = "UTF-8")

已编辑:

从我注意到的语料库中获取 str(documents[1]):

.. ..$ 语言:字符 "en"

如何指定 "UTF-8"、"Latin1" 或任何其他编码以避免出现奇怪的符号?

此致

从 "C:" 可以看出,您正在使用 Windows,它假设使用 Windows-1252 编码(在大多数系统上)而不是 UTF-8。您可以尝试以字符形式读取文件,然后设置 Encoding(myCharVector) <- "UTF-8"。如果输入编码是 UTF-8,这应该会导致您的系统正确识别和显示 UTF-8 字符。

或者这会起作用,尽管它也使 tm 变得不必要:

require(quanteda)
docs <- corpus(textfile("C:/Users/john/Documents/texts/*.txt", encoding = "UTF-8"))

然后你可以看到文本使用例如:

cat(texts(docs)[1:2])

它们应该设置了编码位并正确显示。然后,如果您愿意,可以使用以下方法将它们放入 tm

docsTM <- Corpus(VectorSource(texts(docs)))

似乎没有必要使用 quanteda 包(除了一些奇怪的行为在转换为 TM VCorpora 时丢失文件名)

files <- DirSource(directory = "C:/Users/john/Documents/",encoding ="UTF-8" )
mycorpus<- VCorpus(x=files)

现在编码正确了。