从 pdf 或 R 中的文本读取语料库

Corpus reading from pdf OR text in R

我有一大堆文件要在 R 中作为语料库阅读。所有文件都是pdf,但最近,我意识到其中一些将是txt。

在我获得文本文件之前,我只是简单地创建目录中的 pdf 文件列表,并使用带有 readerControl:

的 Corpus 函数读取它们
getwd()
files <- list.files(pattern = "pdf$")
corp <- Corpus(URISource(files),
               readerControl = list(reader = readPDF))

我试图创建一个 pdf 和 txt 的组合列表,但我找不到使用 pdf 或 txt 的 reader 控件的方法:

files1 <- list.files(pattern = "pdf$")
files2 <- list.files(pattern = "txt$")
files<-c(files1,files2)

corp <- Corpus(URISource(files),
               readerControl = list(reader = c(readPDF,readPlain)))

关于如何解决这个问题有什么想法吗? 我考虑合并两个 Copuses 元素,一个 reader=readPDF,另一个 reader=readPlain。但是由于我是文本挖掘的新手,所以我不确定这样做的最佳做法是什么。

使用 readtext 包更简单。如果您的 .txt 和 .pdf 文件混合在同一个子目录中,请调用此 path_to_your_files/,然后您可以将它们全部读入,然后将它们变成 tm 语料库使用readtext()。此函数自动识别不同的输入文件类型并将它们转换为 UTF-8 文本,以便在 R 中进行文本分析。(此处创建的 rtext 对象是一种特殊类型的 data.frame,它包括一个文档标识符列和一个名为 text 的列,其中包含输入文档的转换文本内容。)

rtext <- readtext::readtext("path_to_your_files/*")
tm::Corpus(VectorSource(rtext[["text"]]))

readtext 对象也可以直接与 quanteda package 一起用作 quanteda::corpus() 的输入,如果您想尝试替代 tm.