用C++改写后,性能如何?
fxsjy opened this issue · 15 comments
你好,我是结巴分词的作者,请问cppjieb的分词速度如何?
分词速度没测,暂时也没法测,因为还没写完。而且只使用到DAG + DP这个程度,没使用HMM。
发件人: Sun Junyi
发送时间: 2013-07-12 16:26
收件人: aszxqw/cppjieba
主题: [cppjieba] 用C++改写后,性能如何? (#1)
你好,我是结巴分词的作者,请问cppjieb的分词速度如何?
—
Reply to this email directly or view it on GitHub.
之前实现了最大熵发现新词的功能,C++比python快了近10倍。所以感觉用最大概率来分词,C++版本肯定要比python快很多。
g++ -o segment.demon segment.cpp -L/usr/lib/CppJieba/ -std=c++0x -lcppjieba
最近进行了大量改写,无意中发现了以前一个写的很不好的地方影响了性能,修复之后版本为v2.2.0
速度和jieba对比了一些,差不多是10倍以上了。
强烈支持cppjieba版本,在前段时间我已经正式使用cppjieba了,同时fork了你的一个版本,并在你的项目里加入了cppjiebapy的封装以支持python的调用:https://github.com/jannson/cppjieba
不过你最近更改太多,我都还没有在你更改之后去更新与测试。等你稳定了我再下最新版进行更新提交。
@jannson
1 谢谢支持
2 最近确实改的多,现在2.2.0 差不多算是稳定了,你可以pull更新。
3 swig我不熟,只是感觉这样包装有点奇怪,如果是写python的话,感觉还是直接使用jieba就很好了,个人觉得不是很有必要把cppjieba再包装成cppjiebapy。还是比较希望项目主干代码不要python和c++混着,所以如果你要提交pullrequest的话,我偏向于开个分支做你的cppjieba4py。
anyway,感谢支持和fork。
@aszxqw 恩,开个分支更好,但昨天看了你的更新,你更改代码之后应该可以让cppjiebapy完全独立出来了,因为只用调用xxx.hpp头文件就可以调用分词库函数了。先不急开分支,我看能不能完全独立出来,以让cppjieba代码整洁。
当时cppjieba有一个缺点就是需要链接cppjieba的静态库,而c++要给python调用的时候需要编译成一个动态库。本来想直接在动态库里链接cppjieba的静态库,在我本地编译通过而服务器又编译失败,然后就采取了我源码里偷懒的办法直接把整个cppjieba给重新编译成一个动态库给pythony调用了。
使用cppjiebapy完全是个人的考虑,因为最近在研究一个海量文章排重的办法的时候已经使用了python调用c++,再封装cppjieba来调用也不觉得奇怪了。并且数据量还比较大,速度还快很多。若再加上并行处理的话我想速度会更快。一般的纯python的项目直接用jieba肯定是最好的。
独立出来的cppjiebapy:https://github.com/jannson/cppjiebapy
给有需要有同学。因为是自己用,所以只实现了MixSegment的精确分词,若需要其它分词请参照代码自行封装。
请问cppjieba支持词性标注吗?急需评估,期待您的回复,谢谢
@banderuilq 不好意思。暂时没有,计划是在春节之前加上。
cppjieba使用大的字典(367w), 我主要使用计算关键词抽取,速度变的很慢。请问有什么优化策略?