查看原文
其他

R语言文本分词之——Rwordseg包

柯少爷 大数据技术派 2022-10-15

Rwordseg是一个R环境下的中文分词工具,使用 rJava 调用 Java 分词工具 Ansj,所以需要安装并且配置java环境(也就是jdk)。Ansj 也是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法, 采用隐马尔科夫模型(Hidden Markov Model, HMM)。这个包的作者孙健重写了一个Java版本, 并且全部开源,使得 Ansi 可用于人名识别、地名识别、组织机构名识别、多级词性标注、 关键词提取、指纹提取等领域,支持行业词典、 用户自定义词典。So,这个包很强大。


安装Rwordseg包

这个包的安装方法分两步如下:

1、安装rjava包

  • 去java官网下载jdk,安装;

  • 新建系统变量JAVA_HOME;变量值为jdk的路径比如路径:D:\Program Files\Java\jdk1.7.0_79;

  • 在PATH变量后加入:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;末尾最好有分号,防止下次加时漏掉分号,养成好习惯;

  • 在命令行窗口输入javac,会出现相关目录表示配置成功。

  • R命令install.packages('rjava'),应该就能安装成功了

2、安装Rwordseg包

install.packages('Rwordseg')
           这个包不好下载,上面这句命令如果不行,可以把它下载到本地,放到R安装目录(比如:D:\Program Files\R\library)下面,反正就是library文件夹下面,然后加载即可。
           此处下载                


分词用法

           library(rjava) #导入包
           library(Rwordseg)
           test <- '革命尚未成功,同志仍需努力!'
           segmentCN(test)
           [1] "革命" "尚未" "成功" "同志" "仍"   "需"  "努力"
           
加入自定义词语
           比如,把“仍需”这两个字分成一个词,而不是两个字,可以加入自定义词语:
           > insertWords('仍需')
           > segmentCN(test)
           [1] "革命" "尚未" "成功" "同志" "仍需" "努力"
           那么,如果下次又想把“仍需”分成两个词呢,可以把加入词库的词删除,以下命令:
           > deleteWords('仍需')
           > segmentCN(test)
           [1] "革命" "尚未" "成功" "同志" "仍"   "需"  "努力"
           可以看出从词库中把“仍需”删除后,“仍需”又被当作两个词了。                


安装词典

 (1)、installDict(dictpath, dictname,dicttype = c("text", "scel"), load = TRUE)
dictname 是自定义词典的名称(英文);
dicttype 默认是txt;
load 表示安装后是否自动加载到内存,默认是TRUE;
(2)、listDict() 显示安装的词典;
uninstallDict() 删除安装的词典;
(3)、如果这是在内存中临时添加或删除词汇,可以使用insertWord()和deleteWord()函数;
       

下面对朱自清的《匆匆》画词云进行分词处理

《匆匆》原文         1、读入文本数据
path <- 'C:\\Users\\26015\\Desktop\\匆匆.txt' #路径在桌面
 dat <- readLines(path)
2、分词            library(Rwordseg)
txt <- segmentCN(dat)            
           显然,朱自清这是个人名,被分成了三个字,我们需要加入自定义词:      
insertWords('朱自清')
txt <- segmentCN(dat)        


点击【阅读原文】,更多精彩!

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

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