标签:
#定义函数,打开每一个文件,找到空行,将空行后的文本返回为一个字符串向量,该向量只有一个元素,就是空行之后的所有文本拼接之后的字符串
#很多邮件都包含了非ASCII字符,因此设为latin1就可以读取非ASCII字符
#readLines,读取每一行作为一个元素
get.msg <- function(path)
{
con <- file(path, open = "rt")
text <- readLines(con)
# The message always begins after the first full line break
msg <- text[seq(which(text == "")[1] + 1, length(text), 1)]
close(con)
return(paste(msg, collapse = "\n"))
}
#dir读取目录下所有文件
spam.docs<-dir(spam.path)
#去掉目录下的cmds文件
spam.docs<-spam.docs[which(spam.docs!=‘cmds‘)]
#利用get.msg函数,读取每个邮件空行后的全部内容并形成文本向量
all.spam<-sapply(spam.docs,function(p) get.msg(paste(spam.path,p,sep=‘‘)))
#定义函数get.tdm,输入邮件文本向量,输出词项文档矩阵
get.tdm <- function(doc.vec)
{
control <- list(stopwords = TRUE,
removePunctuation = TRUE,
removeNumbers = TRUE,
minDocFreq = 2)
doc.corpus <- Corpus(VectorSource(doc.vec))
doc.dtm <- TermDocumentMatrix(doc.corpus, control)
return(doc.dtm)
}
写不下去了,按书上给的程序无法运行,可能是操作系统差异,出错是不知道哪个函数里的tolower
连tolower都会出错,真是无语,果然是统计学家写出来的软件
Machine Learning for hackers读书笔记(三)分类:垃圾过滤(未完成)
标签:
原文地址:http://www.cnblogs.com/MarsMercury/p/4899669.html