从 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.
我有一大堆文件要在 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.