【问题标题】:Umlaut ¨ with package tm (text mining in R)Umlaut ¨ 带有包 tm(R 中的文本挖掘)
【发布时间】:2016-05-19 19:17:47
【问题描述】:

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

有什么帮助或建议吗?提前谢谢

【问题讨论】:

  • 您可以使用Sys.setlocale("LC_CTYPE", "german") 来启动会话,而不是使用R 的utf-8 编码方法。
  • @Nickil Maveli,很抱歉,它不起作用。你能详细说明一下你的回应吗?谢谢

标签: r special-characters text-mining tm


【解决方案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 来调试和重现错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2018-08-16
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2018-05-04
    相关资源
    最近更新 更多