jiebaR,从入门到喜欢

浏览: 2126

之前,我写过一篇关于Rwordseg包的分词,今天,我主要想谈谈jiebaR这个包。现在我也比较推荐使用jiebaR这个包,原因也大概总结了一下几点。

image.png

image.png

什么事情的,怎么干。函数原型如下:

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

现在,我来简单说说每个参数的意义。

image.png

另外一个函数就是segment,它就好比老板,它有三个参数,code就好比任务,jiebar就是一个worker,但是担心worker对工作的方法不懂,那就用mod参数再告诉worker怎么做,也就是用什么分词引擎分词。作用分别如下。它要用这个工人worker去分词。

image.png

了解完这些参数之后,我们现在就来简单的做一个小分词。

library(jiebaR)
engine<-worker()
words<-"想学R语言,那就赶紧拿起手机,打开微信,关注公众号《跟着菜鸟一起学R语言》,跟着菜鸟一块飞。"
segment(words,engine)

运行结果如下:

image.png

在这里,我们除了使用segment之外,还可以分别使用下面代码分词,两个效果都一样。

engine<=words

image.png

这个的话有两种方法。

1.使用new_user_word函数;

2.使用worker函数中通过user参数添加词库。

那刚才那个例子来说,“公众号”本来就是一个词,结果被分成两个词,因此我需要添加这个词。另外,我也想要“R语言”也被分成一个词。接下来我们就分别使用这两种方法来实现。

▷ new_user_word函数

engine_new_word<-worker()
new_user_word(engine_new_word, c("公众号","R语言"))
segment(words,engine_new_word)

结果如下:

image.png

▷ 使用user参数添加词库

看完使用new_user_word函数添加词之后,你是不是心里就在想,如果我有几十个,甚至几百几千个词的话,如果这样输的话那估计得累死。因此我们可以自定义一个词库,然后从词库里面直接读。我建的词库截图如下:

image.png

engine_user<-worker(user='dictionary.txt')
segment(words,engine_user)


为了便于比较,我把这这几次分词结果图截到一起,如下

image.png

需要说明的是,在使用词库的话也可以使用new_user_word函数。因此也可以写成下面这样,结果是一样的。

new_user_word(engine_new_word,
scan("dictionary.txt",what="",sep="\n"))
segment(words,engine_new_word)

注意

(1)词库的第一行一定要空着,否则第一个词就会莫名其妙的失效。

(2)如果你的词库是用记事本写的话,因为编码有时不是UTF-8,使用时会出现  各种错误,甚至软件奔溃。所以建议使用notepad++编辑,将编码设置为utf-8,另存为txt文件。

(3)如果你需要添加搜狗细胞词库的话,那你需要安装cidian包,它可以帮助   我们把搜狗细胞词库转换为jiebaR可以使用的词库。

image.png

就拿我们刚才使用的例子,分词之后的“”,“”就是停用词,因此我们需要删掉。这里我们需要使用worker函数的stop_word参数。

engine_s<-worker(stop_word = "stopwords.txt")
segment(words,engine_s)

image.png

通过对比,我们发些,”,“”已经被删掉了。

image.png

这个jiebaR这个包的功能很全,它已经提供了一个函数——freq,来自动计算获取词频。

freq(segment(words,engine_s))

这个函数就自动计算了words分词之后的词频,这下我们就很容易使用wordcloud2包绘制词云。

image.png

image.png

jiebaR包,提供了一个qseg函数的话,它在分词的时候也会加上词性:它有两种使用方法。

qseg[words]
qseg<=words

image.png

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

tagger<-worker(type="tag")
tagger<=words

image.png

我自己也找网上找了一些汉语文本词性标注的资料,整理到如下表格。

image.png

image.png

image.png

我们需要把worker里面的参数type设置为keyword或者simhash,使用参数topn设置提取关键字的个数,默认为5个。

#type=keywords
keys<-worker(type="keywords",topn=2)
keys<=words
#type=simhash
keys2<-worker(type="simhash",topn=2)
keys2<=words

结果如下:

image.png

看完之后有没有觉得jiebaR这个包的功能很强大,使用起来也很简单方便。我觉得它大部分功能,都可以通过worker函数来实现。如果你已经喜欢上jiebaR,那就在底下给我点个“”,然后赶紧去试试吧!


推荐 0
本文由 王亨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册