我对编程非常陌生,现在正在我的ResMA中开始学习R。
我现在必须做一些非常简单的事情,而且我似乎在某些方面失败了。我只需要计算一个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)
好吧,很明显,这里的文档与那里的x完全不同,但是当我尝试反之亦然时,它仍然无效。
我只需要这样做: 我要去上学了!---&gt;我要去学校----&gt; i- 2 a-1 m-1 ....
我无法解决问题所在,我将非常感谢您的帮助!
答案 0 :(得分:0)
问题是您没有在所有操作中修改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"
虽然注意到因为词干,&#34;去&#34;转变为&#34;去&#34;。
然后您可以像原始代码一样计算字符数
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
希望它有所帮助。