jiebaR R语言中文分词

程序名称:jiebaR

授权协议: MIT

操作系统: 跨平台

开发语言: C/C++

jiebaR 介绍

“结巴”中文分词的R语言版本,支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment),共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。项目使用了Rcpp和CppJieba进行开发。

特性

  • 支持 Windows , Linux操作系统(Mac 暂未测试)。

  • 通过Rcpp Modules实现同时加载多个分词系统,可以分别使用不同的分词模式和词库。

  • 支持多种分词模式、中文姓名识别、关键词提取、词性标注以及文本Simhash相似度比较等功能。

  • 支持加载自定义用户词库,设置词频、词性。

  • 同时支持简体中文、繁体中文分词。

  • 支持自动判断编码模式。

  • 比原”结巴”中文分词速度快,是其他R分词包的5-20倍。

  • 安装简单,无需复杂设置。

  • 可以通过Rpy2,jvmr等被其他语言调用。

  • 基于MIT协议。

安装

目前该包还没有发布到CRAN,可以通过Github进行安装。Windows系统需要安装
Rtools,或者可以下载二进制包,进行安装:

library(devtools)
install_github(qinwf/jiebaR)

使用示例

分词

jiebaR提供了四种分词模式,可以通过jiebar()来初始化分词引擎,使用segment()进行分词。

library(jiebaR)
##  接受默认参数,建立分词引擎 
mixseg = worker()
##  相当于:
##       jiebar( type = mix, dict = inst/dict/jieba.dict.utf8,
##               hmm  = inst/dict/hmm_model.utf8,  ### HMM模型数据
##               user = inst/dict/user.dict.utf8) ### 用户自定义词库
mixseg <= 江州市长江大桥参加了长江大桥的通车仪式  ### <= 分词运算符
## 相当于 segment( 江州市长江大桥参加了长江大桥的通车仪式 , mixseg )


[1] 江州     市长     江大桥   参加     了       长江大桥
[7] 的       通车     仪式

支持对文件进行分词:

mixseg <= ./temp.dat  ### 自动判断输入文件编码模式,默认文件输出在同目录下。
## segment( ./temp.dat , mixseg )

在加载分词引擎时,可以自定义词库路径,同时可以启动不同的引擎:

最大概率法(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()     ### 打开帮助系统

词性标注

可以使用 <=.tagger 或者 tag 来进行分词和词性标注, 词性标注使用混合模型模型分词,标注采用和 ictclas 兼容的标记法。

words = 我爱北京天安门
tagger = worker(tag)
tagger <= words


     r        v       ns       ns 
    我     爱   北京 天安门

关键词提取

关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径,使用方法与分词类似。topn参数为关键词的个数。

keys = worker(keywords, topn = 1)
keys <= 我爱北京天安门
keys <= 一个文件路径.txt


  8.9954 
天安门

Simhash
与海明距离

对中文文档计算出对应的simhash值。simhash是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。Simhash引擎先进行分词和关键词提取,后计算Simhash值和海明距离。

 words = hello world!
 simhasher = worker(simhash,topn=2)
 simhasher <= 江州市长江大桥参加了长江大桥的通车仪式


$simhash
[1] 12882166450308878002
$keyword
   22.3853    8.69667 
长江大桥     江州


$distance
[1] 23
$lhs
   22.3853    8.69667 
长江大桥     江州 
$rhs
11.7392 11.7392 
hello world

计划支持

  • 支持 Windows , Linux , Mac 操作系统并行分词。

  • 简单的自然语言统计分析功能。

jiebaR 官网

https://github.com/qinwf/jiebaR

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


BlazeDS 是一个基于服务器的Java 远程控制(remoting)和Web消息传递(messaging)技术, 它能够使得后端的Java应用程序和运行在浏览器上的Adobe
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java
Volta 是一套开发工具,专为开发分布式、实时系统应用。它包括级联,控制流分析工具,
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG 的 数据分布式服务 (DDS) 。OpenDDS利用自适应通信环境(ACE)提供一个跨平台的环境。
JADE (Java Agent DEvelopment Framework) 是一个完全用Java语言实现的软件框架。它通过一个兼容 FIPA
FastMM ,在D2006和2007中已代替了原来的内存管理器。
WebRTC 是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌于2010年以6820万美元收购VoIP软件开发商 Global IT
gwtwiki - The Java Wikipedia API (Bliki engine),是一个 Wikipedia/Mediawiki 语法解析器,可以把 wiki 的文本转换成 HTML。它支持 wiki 标签,例如 bold, italic, headers, nowiki,
Esper 是一个复杂事件处理组件(CEP - Complex Event Processing),它有 Java 版本和 .NET 版本(NEsper)。
LuaTinker 的作者是Kwon-il Lee韩国人写的,最新的版本是0.2.C,这个C++ wrapper For Lua能够方便和
各种语言环境下gitignore文件的一个集合。
简介 ContentExtractor 是一个开源的网页正文抽取工具,用JAVA实现,具有非常高的抽取精度。
SwiftRandom 是一组函数集合,可以从不同的分布生成伪随机变量。 使用示例: //Single pseudorandom normal variable
java-linq-examples 是 101 个 LINQ 示例的 Java 移植版本。Android 兼容 Java 1.7. 此外还有以下语言移植版本:
mal,Make a Lisp,顾名思义,用图灵完备的编程语言写 Lisp 交互器,目前已经有35种不同语言的实现:
一个 Go 语言实现的中国行政区划查询工具。 介绍 最新中国行政区划,数据来源:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html
Teaf 简介 Tencent Easy ACE Framework,基于 ACE 的高性能轻量级服务框架,单进程多线程模型,支持 select/epoll 等多种网络
介绍 让 Guzzle 支持 Swoole 协程,这个项目目的就是这么简单明了! Guzzle-Swoole 是 Guzzle 的处理器(Handler),并没有对 Guzzle 本身代码进行修改,理论上可以兼容后续版本。
goproxy-shell goproxy服务端部署脚本 使用方法 wget --no-check-certificate https://github.com/sjz123321/goproxy-
1. pyMd2Doc介紹(pip版本) 利用python将markdown转换成带可收缩、可跳转到文本内容的目录文档。