Gem 写了一个中文分词的 gem——nlpir

wujian_hit · 2013年07月29日 · 最后由 Martin91 回复于 2014年05月13日 · 9774 次阅读

nlpir gem封装自中科院中文分词ICTCLAS2014

ICTCLAS是由中国科学院计算技术研究所研发。功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。目前性能最好的中文分词工具。

nlpir使用ruby2.0 fiddle 模块封装,最新版本1.0.0封装自ICTCLAS2014最新版本,完美支持linux x86 x64,之前反应的用户词典bug已经修复。新版的gem提供了ruby风格的函数。

gem install nlpir

usage:


require 'nlpir'
include Nlpir

s="坚定不移沿着中国特色社会主义道路前进  为全面建成小康社会而奋斗"

#在当前文件夹路径下初始化
nlpir_init(File.expand_path("../", __FILE__),UTF8_CODE)

#处理字符串
text_proc(s) 

#处理文件
file_proc("example.txt","result.txt") 

#导入用户词典
import_userdict("./userdict.txt")
text_proc(s)

nlpir_exit()

欢迎各位继续丰富ruby在自然语言处理领域的包

用法test中的用法 nlpir@rubygems.org nlpir@github


有人问性能,官方文档里其实有测试数据,ICTCLAS测试:

共收到 43 条回复

赞一个。学长哪个实验室的?

#2楼 @wujian_hit 。。。我是学长,学弟加油

例子挺有内涵的😄

看了一下 README 上面的使用方法,好复杂啊,不能简单一点么,另外

NLPIR_AddUserWord
NLPIR_ParagraphProcess
NLPIR_ImportUserDict
...

这里方法命名一点也不 Ruby,用起来很奇怪

#7楼 @huacnlee 取名这样是为了和官方文档的介绍保持一致。

#6楼 @kamiiyu 嘿嘿。低调低调

厉害!赞一个

哇, 现在 ICTCLAS 竟然可以在非 windows 用了...

是不是还是和 mecab 用中文训练的结果差不多?

#12楼 @luikore ICTCLAS2013 ,pure c 编译的.so

#7楼 @huacnlee 先init一下,然后call method u want,最后exit一下释放资源。原本也想直接把这个封装进函数,但是考虑到可能会丧失灵活性和降低性能,最后还是决定让大家调用的时候自己初始化和释放比较好。也很无奈啊~c就是这样子。。

ICTCLAS2013 这个分词还是蛮好的。不知道效率如何

#15楼 @u1371780084 分词速度单机996KB/s,分词精度98.45%,

内存使用情况呢?

#17楼 @u1371780084 帖子更新了,您关心的性能问题,可以看一下。

#6楼 @kamiiyu 什么内涵?没看不来。请指教。

赞一个,准备试用一下。

进去就看到这个例子, require 'nlpir' include Nlpir

s = "坚定不移沿着中国特色社会主义道路前进 为全面建成小康社会而奋斗"

#22楼 @u1360749170 四野之内,六合之间,必是我党笑傲江湖~ 😄

#8楼 @wujian_hit 可以加点alias

现在能支持brew的安装模式吗

#26楼 @staticor 我没有mac机,不过brew应该和ubuntu的apt-get是一种类型的工具,用于安装软件。这个只是一个gem。。。gem install 就ok.

我就是不喜欢HHMM,不要问我为什么。

#11楼 @luikore 很久很久以前就可以了。只不过只能运行在Java平台上

https://code.google.com/p/ictclas4j/

可以用在tire和elasticsearch哇?

赞一个,写得蛮好的

#30楼 @boostbob 请教一下elasticsearch需要分词模块完成一些特定的接口标准吗?

#32楼 @wujian_hit 一般会继承org.apache.lucene.analysis.Tokenizer这个抽象类写一个Tokenizer,然后写一个类继承org.elasticsearch.index.analysis.AbstractTokenizerFactory,做个工厂类,这个可以通过elasticsearch的index配置,传入一些特定参数,然后传给你的Tokenizer,再写一个类继承AnalysisModule.AnalysisBinderProcessor用来在elasticsearch启动时,注册你的TokenizerFactory。 这是基本流程。。。伟大的爪哇

这个能够识别一些到品牌关键字吗? 如汽车品牌:宝来,腾翼。我到官网试了一下好像不行

#34楼 @whh 识别这些词汇这个需要专门的行业词库。

/home/changwu/.rvm/gems/ruby-2.0.0-p0/gems/nlpir-0.0.3-x86-linux/lib/nlpir.rb:177:in to_s': NULL pointer given (ArgumentError) from /home/changwu/.rvm/gems/ruby-2.0.0-p0/gems/nlpir-0.0.3-x86-linux/lib/nlpir.rb:177:inNLPIR_ParagraphProcess' from split_words.rb:11:in `

' 遇到这样的错误,不知道是怎么回事? #35楼 @wujian_hit

代码如下:

#encoding : utf-8
require 'nlpir'
include Nlpir

s = "坚定不移沿着中国特色社会主义道路前进  为全面建成小康社会而奋斗"
 #first of all : Call the NLPIR API NLPIR_Init

NLPIR_Init(nil, UTF8_CODE , File.expand_path("../", __FILE__))

#example1:   Process a paragraph, and return the result text with POS or not
puts puts NLPIR_ParagraphProcess("1989年春夏之交的政治风波1989年政治风波24小时降
雪量24小时降雨量863计划ABC防护训练APEC会议BB机BP机C2系统C3I系统C3系统C4ISR系统C4I系统CCITT建议")

@wujian_hit when I tried to install with my Ruby 2,0 got below error: any suggestion on this? Could not find nlpir-0.0.3 in any of the sources

#36楼 @changwu 你好,这是因为包的授权期限到了。已经push了最新的gem-x86-linux-0.1.0.

#37楼 @bao1018 it just support x86 platform windows and linux , the reason is NLPIR2013 for x64 has much serious bugs ...... But a good news is the official team of NLPIR will release the perfect version-2014 at 2014.Dec... and I will release the no-bug gem in time. thank you support.

#36楼 @changwu 网络原因push 不上去。。。。请稍等。

这个gem还不能支持x64系统吗?mac下安装出现:

gem install nlpir
ERROR:  Could not find a valid gem 'nlpir' (>= 0), here is why:
          Found nlpir (1.0.0), but was for platforms x86_64-linux ,x86-linux ,x86-mingw32

欲哭无泪,最近毕设可能需要处理分词。

#41楼 @Martin91 支持64位linux和windows,不支持mac,原因是官方没有在mac上编译成*.dylib

#42楼 @wujian_hit 嗯嗯,感谢回答

ouyang Ruby 的机器学习项目 中提及了此贴 12月08日 19:41
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册