jiebaR笔记

查看帮助

?jiebaR    #在Rstudio中 该包的帮助文档

jiebaR中文分词文档
这个很详细很强大

还有微信上看到有人的分享文章也不错:http://mp.weixin.qq.com/s/PJ5bCtodjxikcSbynEZ8Dw
本文就是在参照以上资料写的


两个重要函数:

  • worker
  • segment

worker是最重要的一个函数。

函数使用方法(获取帮助):

?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")

worker()用于新建分词引擎。
worker()有很多参数。

  • 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)

  • type

指分词引擎类型,这个包括mix,mp,hmm,full,query,tag,simhash,keyword,分别指混合模型,支持最大概率,隐形马尔科夫模型,全模式,索引模式,词性标注,文本Simhash相似度比较,关键字提取。

具体为:
mp(最大概率模型)- 基于词典和词频
hmm(HMM模型)- 基于HMM模型,可以发现词典中没有的词
mix(混合模型)-先用mp分,mp分完调用hmm再把剩余的可能成词的单字分出来
query(索引模型)-mix基础上,对大于一定长度的词再进行一次切分
tag(标记模型)-词性标记,基于词典的
keywords(关键词模型)- tf-idf抽 关键词
simhash(Simhash) - 在关键词的基础上计算simhash

  • dict系统词典

系统词典。词库路径,默认为jiebaR::DICTPATH。

jiebaR::DICTPATH
[1] "D:/R-3.4.0/library/jiebaRD/dict/jieba.dict.utf8"   #这个是我这里的路径

打开jieba.dict.utf8,如下(包括词、词频、词性标注三列):

jiebaR.png

看了这个图片,大概就有了一个直观的认识。

也可以读取前n条查看:

readLines(jiebaR::DICTPATH,5)
  • user用户词典
    用户自定义的词库,用户词典,包括词、词性标注两列(只有词一列也可以)。
    用户词典中的所有词的词频均为系统词典中的最大词频(默认,可以通过user_weight参数修改)
    user= 后面直接接文件路径。

  • User_weight

用户词典中词的词频,默认为"max",系统词典的最大值。
还可以选择"min"最小值或"median"中位数

  • idf IDF词典

IDF 词典,关键词提取使用。

  • stop_word 关键词用停止词库

关键词提取使用的停止词库。
分词时也可以使用,但是分词时使用的对应路径不能为默认的jiabaR::STOPPATH

  • write 写入文件

是否将文件分词结果写入文件,默认为否。只在输入内容为文件路径时,本参数才会被使用。本参数只对分词和词性标注有效。

  • qmax 最大索引长度
    词的最大查询长度,默认为20,可用于query分词类型

  • topn 关键词数

关键词的个数,默认为5,可以用于simhash和keyword分词类型

  • encoding输入文件编码
    默认为UTF-8.

  • detect检测编码
    是否检查输入文件的编码,默认检查。

  • symbol 保留符号
    输出是否保留符号(标点符号),默认为False。

  • lines 读取行数
    每次读取文件的最大行数,用于控制读取文件的长度。
    对于大文件,实现分次读取。

  • output 输出路径
    指定输出路径,一个字符串路径。只在输入内容为文件路径时,本参数才会被使用。

  • bylines 按行输出
    文件结果是否按行输出。如果是,则将读入的文件或字符串向量按行逐个进行分词操作。


另外一个函数是segment.
它有三个参数,code好比任务,jiebar就是一个worker,mod参数告诉worker怎么做,也就是什么分词引擎分词。

?segment
Usage

segment(code, jiebar, mod = NULL)
Arguments

code    
A Chinese sentence or the path of a text file.
jiebar  
jiebaR Worker.
mod 
change default result type, value can be "mix","hmm","query","full","level", or "mp"


1.分词

library(jiebaRD)
library(jiebaR)
engine <- worker()  #这个默认参数,未进行特别设置
words <- "晚上早早就睡觉但是睡不着,白天又很早就醒。为了改变现状,我决定用早起倒逼早睡,最终达到早睡早起的目的。"
segment(words,engine) 
[1] "晚上"     "早早"     "就"       "睡觉"     "但是"    
 [6] "睡不着"   "白天"     "又"       "很"       "早就"    
[11] "醒"       "为了"     "改变现状" "我"       "决定"    
[16] "用"       "早起"     "倒逼"     "早睡"     "最终"    
[21] "达到"     "早睡早起" "的"       "目的"  

这个地方,"很早" "就"是这样的。它是"很" "早就"的。

2.添加用户自定义词或词库
这个有两种方法:

  • 使用new_user_word函数;
  • 使用worker函数中通过user参数添加词库
    这里我想让"很早"在一起,”早早就“也在一起。
    new_user_word函数
engine_new_word <- worker()
new_user_word(engine_new_word,c("早早就","很早"))
segment(words,engine_new_word)
 [1] "晚上"     "早早就"   "睡觉"     "但是"     "睡不着"  
 [6] "白天"     "又"       "很早"     "就"       "醒"      
[11] "为了"     "改变现状" "我"       "决定"     "用"      
[16] "早起"     "倒逼"     "早睡"     "最终"     "达到"    
[21] "早睡早起" "的"       "目的"

使用user参数添加词库
自定义一个词库
zidingyi.txt
文件内容:
早早就
很早

getwd()   #这里看下工作目录,把zidingyi.txt文件放到该路径下即可
engine_user <- worker(user = "zidingyi.txt")
segment(words,engine_user)
 [1] "D:/Rdata"
 [1] "晚上"     "早早就"   "睡觉"     "但是"     "睡不着"  
 [6] "白天"     "又"       "很早"     "就"       "醒"      
