R语言︱文本挖掘之中文分词包——Rwordseg包



笔者寄语:与前面的RsowballC分词不同的地方在于这是一个中文的分词包,简单易懂,分词是一个非常重要的步骤,可以通过一些字典,进行特定分词。大致分析步骤如下:


数据导入——选择分词字典——分词


但是下载步骤比较繁琐,可参考之前的博客: R语言·文本挖掘︱Rwordseg/rJava两包的安装(安到吐血)



一、数据导入、函数测试


本次使用代码与案例是基于北门吹风博客而来。


#导入rJava 和Rwordseg

library(rJava)
library(Rwordseg)

#测试rJava 和Rwordseg是否安装好
teststring1 <- "我爱R语言,我爱文本挖掘"
segmentCN(teststring1)                  ##Rwordseg中的函数,中文分词

#观察分词1000次花的时间
system.time(for(i in 1:1000) segmentCN(teststring1))
#segmentCN的详细解释
?segmentCN


二、分词词典的使用


笔者认为选择分词词典对于后续的分析极为重要,词典库是之后分词的匹配库,这个词库越强大,分词的效果就越好。网上大多使用的是搜狗分词包。


1、从搜狗词库下载分词词典

##用搜狗词库的时候 一定要在官网上下载  ~.scel 文件,
##搜狗下载官网:http://pinyin.sogou.com/dict/cate/index/101
#不能直接将 下载的 ~.txt改为~.scel
installDict("F:/R/文本挖掘分词词库/自然语言处理及计算语言学相关术语.scel","computer",dicttype = "scel")

2、查看词典的函数

加载词典函数为installDict,下面有一些简单的介绍,其中的词类名称是自定义的,每个词类名称需要不一样。


#查看词典
#installDict函数介绍
# installDict(dictpath, dictname,dicttype = c("text", "scel"), load = TRUE)
#installDict("工作目录","词类名称",dicttype = c("text", "scel"), load = TRUE)
listDict()
#uninstallDict() 删除安装的词典
uninstallDict()
#listDict() 查看剩余的词典
listDict()

 deleteWords( )删词 

分别有查看、安装、删除的函数。

3、自定义词典


可以自己设定哪些关键词需要额外注意区分开来,也可以删除已经加入词库的一些关键词,

对于一些专业领域,专业名词较多的案例,很推荐。


#自定义词典
#手动添加或删除词汇,仅仅只在内存中临时添加,未记录下来
segmentCN("画角声断谯门")
insertWords("谯门")   #让某词组放入内存
segmentCN("画角声断谯门")

deleteWords(c("谯门","画角"))   #删除某词组
segmentCN("画角声断谯门")

#使用save参数,把操作记录下来,下回启动能直接用
insertWords(c("谯门","画角"),save=TRUE)
segmentCN("画角声断谯门")


三、分词

1、Rwordseg分词包核心函数segmentCN


Rwordseg分词包主要函数是segmentCN,这个函数是核心,笔者详解一下这个函数,代码如下:


#segmentCN函数解释
segmentCN(strwords,
          analyzer = get("Analyzer", envir = .RwordsegEnv),
          nature = FALSE, nosymbol = TRUE,
          returnType = c("vector", "tm"), isfast = FALSE,
          outfile = "", blocklines = 1000)

#strwords:中文句子
#analyzer:分析的java对象
#nature:是否识别词组的词性(动词、形容词)
#nosymbol:是否保留句子符号
#returnType:默认是一个字符串,也可以保存成其他的样式,比如tm格式,以供tm包分析
#isfast:“否”代表划分成一个个字符,“是”代表保留句子,只是断句
#outfile:如果输入是一个文件,文件的路径是啥
#blocklines:一行的最大读入字符数

2、关于人名的分词


#参数isNameRecognition  可用来人的名字识别,
getOption("isNameRecognition") #默认是不进行人名识别,输出false
segmentCN("梅超风不是是桃花岛岛主")
segment.options(isNameRecognition = TRUE)
getOption("isNameRecognition")
segmentCN("梅超风是桃花岛岛主")


R语言︱文本挖掘之中文分词包——Rwordseg包_第1张图片



你可能感兴趣的:(r,分词,文本挖掘,Rwordseg,分词词典)