cppjieba python包装器
pyjieba的Python项目详细描述
Python wrapper for cppjieba without any dependency, no need to compile by using gcc/c++
- Python 封装C++版本的jieba分词器,性能好,并且已经预编译,无需安装时编译,即拿即用。
- 已在Centos7、MaxOS10.13.6上测试 【Windows可能在某些情况下运行异常】。
- C++ 代码源自”结巴”中文分词的C++版本,CPPJieba
使用说明
pip安装
pip install pyjieba
手动安装
cd pyjieba
python setup.py install
接口使用
# 导入包importpyjieba# 初始化[可选]pyjieba.initialize()# 初始化时,可以指定自己的词典pyjieba.initialize(dictPath='yourpath',# 默认词典路径, 默认在包下路径/dict/jieba.dict.utf8userPath='yourpath',# 用户词典,默认在包下路径/dict/user.dict.utf8,多个词典使用英文分号;分隔开idfPath='yourpath',# IDF词典,默认在包下路径/dict/idf.utf8,提取关键词时使用stopwordsPath='yourpath'# 停用词词典,默认在包下路径/dict/stop_words.utf8)# 分词sentence='视觉中国再次致歉'pyjieba.cut(sentence)# 输出结果 ['视觉', '中国', '再次', '致歉']# 词性标注pyjieba.tag(sentence)# 输出结果 ['视觉/n', '中国/ns', '再次/d', '致歉/v']# 使用TFIDF提取关键词pyjieba.keywordsTFIDF(sentence,# 句子,可以是文本,也可以传入分词的结果例如 ['视觉', '中国', '再次', '致歉']topN=5,# 最多返回几个关键词, 可选allowedPOS='ns,n,vn,v,x'# 关键词属性限制, 可选)# 输出结果 [('致歉', 3.618718), ('视觉', 2.680915), ('中国', 1.009107)]# 使用Textrank算法提取关键词pyjieba.keywordsTextrank(sentence,# 句子,可以是文本,也可以传入分词的结果例如 ['视觉', '中国', '再次', '致歉']topN=5,# 最多返回几个关键词, 可选allowedPOS='ns,n,vn,v,x'# 关键词属性限制, 可选)# 输出结果 [('视觉', 1.0), ('致歉', 0.996685), ('中国', 0.992994)]
源码修改与编译命令
如果需要进行cppjieba源码修改,需要在三个平台上分别进行编译,生成新的so和dll文件
> cd cppjieba_src # windows > g++ jiebaapi.cpp -fPIC -I deps -I include -std=c++11 -shared -o ../pyjieba/libs/cppjieba_API_win64.dll # MaxOS > g++ jiebaapi.cpp -fPIC -I deps -I include -std=c++11 -shared -o ../pyjieba/libs/cppjieba_API_osx64.dll # Linux > g++ jiebaapi.cpp -fPIC -I deps -I include -std=c++11 -shared -o ../pyjieba/libs/cppjieba_API_linux64.so
Benchmark
- 平台 Centos7, 8核16G,Python3.6
- 小说文本长度:83791
- 循环分词次数:10
次数 | pyjieba | jieba |
---|---|---|
1 | 3147.3ms | 11137.5ms |
2 | 4692.9ms | 12792.7ms |
3 | 3257.1ms | 10830.7ms |
总体来看,pyjieba平均耗时为jieba的1/3。