热线电话:13121318867

登录
首页精彩阅读使用R语言进行中文分词
使用R语言进行中文分词
2017-07-10
收藏

使用R语言进行中文分词

1.准备包

①rJava包

② Rwordseg包

③Java环境

④搜狗词库(此为扩展词库)

Rwordseg包依赖于rJava包。由于Rwordseg包并没有托管在CRAN上面,而是在R-Forge上面,因此在在R软件上面直接输入install.packages("Rwordseg")会提示错误。因此,我们需要在软件菜单栏点击 程序包

选择软件库 在选择R-Forge 即可,然后输入install.packages("Rwordseg")应该就OK了。或者输入下面代码:

[plain]view plaincopy

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

一切准备工作做好了我们就可以进行分词了。首先加载我们所需要的包。然后对“ 我非常喜欢《跟着菜鸟一起学R语言》这个微信公众号 ”这句话进行分词。

[plain]view plaincopy

library(Rwordseg) 

library(rJava) 

text<-"我非常喜欢《跟着菜鸟一起学R语言》这个微信公众号" 

segmentCN(text)  

分词结果为:

[1] "我"    "非常"  "喜欢"  "跟"    "着"    "菜"    "鸟"    "一起"  "学"    "R语言"     "这个"  "微信"  "公众"  "号"   

我们可以发现这个分词有问题,比如说 “菜鸟”和“公众号”是一个词,但这里却分开了。我们该怎么处理呢?Rwordseg包里面提供了一个insertWords函数,具体如下

[plain]view plaincopy

insertWords(strwords,  

    analyzer = get("Analyzer", envir = .RwordsegEnv),  

    strtype = rep("userDefine", length(strwords)),  

    numfreq = rep(1000, length(strwords)), save = FALSE) 
     这就是insertWords函数,其中save参数是指 是否把这个词保存到词典里面。

[plain]view plaincopy

insertWords(c("菜鸟","公众号"),save=TRUE)   

     这样的话,菜鸟 和 公众号 就成两个词了。再次运行

[plain]view plaincopy

text<-"我非常喜欢《跟着菜鸟一起学R语言》这个微信公众号" 

segmentCN(text)  

 结果为

[1] "我"     "非常"   "喜欢"   "跟"     "着"     "菜鸟"   "一起"   "学"     "R语言"  "这个"   "微信"   "公众号"

但是如果我们不需要“菜鸟”这个分词了怎么办,这个时候我们就可以使用deleteWords()函数来从词典中删除这个分词。

[plain]view plaincopy

deleteWords(c("菜鸟","公众号"),save=TRUE)  

    这次我们在看看结果。

[1] "我"    "非常"  "喜欢"  "跟"    "着"    "菜"    "鸟"    "一起"  "学"    "R语言" "这个"  "微信"  "公众"  "号"  

接下来我们使用一下搜狗的扩展词库,由于电影跟新速度较快,我这里下载了搜狗的热门电影大全词库,如何加载使用搜狗词库,点击可以查看我的另一篇博客。

[plain]view plaincopy

installDict("热门电影大全.scel","movie")   

59391 words were loaded! ... New dictionary 'movie' was installed!

我把下载的词库放在了当前的工作目录下面了,所以直接输入词典名,没有添加地址。加载了该词典。如果出现上面的句子则表示这个词典加载成功了,我们命名为movie。

现在我们来测试一下面这个句子: 你喜欢看最后的巫师猎人吗

[plain]view plaincopy

text2<-"你喜欢看最后的巫师猎人吗" 

segmentCN(text2)  

 "你"             "喜欢"           "看"             "最后的巫师猎人" "吗" 

可以看到“最后的巫师猎人”是一个词,如何我们把movie这个词典删除点会怎么样呢?

[plain]view plaincopy

uninstallDict("movie") 

text2<-"你喜欢看最后的巫师猎人吗" 

segmentCN(text2)  

[1] "你"   "喜欢" "看"   "最后" "的"   "巫师" "猎人" "吗" 

其实加载搜狗词典的话我们就不用自己定义词典,就比如前面我们往词典里面插入“菜鸟”和“微信公众号”一样。这样可以很方便的分词,也省去了自己新建词典的时间。

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询