基于 Python 的中文分词方案那种比较好?jieba_fast

8 篇文章 1 订阅

 

转载:https://www.zhihu.com/question/20294818/answer/280918825

 

可以试试jieba_fast, 我觉得python jieba太慢,使用 c 重写了jieba分词库中的核心函数,速度得到大幅提升。

特点

  • 对两种分词模式进行的加速:精确模式,搜索引擎模式
  • 利用cpython重新实现了 viterbi 算法,使默认带 HMM 的切词模式速度提升 60%左右
  • 利用cpython重新实现了生成 DAG 以及从 DAG 计算最优路径的算法,速度提升 50%左右
  • 基本只是替换了核心函数,对源代码的侵入型修改很少
  • 使用import jieba_fast as jieba 可以无缝衔接原代码。

安装说明

代码目前对 Python 2/3 兼容,对*unix 兼容良好,对 windows 不能保证

性能测试

测试机器 mbp17,i7,16G

测试过程: 先按行读取文本《围城》到一个数组里,然后循环对《围城》每行文字作为一个句子进行分词。然后循环对围城这本书分词 50 次。分词算法分别采用 [开启 HMM 的精确模式] 、 [关闭 HMM 的精确模式] 、 [开启 HMM 的搜索引擎模式] 、 [开启 HMM 的搜索引擎模式] 具体测试数据如下:

 

 

可以看出在开启 HMM 模式下时间缩减了 60%左右,关闭 HMM 时时间缩减了 50%左右。

一致性测试

为了保证 jieba_fast 和 jieba 分词结果相同,做了如下测试。

对《围城》,《红楼梦》分词结果进行比较,其分词结果完全一致

---- Test of 围城 ----
nums of jieba      results:  164821
nums of jieba_fast results:  164821
Are they exactly the same?  True
----Test of 红楼梦 ----
nums of jieba      results:  597151
nums of jieba_fast results:  597151
Are they exactly the same?  True

鸣谢

"结巴"中文分词原作者: SunJunyi


github: https://github.com/deepcs233/jieba_fast (求 star 哈哈哈 ) 源代码在 source/ 下

blog: http://deepcs.me

 

另外,不久前github新开源了一个python中文分词库fool,可以试一试

官网上提到的特点如下

可能不是最快的开源中文分词,但很可能是最准的开源中文分词
基于 BiLSTM模型训练而成
包含分词,词性标注,实体识别, 都有比较高的准确率
用户自定义词典
可训练自己的模型
批量处理

 

此外,欢迎尝试我们thunlp组发布的THULAC中文词法分析工具包,包括中文分词和词性标注功能,目前包括C++、Python和Java版本。与各常用工具包的性能和效果比较可以参考:THULAC:一个高效的中文词法分析工具包

还有,python调用c库,可以使用中科院的分词,感觉还行,就是导入用户自定义的词库存在失败率,然后还无法调试出原因

今天刚给四款python中文分词的做了简单测试
http://hi.baidu.com/fooying/item/6ae7a0e26087e8d7eb34c9e8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值