前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本挖掘|不得不知的jiebaR包,切词分词?

文本挖掘|不得不知的jiebaR包,切词分词?

作者头像
黑妹的小屋
发布2020-08-05 11:29:50
1.8K0
发布2020-08-05 11:29:50
举报
文章被收录于专栏:菜鸟学数据分析之R语言

基于文本分析的场景有词云图、基于距离的文本聚类、基于监督的文本分类、情感分析等等。不管是文档库,文章、段落或句子,针对文本挖掘的基础都集中于词的分析,即针对文档库/段落/句子等的分词(切词)。词是很多中文自然语言处理的基础,分词有助于提取文档的特征,对后续的分类模型构建有很大影响。jiebaR包的切词手段有多种,比如基于最大概率法mp,隐马尔科夫hmm,最大概率法+隐马尔科夫混合法mix,查询法query。jiebaR 包参考链接: http://qinwenfeng.com/jiebaR/。

分词引擎worker

worker()用法

代码语言:javascript
复制
#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:切词方法,默认使用混合法返回类型。tag词性标注,keywords关键词抽提。
dict:指定主词典的路径,相当于词库。
hmm:隐马尔科夫模式的路径。
user:自定义字典的路径。
idf:逆文档频次的路径。
stop_word:指定停止词的路径。
write:输出结果的路径。
qmax:在使用查询模式的时候,可指定最大的查询词的长度。
topn:提取文档关键词的个数,默认前5个。
encoding:指定输入文件的编码UTF8。
lines:指定最大的读取行数。
output:指定输出的文件路径。
user_weight:用户自定义字典权重设定,当使用自定义词典时,默认权重为最高。

#segment(code,jiebar,mod=NULL)

code:文本句子。

jiebar:设置分组的引擎worker。

mod:指定返回分词的结果类型,也是相当于切词的手段(mp/hmm/mix/query)。

#例子1

代码语言:javascript
复制
> sentence<-"脱贫攻坚是我们党对全国各族人民的庄严承诺,事关全面小康、家国梦想。扶贫路上最美的风景是群众笑脸,群众满意是最好的“民生答卷”"
> jiebar<-worker()#默认混合模式
> segment(sentence,jiebar)
 [1] "脱贫"     "攻坚"     "是"       "我们"     "党"       "对"       "全国"     "各族人民"
 [9] "的"       "庄严"     "承诺"     "事关"     "全面"     "小康"     "家"       "国"      
[17] "梦想"     "扶贫"     "路上"     "最美"     "的"       "风景"     "是"       "群众"    
[25] "笑脸"     "群众满意" "是"       "最好"     "的"       "民生"     "答卷"   

#例子2

代码语言:javascript
复制
> engine<-worker()
> egvector<-c('群众满意是最好的“民生答卷”','天气真好')
> engine<=egvector
[1] "群众满意" "是"       "最好"     "的"       "民生"     "答卷"     "天气"     "真好" 

词性标注

代码语言:javascript
复制
> cutter=worker(type = "tag")
> cutter_words<-cutter<="我爱厦门"
> cutter_words
     r      v     ns 
  "我"   "爱" "厦门"  

r:表示代词

v:表示动词

ns:表示地名

中文词性标识以及含义表获取方式:

关注公众号

后台回复【中文词性标识】

停止词处理

“的”,“哦”,“哎呦”,“而且”,“了”,“是”等一般被视为停用词。在jiebaR 中,可以通过词性标注去除停用词,也可通过指定停用词词典去除停用词。

1、词性标注法

代码语言:javascript
复制
> stop=c('r','p')。
> sentence=worker(type = "tag") 
> sentence_words<-sentence<="脱贫攻坚是我们党对全国各族人民的庄严承诺,事关全面小康、家国梦想" 
> sentence_words[!(names(sentence_words) %in% stop)]#去除停止词是代词,介词。
         v         vn          v          n          n          l         uj          a          v 
    "脱贫"     "攻坚"       "是"       "党"     "全国" "各族人民"       "的"     "庄严"     "承诺" 
         n          n         nr          q          n          n 
    "事关"     "全面"     "小康"       "家"       "国"     "梦想" 

问题1:如果要把“脱贫攻坚”,“家国梦想”,“民生答卷”,“群众笑脸”这四个词不切开,以固定名词出现,该如何切词??

2、指定停用词词典

假设停用词词典txt文本文件,如下:

注:停用词典txt文件一定要放在R语言的工作目录下才行,而且txt文件的第一行需为空行否则无法导入停用词典,当前工作目录路径采用getwd()得知。

代码语言:javascript
复制
> sentence=worker(stop_word='stop.txt') 
> sentence_words<-sentence<="脱贫攻坚是我们党对全国各族人民的庄严承诺,事关全面小康、家国梦想"
> sentence_words
 [1] "脱贫"     "攻坚"     "党"       "全国"     "各族人民" "庄严"     "承诺"     "事关"    
 [9] "全面"     "小康"     "家"       "国"       "梦想"  

自定义分词词典

jiebaR自定义分词词典格式包含词、词频、词性,如下。

人民群众 12 n

老百姓 23 nz

中国 12 nz

其中“12”表示“人民群众”的词频,n越大被分词的可能性越高。设置自定义分词词典 user.txt 文本文件。

代码语言:javascript
复制
> user_dict=worker(type = "mix",user="user.txt")
> user_dict<="脱贫攻坚是我们党对全国各族人民的庄严承诺,事关全面小康、家国梦想。扶贫路上最美的风景是群众笑脸,群众满意是最好的“民生答卷”"
 [1] "脱贫攻坚" "是"       "我们"     "党"       "对"       "全国"     "各族人民" "的"      
 [9] "庄严"     "承诺"     "事关"     "全面"     "小康"     "家国梦想" "扶贫"     "路上"    
[17] "最美"     "的"       "风景"     "是"       "群众笑脸" "群众满意" "是"       "最好"    
[25] "的"       "民生答卷"

以上自定义词典很方便的解决了问题1,特别适合量大文档库处理。针对问题1,还可用新增词函数解决:

new_user_word(worker,tags=rep("n",length(words)))

worker:已经指定的分词引擎

words:自定义词

tags:默认为名词词性

代码语言:javascript
复制
> sentence<-"脱贫攻坚是我们党对全国各族人民的庄严承诺,事关全面小康、家国梦想。扶贫路上最美的风景是群众笑脸,群众满意是最好的“民生答卷”"
> jiebar<-worker()#默认混合模式  
> new_user_word(jiebar,c('民生答卷','群众笑脸','家国梦想','脱贫攻坚'))
[1] TRUE
> segment(sentence,jiebar)

修改前后对比如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟学数据分析之R语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档