R语言学习系列12-文本分词
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12. 文本分词
文本分词,就是对文本进行合理的分割,从而可以比较快捷地获取关键信息。
例如,电商平台要想了解更多消费者的心声,就需要对消费者的文本评论数据进行内在信息的数据挖掘分析,而文本分词是文本挖掘的重要步骤。
R语言中,对中文分词支持较好的包有RWordseg包和jiebaR包。
一、配置Java环境
步骤1. 下载JDK安装包
/technetwork/java/javase/downloads/index.html
点Java Download图标进入下载界面(Java SE Development Kit);点Accept License Agreement,接受许可协议,选择对应系统的版本下载,比如Windows x64
步骤2. 安装JDK
安装路径(可修改),比如D:\Program Files\Java\jdk1.8.0_101
特别注意:第2次出现选择路径时,是选择jre的安装路径,一定不要和前面jdk同一个路径,建议也在放在Java目录下,单放在jre 文件夹,比如D:\Program Files\Java\jre1.8.0_101 否则将有问题。
步骤3. 配置环境变量
右键计算机->属性->高级系统设置->环境变量,在“环境变量”窗口“系统变量”区域操作:
(1) 【新建…】,变量名输入:JAVA_HOME
变量值输入JDK安装路径:D:\Program Files\Java\jdk1.8.0_101
【确定】
(2) 双击Path,在变量值框末尾加上
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 【确定】
(3) 【新建…】,变量名输入:CLASSPATH 变量值输入:
%JAVA_HOME%lib\dt.jar;%JAVA_HOME%\lib\tools.jar
【确定】
步骤4. 测试是否配置成功
运行->cmd, 回车,输入java –version 回车,显示版本号等信息;
输入javac –version 回车,也显示版本号,如下图所示,则表示配置成功
二、RWordseg包
1. 先安装rJava包(正常命令安装即可)
2. 安装Rwordseg包
命令安装:
install.packages("Rwordseg",repos="http://R-Forge.R-proje
")
注意:该网址很可能不能正常打开。
建议采用本地安装:
下载Rwordseg.zip包,R操作界面,程序包->Install Package(s) from local files…, 找到Rwordseg.zip文件,确定安装即可,测试下图则表示安装成功:
3. Rwordseg包常用函数
insertWords(x, save=TRUE)
向词库导入新词汇x,save=TRUE保存新词汇,下次启动仍可用;
deleteWords(x)——从词库中删除词汇x
getOption("isNameRecognition")
查看人名识别功能的状态,结果为TRUE表明能够识别;
segment.options("isNameRecognition"=TRUE)
设置人名识别功能的状态;
installDict(dictpath=词典路径, dictname="自定义词典名称", dicttype=c("text","scel"), load=TRUE)
添加用户自定义的词典;dicttype指定安装词典的类型,text为普通文本格式,scel为搜狗细胞词库;load设置安装后是否自动加载到内存,默认为TRUE;
listDict()——查看已安装词典;
uninstallDict(removedict=listDict()$Name, remove=TRUE)卸载用户自定义的词典,removedict指定要卸载的词典名称;remove指定是否立即清除词典中的词语;
segmentCN(x, nature=TRUE, nosymbol=TRUE)
实现中文分词,nature设置是否输出词性,默认不输出;nosymbol 默认为TURE,表示不输出标点,只有汉字、英文、数字。
注意:目前的词性识别和标点识别容易出错,只作为参考。
4. 实例
> library(rJava)
> library(Rwordseg)
> segmentCN("雷克萨斯品牌") #导入词汇前的分词
[1] "雷" "克" "萨" "斯" "品牌"
> insertWords(c("雷克萨斯")) #导入词汇
> segmentCN("雷克萨斯品牌") #导入词汇后的分词
[1] "雷克萨斯" "品牌"
> deleteWords(c("雷克萨斯")) #删除词汇
> installDict(dictpath = "E:/办公资料/R语言/文本分词包/汽车词汇大全.scel",dictname = "qiche") #安装自定义的词典2388 words were loaded! ... New dictionary 'qiche' was installed!
> listDict() #显示已安装词典
Name Type Des
1 qiche 汽车官方推荐,词库来源于网友上传!
Path
1 d:/Program Files/R/R-3.3.1/library/Rwordseg/dict/qi che.dic
> segmentCN("雷克萨斯品牌",nature=TRUE)
qiche n
"雷克萨斯" "品牌"
> uninstallDict(removedict="qiche") #卸载词典
2388 words were removed! ... The dictionary 'qiche' wa
三、jiebaR包
jiebaR包支持最大概率法、隐马尔可夫模型、索引模型、混合模
型4种分词模式,还有词性标注、关键词提取、文本Simhash相似度
比较等功能。
1. 先用函数worker()初始化分词引擎:
worker(type = "mix", dict = DICTPATH, hmm = HMMPATH, user = USERPATH, idf = IDFPATH, stop_word = STOPPATH, write = T, qmax = 20, topn = 5, encoding = "UTF-8", detect = T, symbol = F, lines = 1e+05, output = NULL, bylines = F, user_weight = "max")其中,type指定分词引擎类型:mix(混合模型)、mp(支持最大概
率法)、hmm(隐马尔可夫模型)、query(索引模型)、tag(词性
标注)、simhash(文本simhash相似度比较)、keywords(关键词提