Umlaut¨与包tm(R中的文本挖掘)

时间:2016-05-19 08:21:37

标签: r special-characters text-mining tm

我正在尝试使用包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。

任何帮助或建议?提前谢谢

1 个答案:

答案 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;重现错误。