您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > R语言学习系列12-文本分词
12.文本分词文本分词,就是对文本进行合理的分割,从而可以比较快捷地获取关键信息。例如,电商平台要想了解更多消费者的心声,就需要对消费者的文本评论数据进行内在信息的数据挖掘分析,而文本分词是文本挖掘的重要步骤。R语言中,对中文分词支持较好的包有RWordseg包和jiebaR包。一、配置Java环境步骤1.下载JDK安装包点JavaDownload图标进入下载界面(JavaSEDevelopmentKit);点AcceptLicenseAgreement,接受许可协议,选择对应系统的版本下载,比如Windowsx64步骤2.安装JDK安装路径(可修改),比如D:\ProgramFiles\Java\jdk1.8.0_101特别注意:第2次出现选择路径时,是选择jre的安装路径,一定不要和前面jdk同一个路径,建议也在放在Java目录下,单放在jre文件夹,比如D:\ProgramFiles\Java\jre1.8.0_101否则将有问题。步骤3.配置环境变量右键计算机-属性-高级系统设置-环境变量,在“环境变量”窗口“系统变量”区域操作:(1)【新建…】,变量名输入:JAVA_HOME变量值输入JDK安装路径:D:\ProgramFiles\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=)注意:该网址很可能不能正常打开。建议采用本地安装:下载Rwordseg.zip包,R操作界面,程序包-InstallPackage(s)fromlocalfiles…,找到Rwordseg.zip文件,确定安装即可,测试下图则表示安装成功:3.Rwordseg包常用函数insertWords(x,save=TRUE)向词库导入新词汇x,save=TRUE保存新词汇,下次启动仍可用;deleteWords(x)——从词库中删除词汇xgetOption(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)#安装自定义的词典2388wordswereloaded!...Newdictionary'qiche'wasinstalled!listDict()#显示已安装词典NameTypeDes1qiche汽车官方推荐,词库来源于网友上传!Path1d:/ProgramFiles/R/R-3.3.1/library/Rwordseg/dict/qiche.dicsegmentCN(雷克萨斯品牌,nature=TRUE)qichen雷克萨斯品牌uninstallDict(removedict=qiche)#卸载词典2388wordswereremoved!...Thedictionary'qiche'wasuninstalled!三、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(关键词提取);dict指定词库路径,默认为DICTPATH,可用于除hmm之外的分词引擎;hmm为隐马尔可夫模型的路径,默认为HMMPATH,可用于除mp之外的分词引擎;user为用户自定义词库;idf为逆文本频率指数路径,默认为IDFPATH,可用于simhash和keywords分词引擎;stop_word为停止词词库路径,默认为STOPPATH,可用于simhash、keywords、tagger、segment分词引擎;qmax为词的最大查询长度,默认为20,可用于query分词引擎;topn为关键词个数,默认为5,可用于simhash和keywords分词引擎;symbol指定输出结果是否保留符号,默认为FALSE。2.使用分词运算符=或函数segment(),进行分词segment(code,jiebar,mod=NULL)qseg=codeqseq[code]其中,code为中文句子或文本文档路径;jiebar为某一个jiebarR分词引擎;mod可改变默认的分词引擎,其值可为mix、hmm、query、full、level、mp;qseq默认的分词模式为mix,可通过qseg$type修改分词模式。library(jiebaR)mixseg=worker()#默认mix分词引擎mpseg=worker(type=mp)hmmseg=worker(type=hmm)word=人们都说桂林山水甲天下mixseg=word[1]人们都说桂林山水[5]甲天下hmmseg=word[1]人们都说桂林山水甲天[6]下segment(word,mixseg)#与前面运算符结果相同[1]人们都说桂林山水[5]甲天下qseg=word#用qseg进行分词[1]人们都说桂林山水[5]甲天下qseg[word][1]人们都说桂林山水[5]甲天下setwd(E:/办公资料/R语言/R语言学习系列/codes)segment(ex12_data.txt,mixseg)#对文件进行分词[1]./ex12_data.segment.2016-08-08_21_59_24.txtmixseg=ex12_data.txt[1]ex12_data.segment.2016-08-08_22_07_21.txt注:初始化分词引擎后,例如可用mixseg命令,输出其设置信息,可用$修改其参数,例如mixseg$encoding=unicode;有些参数初始化时设定无法修改,可通过mixseg$PrivateVarible查看。3.词性标注使用tag来进行分词和词性标注,词性标注使用混合模型分词,标注采用和ictclas兼容的标记法。word=人们都说桂林山水甲天下tagger=worker(tag)#初始化分词引擎type=“tag”tagger=wordndvns人们都说桂林山水l甲天下qseg$type=tag#将分词模式改为tagqseg[word]ndvns人们都说桂林山水l甲天下注:汉语文本词性标注对照表见附录。4.关键词提取和simhash计算需要将worker中的type参数设置成“keywords”或“simhash”,并使用topn指定关键词的个数。keys=worker(keywords,topn=1)keys=word10.6048桂林山水simhash=worker(simhash,topn=2)simhash=word$simhash[1]17867597785105042892$keyword10.604810.2631桂林山水甲天下主要参考文献:[1]张良均,谢佳标,杨坦,肖刚.R语言与数据挖掘.机械工业出版社,2016.附录:汉语文本词性标注标记对照表:#1.名词(1个一类,7个二类,5个三类)名词分为以下子类:n名词nr人名nr1汉语姓氏nr2汉语名字nrj日语人名nrf音译人名ns地名nsf音译地名nt机构团体名nz其它专名nl名词性惯用语ng名词性语素nw新词#2.时间词(1个一类,1个二类)t时间词tg时间词性语素#3.处所词(1个一类)s处所词#4.方位词(1个一类)f方位词#5.动词(1个一类,9个二类)v动词vd副动词vn名动词vshi动词“是”vyou动词“有”vf趋向动词vx形式动词vi不及物动词(内动词)vl动词性惯用语vg动词性语素#6.形容词(1个一类,4个二类)a形容词ad副形词an名形词ag形容词性语素al形容词性惯用语#7.区别词(1个一类,2个二类)b区别词bl区别词性惯用语#8.状态词(1个一类)z状态词#9.代词(1个一类,4个二类,6个三类)r代词rr人称代词rz指示代词rzt时间指示代词rzs处所指示代词rzv谓词性指示代词ry疑问代词ryt时间疑问代词rys处所疑问代词ryv谓词性疑问代词rg代词性语素#10.数词(1个一类,1个二类)m数词mq数量词#11.量词(1个一类,2个二类)q量词qv动量词qt时量词#12.副词(1个一类)d副词#13.介词(1个一类,2个二类)p介词pba介词“把”pbei介词“被”#14.连词(1个一类,1个二类)c连词cc并列连词#15.助词(1个一类,15个二类)u助词uzhe着ule了喽uguo过ude1的底ude2地ude3得usuo所udeng等等等云云uyy一样一般似的般udh的话uls来讲来说而言说来uzhi之ulian连(“连小学生都会”)#16.叹词(1个一类)e叹词#17.语气词(1个一类)y语气词(deleteyg)#18.拟声词(1个一类)o拟声词#19.前缀(1个一类)h前缀#
本文标题:R语言学习系列12-文本分词
链接地址:https://www.777doc.com/doc-2856400 .html