我正在尝试使用包tm
阅读一些PDF文档,以便在R中进行文本挖掘。但是,我的PDF是德语版本,我不知道如何处理这些特殊字符。
library(tm)
pathname <- "J:/branchwarren/docs/tm/"
raw_corpus <- VCorpus(DirSource(directory=path,encoding="UTF-8"), readerControl=list(reader=readPDF,language="de"))
tdm <- TermDocumentMatrix(raw_corpus)
tdm_mat <- as.data.frame(tdm)
输出tdm_mat
例如是(其中列是每个PDF中的频率)
1 geschã¤ftsverlauf 9 9 1 3 0 0
2 gesellschaft 1 3 1 1 1 1
3 gesellschaft. 0 0 1 1 1 0
4 gesellschaftskapital 1 1 1 1 1 1
5 gestaltung 1 1 1 1 1 1
6 gesteigert 0 0 2 0 2 6
7 gesunden 0 1 0 1 1 1
8 gewinnreserve 1 1 1 1 1 1
9 gewinnverwendung) 1 1
正如您所注意到的,第一行中的字符未正确显示。它应该是geschäftsverlauf。
任何帮助或建议?提前谢谢
答案 0 :(得分:1)
评论太长,但例如这对我来说符合预期:
library(tm)
dir.create(pathname <- tempfile())
writeLines("Der Geschäftsbericht war gut. Die Maßnahmen griffen.", tf <- tempfile(fileext = ".md"))
rmarkdown::render(input=tf, output_format="pdf_document", output_file="1.pdf", output_dir=pathname)
if(all(file.exists(Sys.which(c("pdfinfo", "pdftotext"))))) { # see ?readPDF
raw_corpus <- VCorpus(DirSource(directory=pathname, encoding="UTF-8"), readerControl=list(reader=readPDF,language="de"))
tdm <- TermDocumentMatrix(raw_corpus)
tdm_mat <- as.data.frame(as.matrix(tdm))
tdm_mat
}
# 1.pdf
# der 1
# die 1
# geschäftsbericht 1
# griffen. 1
# gut. 1
# maßnahmen 1
# war 1
我的sessionInfo()
:
R version 3.3.0 (2016-05-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
...
tm_0.6-2 NLP_0.1-8
...
也许编码不匹配?尝试提供输入数据+你的sessionInfo来调试&amp;重现错误。