我对编程完全是个新手,我现在正在做我已经开始学习R的ResMA。
我现在必须做一些非常非常简单的事情,但在某些时候我似乎失败了。我只需要计算一个txt文件中的字素(字母),不需要其他任何东西。我首先用TM创建了一个语料库,我正在清理它和所有的东西,但当我试图运行每个字素的频率分析时,文本实际上没有清除标点符号和奇怪的符号等。
我使用的代码是这样的:
library("tm")
library("SnowballC")
library("wordcloud")
library("RColorBrewer")
filePath <- choose.files()
text <- readLines(filePath)
docs <- Corpus(VectorSource(text))
toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\\|")
docs <- tm_map(docs, content_transformer(tolower))
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, removePunctuation)
docs <- tm_map(docs, stripWhitespace)
docs <- tm_map(docs, stemDocument)
print (docs)
x=strsplit(text, "")
newlist = unlist(x,recursive=F)
freqtab = table(newlist)
print (freqtab)很明显,这里的docs和下面的x是完全不同的,但是当我试着做相反的事情时,它仍然不起作用。
我只需要这样做:我要去上学了!->我要去学校了-> i- 2a-1m-1 ....
我不知道我的问题是从哪里来的,我将感谢你的帮助!
发布于 2016-03-17 22:47:05
问题是,您没有使用所有操作修改text;您是在docs上工作。
使用text中的简单示例运行您的代码,
text <- "I am going to school!"
docs <- Corpus(VectorSource(text))
toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\\|")
docs <- tm_map(docs, content_transformer(tolower))
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, removePunctuation)
docs <- tm_map(docs, stripWhitespace)
docs <- tm_map(docs, stemDocument)然后打印docs的内容,您所做的所有修改都会生效
print(unlist(docs)[1])
content.content
"i am go to school" 尽管请注意,由于词干分析器,"go“被转换为”go“。
然后,您可以像在原始代码中一样计算字符数,
x=strsplit(as.character(unlist(docs)[1]), "")
freqtab = table(x[[1]])
print(freqtab)
a c g h i l m o s t
4 1 1 1 1 1 1 1 4 1 1希望能有所帮助。
https://stackoverflow.com/questions/36063181
复制相似问题