用R讀取PDF並進行資料採礦

來源:互聯網
上載者:User

用R讀取PDF並進行資料採礦,例子如下:

# here is a pdf for miningurl <- "http://www.noisyroom.net/blog/RomneySpeech072912.pdf"dest <- tempfile(fileext = ".pdf")download.file(url, dest, mode = "wb")# set path to pdftotxt.exe and convert pdf to textexe <- "C:\\Program Files\\xpdfbin-win-3.03\\bin32\\pdftotext.exe"system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)# get txt-file name and open itfiletxt <- sub(".pdf", ".txt", dest)shell.exec(filetxt); shell.exec(filetxt) # strangely the first try always throws an error..# do something with it, i.e. a simple word cloudlibrary(tm)library(wordcloud)library(Rstem)txt <- readLines(filetxt) # don't mind warning..txt <- tolower(txt)txt <- removeWords(txt, c("\\f", stopwords()))corpus <- Corpus(VectorSource(txt))corpus <- tm_map(corpus, removePunctuation)tdm <- TermDocumentMatrix(corpus)m <- as.matrix(tdm)d <- data.frame(freq = sort(rowSums(m), decreasing = TRUE))# Stem wordsd$stem <- wordStem(row.names(d), language = "english")# and put words to column, otherwise they would be lost when aggregatingd$word <- row.names(d)# remove web address (very long string):d <- d[nchar(row.names(d)) < 20, ]# aggregate freqeuncy by word stem and# keep first words..agg_freq <- aggregate(freq ~ stem, data = d, sum)agg_word <- aggregate(word ~ stem, data = d, function(x) x[1])d <- cbind(freq = agg_freq[, 2], agg_word)# sort by frequencyd <- d[order(d$freq, decreasing = T), ]# print wordcloud:wordcloud(d$word, d$freq)# remove filesfile.remove(dir(tempdir(), full.name=T)) # remove files

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.