R语言学习系列12文本分词.docx

上传人:b****2 文档编号:24191894 上传时间:2023-05-25 格式:DOCX 页数:12 大小:40.63KB
下载 相关 举报
R语言学习系列12文本分词.docx_第1页
第1页 / 共12页
R语言学习系列12文本分词.docx_第2页
第2页 / 共12页
R语言学习系列12文本分词.docx_第3页
第3页 / 共12页
R语言学习系列12文本分词.docx_第4页
第4页 / 共12页
R语言学习系列12文本分词.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

R语言学习系列12文本分词.docx

《R语言学习系列12文本分词.docx》由会员分享,可在线阅读,更多相关《R语言学习系列12文本分词.docx(12页珍藏版)》请在冰豆网上搜索。

R语言学习系列12文本分词.docx

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="http:

//R-Forge.R-project.org")

注意:

该网址很可能不能正常打开。

建议采用本地安装:

下载Rwordseg.zip包,R操作界面,程序包->InstallPackage(s)fromlocalfiles…,找到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")#安装自定义的词典

2388wordswereloaded!

...Newdictionary'qiche'wasinstalled!

>listDict()#显示已安装词典

NameTypeDes

1qiche汽车官方推荐,词库来源于网友上传!

Path

1d:

/ProgramFiles/R/R-3.3.1/library/Rwordseg/dict/qiche.dic

>segmentCN("雷克萨斯品牌",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<=code

qseq[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.txt"

>mixseg<="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<=word

ndvns

"人们""都""说""桂林山水"

l

"甲天下"

>qseg$type="tag"#将分词模式改为tag

>qseg[word]

ndvns

"人们""都""说""桂林山水"

l

"甲天下"

注:

汉语文本词性标注对照表见附录。

4.关键词提取和simhash计算

需要将worker中的type参数设置成“keywords”或“simhash”,并使用topn指定关键词的个数。

>keys=worker("keywords",topn=1)

>keys<=word

10.6048

"桂林山水"

>simhash=worker("simhash",topn=2)

>simhash<=word

$simhash

[1]"17867597785105042892"

$keyword

10.604810.2631

"桂林山水""甲天下"

主要参考文献:

[1]张良均,谢佳标,杨坦,肖刚.R语言与数据挖掘.机械工业出版社,2016.

附录:

汉语文本词性标注标记对照表:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1