给你,从头到尾。我更改了您的网页抓取代码,因此它可以减少非文本内容,然后底部是字数。
这是您下载 URL 的代码...
library(XML)
library(RCurl)
url.link <- 'http://www.jamesaltucher.com/sitemap.xml'
blog <- getURL(url.link)
blog <- htmlParse(blog, encoding = "UTF-8")
titles <- xpathSApply (blog ,"//loc",xmlValue) ## titles
我已更改您的功能以从每一页中提取文本...
traverse_each_page <- function(x){
tmp <- htmlParse(getURI(x))
xpathSApply(tmp, '//div[@id="mainContent"]', xmlValue)
}
pages <- sapply(titles[2:3], traverse_each_page)
让我们删除换行符和其他非文本字符...
nont <- c("\n", "\t", "\r")
pages <- gsub(paste(nont,collapse="|"), " ", pages)
关于您的第二个问题,要检查 中的内容pages
,只需在控制台中输入:
pages
现在让我们执行第 5 步“计算所有文章中出现的每个单词的频率,不区分大小写。”
require(tm)
# convert list into corpus
mycorpus <- Corpus(VectorSource(pages))
# prepare to remove stopwords, ie. common words like 'the'
skipWords <- function(x) removeWords(x, stopwords("english"))
# prepare to remove other bits we usually don't care about
funcs <- list(tolower, removePunctuation, removeNumbers, stripWhitespace, skipWords)
# do it
a <- tm_map(mycorpus, FUN = tm_reduce, tmFuns = funcs)
# make document term matrix
mydtm <- DocumentTermMatrix(a, control = list(wordLengths = c(3,10)))
在这里您可以看到每个文档的每个单词的计数
inspect(mydtm)
# you can assign it to a data frame for more convenient viewing
my_df <- inspect(mydtm)
my_df
这是计算所有文章中出现的每个单词的总频率的方法,不区分大小写...
apply(mydtm, 2, sum)
这是否回答你的问题?我想你可能真的只对最常见的词感兴趣(如@buruzaemon 的回答细节),或者某个词的子集,但这是另一个问题......