tm包主要用来处理文本挖掘,对于文本挖掘,往往涉及语料库(corpus)
1.构建语料库的函数有VCorpus()和PCorpus()
VCorpus()创建不稳定语料库
PCorpus()创建永久性语料库,不易毁坏,可以指向外部的语料库
用法:
VCorpus(x,
readerControl=list(reader=x$Defaultreader,language = “en”))
x是一个source对象,用来构建语料库的,R中有几个预先定义的函数可以将文本处理成source对象:DirSource,VectorSource,DataframeSource
readerControl是一个列表,用以指导输入文件格式和语言
txt <- system.file("texts","txt",package = "tm")
ovid <- VCorpus(DirSource(txt,encoding = "UTF-8"),
readerControl = list(language = "lat"))
2.数据输出
writeCorpus()将语料库输出,永久保存
3.探索语料库
一般使用print()函数,tm包中用inspect()函数
print(ovid[1:2])
inspect(ovid[1:2]) # 返回内容更充实
获得指定语料库可以通过[]或者标识符
meta(ovid[[2]],"id")
identical(ovid[[2]],ovid[["ovid_2.txt"]])
将文件转换为字符串 as.character()
writeLines(as.character(ovid[[2]]))
lapply(ovid[1:2],as.character)
4.修改
tm包中想要修改语料库中的文件,通过tm_map()对语料库中的每个元素进行修正
tm_map(corpus,removeWords,stopwords(“fuck”))
# 消除额外的空格
reuters <- tm_map(ovid,stripWhitespace)
5.筛选
相当于查询,删选出指定条件的文件。用tm_filter函数
# 从语料库中找出含有company的文件
data("crude")
attr(searchFullText,"doclevel")
tm_filter(crude,FUN=searchpaths,"company")
6.Term-Document Matrices
dtm <- DocumentTermMatrix(ovid)
inspect(dtm[1:5,1:5]) # 生成一个TDM
找出出现次数超过5的词
findFreqTerms(dtm,5)
找出和”qui”词相关系数在0.8以上的单词
findAssocs(dtm,”qui”,0.8)
TDM矩阵往往是比较稀疏的,可以去掉某些出现频次太低的词
inspect(removeSparseTerms(dtm,0.4))
7.字典(dictionary)
字典其实是字符串的集合,可以用Dictionary函数来建立一个字典
inspect(DocumentTermMatrix(ovid,
list(dictionary = c(“price”,”crude”,”oil”))))
Dictionary(c(“some”,”tokens”))