crackcell's dustbin home
首页 > R文本挖掘包tm简介 > 正文

R文本挖掘包tm简介

/* -*- author: Tan Menglong; email: tanmenglong_at_gmail; twitter/weibo: @crackcell; 转载请注明出处 -*- */

1 前言

tm是R里面一个文本挖掘的库,包含了常用了诸如字符串转换、分token等功能。

2 常用操作

2.1 语料库

2.1.1 加载库

library(tm)

2.1.2 加载数据

使用tm之前,首先需要将原始数据转换成语料库(Corpus)。对于简单的数据可以是用VectorSource:

raw_doc <- c("hello world from tm")
corpus <- Corpus(VectorSource(raw_doc))

2.1.3 查看语料库

tm提供inspect命令来查看语料库。此外,print和summary也可用,只是它们不输出语料的原始内容。

inspect(corpus)

2.1.4 保存语料库

writeCorpus(corpus)

语料库中的每一份语料会以txt形式被保存到磁盘。

2.1.5 压缩连续空白字符

将连续空白字符压缩到单个

stripWhitespace(x)

2.1.6 map操作

tm_map,对文档内容应用转换函数。转换函数列表可以通过getTransformations()获取。

tm_map(x, FUN, ..., useMeta = FALSE, lazy = FALSE)
  • map的一些操作
    • 转换成纯文本文件(Plain Text Document)
      比如,语料是以XML格式读入的,可以将它转换成纯文本
      corpus_txt <- tm_map(corpus, as.PlainTextDocument)
      
    • 转换成小写
      corpus_txt <- tm_map(corpus, tolower)
      
    • 转换成大写
      corpus_txt <- tm_map(corpus, toupper)
      
    • 去除停用词
      corpus_txt <- tm_map(corpus, removeWords, stopwords("english"))
      

2.1.7 reduce操作

tm_reduce,将多个转换函数的输出合并成一个。

tm_reduce(x, tmFuns, ...)
  • tmFuns:一个转换函数list

例子:

data(crude)
crude[[1]]
skipWords <- function(x) removeWords(x, c("it", "the"))
funs <- list(tolower, removePunctuation, skipWords, stripWhitespace)
tm_map(crude, FUN = tm_reduce, tmFuns = funs)[[1]]

2.1.8 查询

  • 复杂查询
    query <- "id == '237' & heading == 'INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE'"
    tm_filter(corpus, FUN = sFilter, query)
    

    也支持全文检索。支持正则表达式。

    tm_filter(corpus, pattern = "company")
    
  • 全文检索
    格式:
    searchFullText(x, pattern)
    

    若匹配,返回TRUE,否则FALSE。

2.1.9 获取token

MC_tokenizer(x)

或者

scan_tokenizer(x)

2.2 元数据

元数据是语料的标签,分为语料库(corpus)级和文档级。语料库级tag只有一个,例如,这个语料库的创建者。文档级tag是每个文档都有,例如,这个文档的分类结果。

2.2.1 增加/修改语料库级tag

meta(corpus, tag = "test", type = "corpus") <- "test meta"    

2.2.2 查看语料库级tag

meta(corpus, type = "corpus")

2.2.3 增加/修改文档级tag

meta(corpus, tag = "test2") <- "test meta2" 

2.2.4 查看文档级tag

meta(corpus)    

2.2.5 Dublin Core

“DC(Dublin Core) 是数字图书馆中使用的一组简单的包括15个“核心元素”的元数据元素集合,主要用于描述数字对象、馆藏管理和元数据交换。”1。对应的,有专门的DublinCore方法用来操作DublinCore规定的属性。这里DublicCore属性只存在于每个单独的文档。

DublinCore(corpus[[1]], tag = "creator") <- "Menglong Tan"

2.3 Term/Doc矩阵

2.3.1 创建

  • Doc-Term矩阵
    生成第一个列向量为docid,其余列向量为term出现的数量
    dtm <- DocumentTermMatrix(corpus)
    
  • Term-Doc矩阵
    tdm <- TermDocumentMatrix(corpus)
    

2.3.2 按照词频查找

格式:

findFreqTerms(x, lowfreq = 0, highfreq = Inf)

例子:

findFreqTerms(dtm, 5)

2.3.3 按照相关度查找

格式:

findAssocs(x, term, corlimit)

2.3.4 删除稀疏Term

格式:

removeSparseTerms(x, sparse)

2.3.5 赋权

返回使用指定赋权算法赋权的新Term-Doc或Doc-Term矩阵

  • weightTf
    用词频给矩阵赋权
    weightTf(m)
    
  • weightTfIdf
    用词频+逆文档序给矩阵赋权
    weightTfIdf(m)
    

Footnotes:

Author: Menglong Tan <tanmenglong AT gmail DOT com>

Date: 2012-04-01 15:52:18 CST

HTML generated by org-mode 6.33x in emacs 23

分享到:

blog comments powered by Disqus

Modified theme and code from Tom Preston-Werner. Hosted by Baidu App Engine.