前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R文本挖掘-中文分词Rwordseg

R文本挖掘-中文分词Rwordseg

作者头像
Erin
发布2018-01-09 11:02:53
1.6K0
发布2018-01-09 11:02:53
举报
文章被收录于专栏:大数据风控

我们的数据分析工作,不仅仅有对数据的分析,还有对文字资料整合的统计分析。在进行词频统计之前,有一项必须要做的工作就是中文的分词。

语料库的处理

语料库

语料库是我们要分析的所有文档的集合

中文分词

将一个汉字序列切分成一个一个单独的词

停用词

数据处理的时候,自动过滤掉某些字或词,包括泛滥的词,例如web,

网站等,又如语气助词、副词、介词、连接词等,例如的,地,得。

R 中的 API(应用程序的接口)

tm包

安装 install.packages(“tm”)

读入语料库:

Corpus(x,readerControl)

x 语料库的数据源

  • DirSource 目录数据源
  • VectorSource 向量数据源

readerControl 语料库的读取控制器,是一个list

  • reader 文本为reader,pdf为readPDF等
  • language 文本语言,默认为”en”

语料库处理与中文分词

语料库处理函数:

tm_map(x,FUN)

x 语料库

FUN 处理函数

  • tolower 转成小写
  • stripWhitespace 移除空白字符
  • plainTextDocument处理HTML或者XML文档
  • segmentCN 中文分词函数,来自Rwordseg包

Rwordseg包

安装方法:

install.packages(“rJava”)

install.packages(“Rwordseg”,repos=”http://R-Forge.R-project.org”)

在安装Rwordseg包时,大家可能会遇到各种各样的问题,我专门写了一篇关于Rwordseg包的安装教程,供大家参考:

https://cloud.tencent.com/developer/article/1016392

分词方法:

segmentCN(strwords,outfile=”“,returnType=c(“vector”,”tm”))

  • strwords 需要分词的字符串或者文件路径 outfile
  • 分词后输出的路径,默认为输入文件的同级目录
  • returnType 返回值类型,默认是数组,可以选择为tm包的语料库类型。

安装字典来提高分词的准确性

安装/卸载 字典

installDict(dictpath,dictname)

uninstallDict(dictname)

  • dictpath 字典文件路径
  • dictname 字典的名字

字典下载:http://pinyin.sougou.com/dict/

显示字典列表

listDict()

中文分词的代码示例:

代码语言:javascript
复制
#install.packages("tm");
#install.packages("tmcn", repos="http://R-Forge.R-project.org");

library(tm)
library(tmcn)

#按目录读入语料库
C000007 <- Corpus(
  DirSource(
    'SogouC.mini/Sample/C000007'
  ), 
  readerControl = list(language="UTF-8")
)

stopwordsCN()

library(Rwordseg)

C000007 <- tm_map(C000007, stripWhitespace)
C000007 = tm_map(C000007, content_transformer(segmentCN), returnType='tm')
C000007 <- tm_map(C000007, content_transformer(function(x) iconv(x, from="UTF8", to="GB2312", sub="byte")))

control = list(
  wordLengths = c(4, 8),
  stopwords = stopwordsCN()
)
dd = stopwordsCN()

fix(dd)
#转成向量矩阵
mt <- TermDocumentMatrix(C000007, control=control)
mt$dimnames
dmt <- as.matrix(mt)
fix(dmt)

#install.packages("wordcloud")
library(wordcloud)
v <- sort(rowSums(dmt), decreasing = TRUE)
d <- data.frame(word = names(v), freq = v)
wordcloud(
  d$word, 
  d$freq, 
  min.freq=10, 
  random.order=F, 
  colors=rainbow(length(row.names(dmt)))
)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年07月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语料库的处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档