tidytext 从文件夹中读取文件
tidytext read files from folder
我正在尝试将 pdf 文件的文件夹读取到 R 中的数据框中。我能够使用 pdftools
库和 pdf_text(filepath)
读取单个 pdf 文件。
理想情况下,我可以获取一系列 pdf 的作者和标题,然后将它们推送到一个数据框中,该数据框有一列,这样我就可以在文本上使用基本的 tidytext
函数。
现在对于单个文件,我可以使用:
library(pdftools)
library(tidytext)
library(dplyr)
txt <- pdf_text("filpath")
txt <- data_frame(txt)
txt %>%
unnest_tokens(word, txt)
这里我有一个包含单个单词的数据框。我想访问一个数据框,我在其中解压了文章,包括标题和作者列。
要查找工作目录中的所有 PDF,您可以使用 list.files
和一个参数:
all_pdfs <- list.files(pattern = ".pdf$")
all_pdfs
object 将是一个包含所有文件名的字符向量。
然后,您可以设置一个管道来读取所有 PDF,并使用 tidytext 和来自 purrr 的 map
函数解除它们的嵌套。如果您愿意,可以在 map()
中使用 mutate()
来用文件名注释每一行。
library(pdftools)
library(tidyverse)
library(tidytext)
map_df(all_pdfs, ~ data_frame(txt = pdf_text(.x)) %>%
mutate(filename = .x) %>%
unnest_tokens(word, txt))
您需要做一些更高级的工作才能获得标题和作者栏,具体取决于您在何处获得该信息。也许在取消嵌套之前在 txt
或 filename
上使用正则表达式?
我可以建议添加:basename(.x)
。如果您像我一样在 list.files()
中使用 full_names = TRUE
选项,这将删除完整路径信息。
df <- map_df(all_pdfs[3:5], ~ data_frame(txt = pdf_text(.x)) %>%
mutate(filename = basename(.x)) %>%
unnest_tokens(word, txt))
此外,如果您遇到任何 PDF 解析错误..."Error in poppler_pdf_text(loadfile(pdf), opw, upw) : PDF parsing failure."...,您可以尝试使用 [=16= 创建 pdf_text()
函数的 safe
版本].有关为此使用 {purrr} 包的更多信息,请参见例如此博客由布鲁诺·罗德里格斯 http://www.brodrigues.co/blog/2017-03-24-lesser_known_purrr/
我正在尝试将 pdf 文件的文件夹读取到 R 中的数据框中。我能够使用 pdftools
库和 pdf_text(filepath)
读取单个 pdf 文件。
理想情况下,我可以获取一系列 pdf 的作者和标题,然后将它们推送到一个数据框中,该数据框有一列,这样我就可以在文本上使用基本的 tidytext
函数。
现在对于单个文件,我可以使用:
library(pdftools)
library(tidytext)
library(dplyr)
txt <- pdf_text("filpath")
txt <- data_frame(txt)
txt %>%
unnest_tokens(word, txt)
这里我有一个包含单个单词的数据框。我想访问一个数据框,我在其中解压了文章,包括标题和作者列。
要查找工作目录中的所有 PDF,您可以使用 list.files
和一个参数:
all_pdfs <- list.files(pattern = ".pdf$")
all_pdfs
object 将是一个包含所有文件名的字符向量。
然后,您可以设置一个管道来读取所有 PDF,并使用 tidytext 和来自 purrr 的 map
函数解除它们的嵌套。如果您愿意,可以在 map()
中使用 mutate()
来用文件名注释每一行。
library(pdftools)
library(tidyverse)
library(tidytext)
map_df(all_pdfs, ~ data_frame(txt = pdf_text(.x)) %>%
mutate(filename = .x) %>%
unnest_tokens(word, txt))
您需要做一些更高级的工作才能获得标题和作者栏,具体取决于您在何处获得该信息。也许在取消嵌套之前在 txt
或 filename
上使用正则表达式?
我可以建议添加:basename(.x)
。如果您像我一样在 list.files()
中使用 full_names = TRUE
选项,这将删除完整路径信息。
df <- map_df(all_pdfs[3:5], ~ data_frame(txt = pdf_text(.x)) %>%
mutate(filename = basename(.x)) %>%
unnest_tokens(word, txt))
此外,如果您遇到任何 PDF 解析错误..."Error in poppler_pdf_text(loadfile(pdf), opw, upw) : PDF parsing failure."...,您可以尝试使用 [=16= 创建 pdf_text()
函数的 safe
版本].有关为此使用 {purrr} 包的更多信息,请参见例如此博客由布鲁诺·罗德里格斯 http://www.brodrigues.co/blog/2017-03-24-lesser_known_purrr/