zoukankan      html  css  js  c++  java
  • R(八): R分词统计-老九门

           分析文本内容基本的步骤:提取文本中的词语 -> 统计词语频率 -> 词频属性可视化。词频:能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词云:让词语的频率属性可视化,更加直观清晰。文本下载地址(http://www.yuandn.com/booktxt/59797/#download 效果图是将老九门12章后面内容删除后结果

    目录:

    • 效果示例图
    • 分词包介绍及安装
    • 词云包介绍安装
    • 分词统计
    • 词云展现

     效果示例图:


    分词包介绍及安装:


    • R分词包:Rwordseg、rJava,rJava提供java的库,供Rwordseg调用。Rwordseg是一个R环境下的中文分词工具,引用了Ansj包,Ansj是一个开源的java中文分词工具,基于中科院的ictclas中文分词算法,采用隐马尔科夫模型(HMM),江湖传言,Rwordseg有三个很牛逼的地方一是分词准确,二是分词速度超快,三是可以导入自定义词库,甚至还可以导入搜狗输入法的细胞词库(sqel格式)
    • Rwordseg依赖包rJava,首先你必须确认你的系统中已经有可用的Java。 linux 系统下检查命令:java –version
    • centos下安装命令如下,注意安装的顺序,同时 Rwordseg 并未发布至CARN
    • 命令:     (进入R命令行)
    • R命令: install.packages("rJava")
    • R命令: install.packages("Rwordseg",repos="http://R-Forge.R-project.org")
    • Windows系统下安装命令,在windows系统的Rstudio 环境下未在线安装成功,从  https://r-forge.r-project.org/R/?group_id=1054 网站下载基于 windows 的安装包 (Rwordseg_0.2-1.zip),本地安装
    • 命令: install.packages("rJava")
    • 命令: install.packages("d:\Rwordseg_0.2-1.zip",repos = NULL,type = "source")

    词云包介绍安装:


    • 词云本身对于分析数据用处不大,但在当前这个看脸的时代,给领导汇报工作或做报告的时候,利用词云的可视化效果可以产生锦上添花的效应
    • R里面绘制词云的包有wordcloud,wordcloud2, 相比wordcloud,新的wordcloud2 能更有效的利用词与词的间隔来插入数据,可以根据图片或者文字来绘制定制化的词云
    • wordcloud2是基于wordcloud2.js封装的一个R包,使用HTML5的canvas绘制,浏览器的可视化具有动态和交互效果
    • wordcloud2 已发布至CARN,安装命令如下:
    • 命令: install.packages("wordcloud2")

    分词统计:


    • 下载 txt 文件,我是在windows Rstudio 完成分词清洗统计的工作,将清洗后的数据保存为 .rda 文件以便后续发布至 FastRWeb
    • 在研究过程中,发现人员未被识别,先普及一下自定义词典知识,代码示例及解释如下:
      > library(rJava)
      > library(Rwordseg)
      > 
      > str <- c("齐铁嘴趴着车窗,张大佛爷来到长沙火车站外面,二月红看热闹")
      > segmentCN(str)
       [1] ""     ""     ""     ""     ""     "车窗"   "张大"   "佛爷"   "来到"   "长沙"   "火车站"
      [12] "外面"   "二月红" "看热闹"
      >  
      >  #加载文件的方式增加词典未验证通过
      > installDict("d:\dict.txt","mydict",dicttype = "text")
      Error in installDict("d:\dict.txt", "mydict", dicttype = "text") : 
        Wrong path of the dic file!
      > segmentCN(str)
       [1] ""     ""     ""     ""     ""     "车窗"   "张大"   "佛爷"   "来到"   "长沙"   "火车站"
      [12] "外面"   "二月红" "看热闹"
      > 
      > #显示当前手动添加的词库
      > listDict()
      [1] Name Type Des  Path
      <0 行> (或0-长度的row.names)
      > 
      > #删除自定义词库
      > uninstallDict(removedict='mydict') 
      > 
      > #参数isNameRecognition  可用来人的名字识别,默认为false  
      > #查看函数 getOption("isNameRecognition")   
      > segment.options(isNameRecognition = TRUE)  
      > segmentCN(str) 
       [1] "齐铁嘴" ""     ""     "车窗"   "张大"   "佛爷"   "来到"   "长沙"   "火车站" "外面"   "二月红"
      [12] "看热闹"
      > 
      > #自定义词典,让某词组放入内存  
      > insertWords(c("张大佛爷","二月红"))   
      > segmentCN(str) 
       [1] "齐铁嘴"   ""       ""       "车窗"     "张大佛爷" "来到"     "长沙"     "火车站"   "外面"    
      [10] "二月红"   "看热闹"  
      > 
      > #删除词典
      > deleteWords(c("张大佛爷","二月红"))
      View Code
    • 分词代码及解释如下:
      #加载分词工具包
      library(rJava)
      library(Rwordseg)
      
      #自定义分词,启用名字识别
      segment.options(isNameRecognition = TRUE)
      insertWords(c("佛爷","张启山","二爷","二月红","八爷","九爷"))
      
      #参数returnType表示返回的分词格式是按空格间隔的格式
      #执行完成后,会自动在相同目录生成一个"待分析文件名. .segment.txt"的文本文件
      text=segmentCN("d:\9th.txt",returnType = "tm")
      
      #读入分词文件,它是一个长字符
      text1=readLines("d:\9th.segment.txt",encoding = "UTF-8")
      
      #word是一个长list
      #正则表达式:\s表示 空格,回车,换行等空白符
      #word1 向量
      word = lapply(X = text1, FUN = strsplit, "\s")
      word1=unlist(word)
      
      #统计词频
      df=table(word1)
      df=sort(df,decreasing = T)
      
      #把词汇词频存入数据框
      df1 = data.frame(word = names(df), freq = df)
      
      # 过滤掉1个字和词频小于10的记录  
      d <- subset(df1,nchar(as.character(df1$word)) >1 & df1$freq >= 10)
      
      # 输出结果,将结果保存为.rda文件
      save(d,file = "d:\9th.rda")
      View Code

    词云展现: 


    •  worldcloud2提供两个基本的函数:wordcloud2 和 letterCloud
      1. wordcloud2 : 提供基本的词云功能
      2. etterCloud : 使用选定的词绘制词云
    • 利用上一步清除的数据,显示可视化图云,示例代码如下, 效果与上面的示意图对应
      #加载包和清洗后的数据
      library(wordcloud2)
      data <- load("d:\9th.rda")
      
      #默认样式展视数据
      wordcloud2(d,shape = "star")
      
      #个性化背景和颜色
      wordcloud2(d, color = "random-light", backgroundColor = "grey")
      
      
      #自定义字符模式
      letterCloud(d,word = "B", color = "random-light",
                  backgroundColor = "black",wordSize = 0.3)
      
      #自定义图片模式
      wordcloud2(d, figPath='d:\ma.png') 
      View Code
    •  代码中 d:\ma.png 图片样式如下,你可选择不同图片绘出不同效果,下图是随便从网上截的,仅作演示用

  • 相关阅读:
    babel
    >/dev/null
    write to file
    fortran 77 example
    mix c with fortran
    automake
    Rockie's Android Porting Guide(4)——Add SD card to your system
    android平台初步分析
    Rockie's Android Porting Guide(4)——Add SD card to your system
    Android(1.5) 开机图片/文字/动画 修改
  • 原文地址:https://www.cnblogs.com/tgzhu/p/5783646.html
Copyright © 2011-2022 走看看