[11] "为了"     "改变现状" "我"       "决定"     "用"      
[16] "早起"     "倒逼"     "早睡"     "最终"     "达到"    
[21] "早睡早起" "的"       "目的"   

注意下哦:

  • 词库的第一行空着,不然第一个词默认不起作用了
  • 新建txt文件可能默认编码为ASCII,另存下选择编码为UTF-8

3.添加停止词以删除
这里,删除"又"、"的"这样的词
使用worker函数的stop_word参数
新建stopwords.txt文件,同上

engine_s <- worker(stop_word = "stopwords.txt") 
segment(words,engine_s)
 [1] "晚上"     "早早"     "就"       "睡觉"     "但是"    
 [6] "睡不着"   "白天"     "很"       "早就"     "醒"      
[11] "为了"     "改变现状" "我"       "决定"     "用"      
[16] "早起"     "倒逼"     "早睡"     "最终"     "达到"    
[21] "早睡早起" "目的" 

4.统计词频
jiebaR包,提供了一个函数freq来自动计算获取词频。

freq(segment(words,engine_s))
image.png

这个函数自动计算了words分词后的词频。
之后就可以用wordcloud2绘制词云(这里词频太少啦)

//
jiebaR包提供了一个 qseg函数,它也可以分词:
两种使用方法:

qseg[words]
qseg<=words

5.词性标注

词性标注可以使用worker函数的type参数。
type默认参数为mix,将它设置为tag。

engine_tag <- worker(type = "tag")   ##设置type
segment(words,engine_tag)
       t          t          d          v          c          v 
    "晚上"     "早早"       "就"     "睡觉"     "但是"   "睡不着" 
         t          d         zg          d          v          p 
    "白天"       "又"       "很"     "早就"       "醒"     "为了" 
         n          r          v          p          v          v 
"改变现状"       "我"     "决定"       "用"     "早起"     "倒逼" 
         v          d          v         vn         uj          n 
    "早睡"     "最终"     "达到" "早睡早起"       "的"     "目的" 

6.提取关键字

把worker函数的参数type设置为keywordsimhash,使用参数topn设置提取关键词的个数,默认为5.

keys <- worker(type = "keywords",topn = 2)    ##设置type
keys<=words    #这个是更方便的一种写法//还可以用segment函数做   
   11.9548    11.5028 
"改变现状" "早睡早起" 

jiebaR的大部分功能都可以通过worker函数来实现。


可参考jiebaR的主页:
http://qinwenfeng.com/jiebaR/


附上关于worker()参数的英文说明(具体参数使用可以实际操作以下)。

Arguments
type    
The type of jiebaR workers including mix, mp, hmm, full, query, tag, simhash, and keywords.
dict    
A path to main dictionary, default value is DICTPATH, and the value is used for mix, mp, query, full, tag, simhash and keywords workers.
hmm 
A path to Hidden Markov Model, default value is HMMPATH, full, and the value is used for mix, hmm, query, tag, simhash and keywords workers.
user    
A path to user dictionary, default value is USERPATH, and the value is used for mix, full, tag and mp workers.
idf 
A path to inverse document frequency, default value is IDFPATH, and the value is used for simhash and keywords workers.
stop_word   
A path to stop word dictionary, default value is STOPPATH, and the value is used for simhash, keywords, tagger and segment workers. Encoding of this file is checked by file_coding, and it should be UTF-8 encoding. For segment workers, the default STOPPATH will not be used, so you should provide another file path.
write   
Whether to write the output to a file, or return a the result in a object. This value will only be used when the input is a file path. The default value is TRUE. The value is used for segment and speech tagging workers.
qmax    
Max query length of words, and the value is used for query workers.
topn    
The number of keywords, and the value is used for simhash and keywords workers.
encoding    
The encoding of the input file. If encoding detection is enable, the value of encoding will be ignore.
detect  
Whether to detect the encoding of input file using file_coding function. If encoding detection is enable, the value of encoding will be ignore.
symbol  
Whether to keep symbols in the sentence.
lines   
The maximal number of lines to read at one time when input is a file. The value is used for segmentation and speech tagging workers.
output  
A path to the output file, and default worker will generate file name by system time stamp, the value is used for segmentation and speech tagging workers.
bylines 
return the result by the lines of input files
user_weight 
the weight of the user dict words. "min" "max" or "median".
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 常用概念: 自然语言处理(NLP) 数据挖掘 推荐算法 用户画像 知识图谱 信息检索 文本分类 常用技术: 词级别...
    御风之星阅读 9,003评论 1 24
  • 早期在项目中使用ansj分词,但一直停留在会用,所以我抽空学习了一下源码,确实对分词的流程和用法有了进一步的理...
    wlj1107阅读 1,990评论 1 2
  • Part1安装依赖包 http://blog.csdn.net/cl1143015961/article/deta...
    小豆角lch阅读 5,022评论 2 11
  • 假如真有一台时光机,那我想它一定是这个世界上最奢侈的礼物吧!人们都想回到幸福快乐的时光,或者回到痛苦灾难的...
    悠云小筑阅读 283评论 0 1
  • 又是一个人,又是一个秋! 我喜欢摄影,其实也没有很好的学习。就是喜欢手拿相机去街边、去巷尾、去到所有我脚步可...
    紫堇A毒阅读 140评论 0 0