关于R的分词器jiebaR
关于R的分词器jiebaR
“结巴”中文分词的R语言版本,支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment),共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。项目使用了Rcpp和CppJieba进行开发。
0. 安装
> library(devtools)
> install_github("qinwf/jiebaR")
目前该包还没有发布到CRAN,可以通过Github进行安装
×没有devtools包的需要install.packages("devtools")
一下
1.使用示例
> library(jiebaR)
载入需要的程辑包:jiebaRD
> mixseg=worker()
> mixseg<="与世界分享你的知识"
[1] "与" "世界" "分享" "你" "的" "知识"
对文件进行分词:
> mixseg <= "./temp.dat" ### 自动判断输入文件编码模式,默认文件输出在同目录下。
在加载分词引擎时,可以自定义词库路径,同时可以启动不同的引擎:
最大概率法(MPSegment),负责根据Trie树构建有向无环图和进行动态规划算法,是分词算法的核心。
隐式马尔科夫模型(HMMSegment)是根据基于人民日报等语料库构建的HMM模型来进行分词,主要算法思路是根据(B,E,M,S)四个状态来代表每个字的隐藏状态。 HMM模型由dict/hmm_model.utf8提供。分词算法即viterbi算法。
混合模型(MixSegment)是四个分词引擎里面分词效果较好的类,结它合使用最大概率法和隐式马尔科夫模型。
索引模型(QuerySegment)先使用混合模型进行切词,再对于切出来的较长的词,枚举句子中所有可能成词的情况,找出词库里存在。
mixseg2 = worker(type = "mix", dict = "dict/jieba.dict.utf8",
hmm = "dict/hmm_model.utf8",
user = "dict/test.dict.utf8",
detect=T, symbol = F,
lines = 1e+05, output = NULL
)
mixseg2 ### 输出worker的设置
Worker Type: Mix Segment
Detect Encoding : TRUE
Default Encoding: UTF-8
Keep Symbols : FALSE
Output Path :
Write File : TRUE
Max Read Lines : 1e+05
Fixed Model Components:
$dict
[1] "dict/jieba.dict.utf8"
$hmm
[1] "dict/hmm_model.utf8"
$user
[1] "dict/test.dict.utf8"
$detect $encoding $symbol $output $write $lines can be reset.
可以通过R语言常用的 $符号重设一些worker的参数设置 , 如 WorkerName$symbol = T
,在输出中保留标点符号。一些参数在初始化的时候已经确定,无法修改, 可以通过WorkerName$PrivateVarible
来获得这些信息。
mixseg$encoding
mixseg$detect = F
可以自定义用户词库,推荐使用深蓝词库转换构建分词词库,它可以快速地将搜狗细胞词库等输入法词库转换为jiebaR的词库格式。
ShowDictPath() ### 显示词典路径
EditDict() ### 编辑用户词典
?EditDict() ### 打开帮助系统
2.词性标注
> words="与世界分享你的知识"
> tagger=worker("tag")
> tagger<=words
p n v r uj v
"与" "世界" "分享" "你" "的" "知识"
3.关键词提取
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径,使用方法与分词类似。topn参数为关键词的个数。
> keys=worker("keywords",topn=1)
> keys<="与世界分享你的知识"
7.53593
"分享"
4.Simhash 与海明距离
> words="hello world!"
> simhashe=worker("simhash",topn=2)
> simhashe<="与世界分享你的知识"
$simhash
[1] "16715181607694826514"
$keyword
7.53593 6.44886
"分享" "知识"