中文及英文的文本挖掘——R语言
所需要的包tm(text mining) rJava,Snowball,zoo,XML,slam,Rz, RWeka,matlab
1 文本挖掘概要
文本挖掘是从大量的文本数据中抽取隐含的,求和的,可能有用的信息。 通过文本挖掘实现
?Associate:关联分析,根据同时出现的频率找出关联规则 ?Cluster:将相似的文档(词条)进行聚类 ?Categorize:将文本划分到预先定义的类别里
?文档自动摘要:利用计算机自动地从原始文档中提取全面准确地反映该文档中心内容的简单连贯描述性短文。
文本挖掘的运用主要有如下几方面 ? 智能信息检索
同义词,简称词,异形词,同音字、赘字移除 ? 网络内容安全
内容监控 内容过滤 ? 内容管理
自动分类 检测和追踪 ? 市场监测
口碑监测 竞争情报系统 市场分析
2 英文文本挖掘实例
实现多个英文文档的聚类分析
2.1 文本预处理 2.1.1 读取文本内容
#取得tm内部文件texts/crude/下的文件目录。
>library(\> vignette(\获取相关帮助文档的内容,pdf格式
reut<-system.file(\
# 用Corpus命令读取文本并生成语料库文件由于要读取的是xml文件,所以需要xml包 reuters <- Corpus(DirSource(reut), readerControl = list(reader = readReut21578XML)) # DirSource指示的是文件夹路径,如果是单个向量要设为语料库则VectorSource(向量名) readerControl不用设置
查看前两个语料变量内容
另外可以从本地文件中读取用户txt文件 > inputtest<-read.csv(file.choose())
2.1.2 文本清理
对于xml格式的文档用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,转换小写,去除常用词汇、合并异形同意词汇,如此才能得到类似txt文件的效果 需要用到的包SnowballC
reuters <- tm_map(reuters, PlainTextDocument)#去除标签 reuters <- tm_map(reuters, stripWhitespace)#去多余空白 reuters <- tm_map(reuters, tolower)#转换小写
reuters <- tm_map(reuters, removeWords, stopwords(\tm_map(reuters, stemDocument)
2.1.3 查找含有特定语句的文档
例如找出文档编号为237而且包含句子INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE的文档。
> query <- \== '237' & heading == 'INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE'\
> tm_filter(reuters, FUN = sFilter, query)
找到
由于语料库已经将大小写转换以及将介词类删除所以对应的语句只是特有单词的组合。
2.1.4 生成词频矩阵并查看内容
dtm <- DocumentTermMatrix(reuters)
查看某部分的词频内容个数,其中dtm行提示哪个文件,列表示词语。 > inspect(dtm[10:15,110:120])
A document-term matrix (6 documents, 11 terms)
Non-/sparse entries: 6/60 Sparsity : 91% Maximal term length: 9
Weighting : term frequency (tf)
Terms
Docs activity. add added added. address addressed adherence adhering advantage advisers agency
[1,] 0 0 0 0 0 0 1 1 0 0 2
[2,] 0 0 0 0 0 0 0 0 0 0 0 [3,] 0 0 0 0 0 0 0 0 0 0 1 [4,] 0 0 0 0 0 0 0 1 0 0 2 [5,] 0 0 0 0 0 0 0 0 0 0 0 [6,] 0 0 0 0 0 0 0 0 0 0 0
2.1.5 查看含有特定词的文档
若要考察多个文档特定词汇的出现频率或以手工生成字典,并将其作为生成阵的参数 > inspect(tdm[c(\
A term-document matrix (2 terms, 4 documents)
Non-/sparse entries: 6/2 Sparsity : 25% Maximal term length: 5
Weighting : term frequency (tf)
Docs
Terms 127 144 191 194 price 2 1 2 2 texas 1 0 0 2
> inspect(DocumentTermMatrix(reuters,
+ list(dictionary = c(\\
A document-term matrix (20 documents, 3 terms)
Non-/sparse entries: 41/19 Sparsity : 32% Maximal term length: 6
Weighting : term frequency (tf)
Terms
Docs crude oil prices 127 3 5 4 144 0 11 4 191 3 2 0 194 4 1 0 211 0 2 0 236 1 7 2 237 0 3 0
2.1.6 元数据操作(词元素)
2.1.6.1 查看词条出现次数大于某个具体值的词
findFreqTerms(dtm,5)#查看出现频大于等于5的词