2

我正在尝试从加拿大法案中为一个项目(在本例中为食品和药品法案)提取数据,并将其导入 R。我想将其分成两部分。第一个目录(图1)。第二,行为中的信息(图2)。但我不想要法语部分(je suis désolé)。我曾尝试使用 tabulizer extract_area(),但我不想手动选择该区域 90 次(我将为多项立法执行此操作)。

显然我没有一个最小的可重复示例编码出来......但是pdf可以在这里下载:https ://laws-lois.justice.gc.ca/eng/acts/F-27/

选项 2 是编写一些东西以通过 XML 将其提取出来,但我不太习惯使用 XML 文件。pdftools除非使用其中一个或非常烦人,否则tabulizer我更喜欢使用其中一个库(主要用于学习目的)的答案。

我在 stackoverflow 上看到了一些类似的问题,但它们都是为表格编写/设计的,而这不是。我不是受过培训的量化/数据科学研究人员,因此解释会非常有帮助(但不是必需的)。

目录

立法内容

4

1 回答 1

0

这是一个读取 pdf 文本并检测语言的选项。阅读 pdf 后,您可能需要进行大量文本清理。假设您不关心保留格式。

library(pdftools)
a = pdf_text('F-27.pdf')

#split text to get sentence chunks, mostly.
b = sapply(a,strsplit,'\r\n')

#do a bunch of other text cleanup, here's an example using the third list element. You can expand this to cover all of b with a loop or list function like sapply. 
#Two spaces should hopefully retain most sentence-like fragments, you can get more sophisticated:
d = strsplit(b[[3]], '  ')[[1]]

library(cld3) #language tool to detect french and english
x = sapply(d,detect_language)

#Keep only English
x[x=='en']
于 2021-02-27T06:15:23.760 回答