0

フォルダー内の 24 個の PDF ファイルを txt ファイルに変換して、セマンティック分析を実行できるようにする必要があります。この質問を見て、そこから先に進みました。ただし、コードを初めて機能させた後、いくつかの変更を加えたところ、次のエラーが発生しています。

In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
  EOF within quoted string

このため、以下のコードの変数に保存されるのbodiesは 24 個の空白のリストだけであり、(PDF を txt に変換することによって作成される 24 個のテキスト ファイルに加えて) 24 個の空白のテキスト ファイルになります。何が間違っていたのかわかりません - ある時点で、このコードは機能しました!

私はすでにこのエラーについて見つけたものを調べましたが、それらは に関連付けられておりread.csv、提案された修正 (white.space=TRUEおよびの設定quote="") は機能しませんでした。

コードは次のとおりです (エラーは 20 ~ 23 行目にあります)。

# folder with journal articles
PDFfolder_path <- "~/Dropbox/The Egoist PDFs/PDFs"
# vector of PDF file names
PDFfiles <- list.files(path=PDFfolder_path, pattern="*.pdf", full.names=TRUE)
# location of pdftotext.exe file
converter <- "~/Widgets/PDFConverter/bin64/pdftotext"
# folder with text files
textfolder_path <- "~/Dropbox/The Egoist PDFs/textfiles"

# convert PDFs in origin folder into txt files
lapply(PDFfiles, function(i) {
  system(paste(converter, paste0('"', i, '"')), wait=FALSE)
})
# it takes DropBox a bit of time to catch all of the folders
# without this we only end up with 23 txt files for some reason
Sys.sleep(.5)
txtfiles_in_PDFfolder_path <- list.files(path=PDFfolder_path, pattern="*.txt", full.names=TRUE)

# extracting only the Bodies of the articles
bodies <- lapply(txtfiles_in_PDFfolder_path, function(i){
  j <- paste0(scan(i, what = character()),  collapse = " ")
  regmatches(j, gregexpr("(?<=Published).*?(?=Prepaid Advertisements)", j, perl=TRUE))
})

# write article-bodies into txt files
lapply(1:length(bodies), function(i){
  write.table(bodies[i], file=paste(txtfiles_in_PDFfolder_path[i], "body", "txt", sep="."), quote=FALSE, row.names=FALSE, col.names=FALSE, eol=" ")
})

編集: 変数の結果についてもう少しbodies: 結果は 24 のリストであり、次の形式を取ります (R Studio コンソールでは、これの実際の名前はわかりません): ボディ: 24 のリスト: 1 のリスト ..$ : chr(0) :1 のリスト ..$ : chr(0) (24 回繰り返し)

しかし、それがなぜなのかは一生わかりません -ここでchr(0)起こっているのと同じ種類のことと関係があると思います- 私は間違いなくすべての行をキャプチャしていません.

考えられるすべてのことを試してみreadLines()ましscan()た。に切り替えたこともscan()ありread.table()ますが、read.table()それ自体が に依存していることがわかりましたscan! だから...私は立ち往生しており、サークルで自分のやり方で作業しています。

4

0 に答える 0