cppjieba python包装器

pyjieba的Python项目详细描述


996.icuLICENSEpython

Python wrapper for cppjieba without any dependency, no need to compile by using gcc/c++

  1. Python 封装C++版本的jieba分词器,性能好,并且已经预编译,无需安装时编译,即拿即用。
  2. 已在Centos7、MaxOS10.13.6上测试 【Windows可能在某些情况下运行异常】。
  3. 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

  1. 平台 Centos7, 8核16G,Python3.6
  2. 小说文本长度:83791
  3. 循环分词次数:10
次数pyjiebajieba
13147.3ms11137.5ms
24692.9ms12792.7ms
33257.1ms10830.7ms

总体来看,pyjieba平均耗时为jieba的1/3。

鸣谢

  1. CPPJieba “结巴”中文分词的C++版本
  2. jieba 结巴中文分词

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?