查看原文
其他

R语言怎么给中文分词?

2017-05-16 王亨 R语言中文社区

作者:王亨 ,R语言中文社区专栏作者,跟着菜鸟一起一步步学习R语言,争做R语言高手。

个人公众号:跟着菜鸟一起学R语言(微信ID:learn_R) 


1.准备包


    ①rJava包

    ② Rwordseg包

    ③java环境

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


   Rwordseg包依赖于rJava包。由于Rwordseg包并没有托管在CRAN上面,而是在R-Forge上面,因此在在R软件上面直接输入install.packages("Rwordseg")会提示错误。


因此,我们需要在软件菜单栏点击 程序包

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


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


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


  1. library(Rwordseg)  

  2. library(rJava)  

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

  4. segmentCN(text)  


分词结果为:


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


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


  1. insertWords(strwords,  

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

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

  4.     numfreq = rep(1000, length(strwords)), save = FALSE)  


     这就是insertWords函数,其中save参数是指 是否把这个词保存到词典里面。


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

   

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


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


结果为:


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


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


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


这次我们在看看结果。


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

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


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

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


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

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


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

  2. segmentCN(text2)  


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


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

uninstallDict("movie")  


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

  2. segmentCN(text2)  


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

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


注:本博客及其相关资源也会发布在《跟着菜鸟一起学R语言》微信公众平台一起发布


转载请声明原文链接 http://blog.csdn.net/wzgl__wh/article/details/52528925


号外:

5月23日张丹老师在Hellobi Live直播授课,只要19.99喔。数据老手教你如何用R语言开始量化投资

参加方式:扫码参团 | 阅读原文


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存