jiebaR中文分词,从入门到喜欢
之前,我写过一篇关于Rwordseg包的分词,链接为:http://blog.csdn.net/wzgl__wh/article/details/52528925
今天,我主要想谈谈自己对jiebaR这个包。现在我也比较推荐使用jiebaR这个包,原因也大概总结了一下几点。
JiebaR |
Rwordseg |
|
函数数量 |
51个 |
9个 |
更新速度 |
快,cran最新版更新于2016-09-28 |
慢,R-Forge最新版更新于2013-12-15 |
安装难度 |
容易 |
难,需要安装java。 |
分词引擎 |
多 |
只有一种(隐马尔科夫模型) |
(个人观点,还望大家在留言区补充)
一、分词
首先,我们来看一下jiebaR里面最重要的一个函数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, full, query, tag, simhash, keyword,分别指混合模型,支持最大概率,隐马尔科夫模型,全模式,索引模型,词性标注,文本Simhash相似度比较,关键字提取。 |
dict |
词库路径,默认为DICTPATH. |
hmm |
用来指定隐马尔可夫模型的路径,默认值为DICTPATH,当然也可以指定其他分词引擎 |
user |
用户自定义的词库 |
idf |
用来指定逆文本频率指数路径,默认为DICTPATH,也可以用于simhash和keyword分词引擎 |
stop_word |
用来指定停用词的路径 |
qmax |
词的最大查询长度,默认为20,可用于query分词类型。 |
topn |
关键词的个数,默认为5,可以用于simhash和keyword分词类型 |
symbol |
输出是否保留符号,默认为F |
Lines |
从文件中最大一次读取的行数。默认为1e+05 |
output |
输出文件,文件名一般时候系统时间。 |
bylines |
返回输入的文件有多少行 |
user_weight |
用户词典的词权重,有"min" "max" or "median"三个选项。 |
另外一个函数就是segment,它就好比老板,它有三个参数,code就好比任务,jiebar就是一个worker,但是担心worker对工作的方法不懂,那就用mod参数再告诉worker怎么做,也就是用什么分词引擎分词。作用分别如下。它要用这个工人worker去分词。
参数 |
作用 |
code |
中文句子或者文件 |
jiebar |
设置分词的引擎,也就是worker函数 |
mod |
改变默认的分词引擎类型,其中包括以下几个:"mix", "hmm","query","full","level", "mp" |
了解完这些参数之后,我们现在就来简单的做一个小分词。
library(jiebaR)
engine<-worker()
words<-"想学R语言,那就赶紧拿起手机,打开微信,关注公众号《跟着菜鸟一起学R语言》,跟着菜鸟一块飞。"
segment(words,engine)
结果如下:
在这里,我们除了使用segment之外,还可以使用下面代码分词,效果是一样的。
engine<=words
二、添加用户自定义词或词库
那刚才那个例子来说,“公众号”本来就是一个词,结果被分成两个词,因此我需要添加这个词。另外,我也想要“R语言”也被分成一个词。接下来我们就分别使用这两种方法来实现。
1.使用new_user_word函数;
2.使用worker函数中通过user参数添加词库。
(1)new_user_word函数
engine_new_word<-worker()
new_user_word(engine_new_word, c("公众号","R语言"))
segment(words,engine_new_word)
结果如下:
▷ 使用user参数添加词库
看完使用new_user_word函数添加词之后,你是不是心里就在想,如果我有几十个,甚至几百几千个词的话,如果这样输的话那估计得累死。因此我们可以自定义一个词库,然后从词库里面直接读。我建的词库截图如下:
engine_user<-worker(user='dictionary.txt')
segment(words,engine_user)
为了便于比较,我把这两次分词结果图截到一起,如下
需要说明的是,在使用词库的话也可以使用new_user_word函数。第二种方法用也可以用new_user_word写成下面这样,结果是一样的。
new_user_word(engine_new_word, scan("dictionary.txt",what="",sep="\n"))
segment(words,engine_new_word)
三、删除停用词
就拿我们刚才使用的例子,分词之后的“那”,“就”就是停用词,因此我们需要删掉。这里我们需要使用worker函数的stop_word参数。
engine_s<-worker(stop_word = "stopwords.txt")
segment(words,engine_s)
通过对比,我们发些,“那”,“就”已经被删掉了。
四,计算词频
这个jiebaR这个包的功能很全,它已经提供了一个函数——freq,来自动计算获取词频。
这个函数就自动计算了words分词之后的词频,这下我们就很容易使用wordcloud2包绘制词云。
freq(segment(words,engine_s))
五、词性标注
jiebaR包,提供了一个qseg函数,它在分词的时候也会加上词性,它有两种使用方法。
qseg[words]
qseg<=words
结果如下:
其中词性标注也可以使用worker函数的type参数,type默认为mix,仅需将它设置为tag即可。
tagger<-worker(type="tag")
tagger<=words
我自己也找网上找了一些汉语文本词性标注的资料,整理到如下表格。
标注 |
词性 |
标注 |
词性 |
ag |
形容素 |
a |
形容词 |
ad |
副形词 |
an |
名形词 |
b |
区别词 |
c |
连词 |
Dg |
副语素 |
d |
副词 |
e |
叹词 |
f |
方位词 |
g |
语素 |
h |
前接成分 |
i |
成语 |
j |
简称略语 |
k |
后接成分 |
l |
习用语 |
m |
数词 |
ng |
名词素 |
n |
名词 |
nr |
人名 |
nr1 |
汉语姓氏 |
nr2 |
日语姓氏 |
nrj |
日语人名 |
nrf |
音译人名 |
ns |
地名 |
nt |
机构团体 |
nz |
其他专名 |
nl |
名词性惯用语 |
vf |
取向动词 |
vx |
形式动词 |
p |
介词 |
q |
量词 |
r |
代词 |
s |
处所词 |
tg |
时间词性语素(时语素) |
t |
时间词 |
u |
助词 |
vg |
动词素 |
v |
动词 |
vd |
副动词 |
vn |
名动词 |
w |
标点符号 |
y |
语气词 |
x |
非语素词 |
z |
状态词 |
o |
拟声词 |
六,提取关键字
#type=keywords
keys<-worker(type="keywords",topn=2)
keys<=words
#type=simhash
keys2<-worker(type="simhash",topn=2)
keys2<=words
七、总结
jiebaR中文分词,从入门到喜欢相关推荐
- Python第三方库jieba(中文分词)入门与进阶(官方文档)
jieba "结巴"中文分词:做最好的 Python 中文分词组件 github:https://github.com/fxsjy/jieba 特点 支持三种分词模式: 精确模式, ...
- 隐含马尔可夫模型HMM的中文分词器 入门-1
<pre name="code" class="sql">http://sighan.cs.uchicago.edu/bakeoff2005/ ht ...
- python 分词工具训练_中文分词入门和分词工具汇总攻略
[注意]如果寻找分词和文本分析软件,为了完成内容分析和其他文本研究任务,直接使用集搜客分词和文本分析软件就可以了.本文是为了讲解集搜客分词和文本分析的实现原理,是给产品设计者和开发者看的. 最近在整理 ...
- 中文分词入门之字标注法4
http://www.52nlp.cn/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E6%A0%8 ...
- 入门科普:一文看懂NLP和中文分词算法(附代码举例)
导读:在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水. 所谓"自然"乃是寓意自然进化形成,是为了区分一些 ...
- R语言中文分词包jiebaR
R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...
- 中文分词入门之字标注法3
中文分词入门之字标注法3 http://www.52nlp.cn/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%85%A5%E9%97%A8%E4%B9%8B%E5% ...
- R语言中利用jiebaR包实现中文分词
文章目录 介绍 worker()函数介绍 参数介绍 new_user_word()函数介绍 参数介绍 freq()函数介绍 实例 利用默认库进行分词 利用自定义词库进行分割 通过文本文件添加用户自定义 ...
- 《自然语言处理实战入门》 ---- 第4课 :中文分词原理及相关组件简介 之 语言学与分词技术简介...
<自然语言处理实战入门> ---- 第4课 :中文分词原理及相关组件简介 之 语言学与分词技术简介 https://edu.csdn.net/course/play/20769/25954 ...
最新文章
- MongoDB:详细解释mongodb的高级操作,聚合和游标
- 天龙八部3d最新服务器,天龙八部3DIOS正版服务器整合互通公告
- html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx
- Java中 break continue return 的区别
- label里面的文字换行_批量识别图中文字自动命名,让你1秒找到骚图!太强大了!...
- dbutils java_Dbutils工具类的使用
- 《单细胞生物》教学反思
- [微信小程序]swiper保持宽高比
- 2022年R2移动式压力容器充装操作证考试题库及答案
- HTML期末学生大作业 响应式动漫网页作业 html+css+javascript (1)
- Photoshop十种抠图方法
- 如何让一个PNG图片背景透明
- ps 套索工具抠图实例
- 微信小程序后台销毁时间 演变和总结(热启动时间限制)
- RK3328量产刻录完整镜像
- ​复盘共享经济2020:陷入艰难求生困境,转型能否拯救亏损怪圈
- pm_原型设计——墨刀使用教程
- 【深度学习 功法篇】win10操作系统PC端环境的部署(如何并存 不同的、多种版本的深度学习框架)
- [Nginx]Ngnix基础
- 网络协议 -- HTTPS(2)数字签名与数字证书