中文分词工具
中文分词是中文NLP的第一步(因为中文不像英文有空格自然分隔)。目前开源界有很多成熟的工具,它们在算法原理、速度和精度上各有侧重。
第一类:入门首选 & 通用型 (基于统计 + 词典)
如果你只是想快速对文本进行分词,或者做简单的词频统计,选这个。
1. Jieba (结巴分词)
这是目前Python生态中最流行、使用最广泛的分词组件。
- 特点: 安装极其简单,社区活跃,API友好。
- 核心算法:
- 基于前缀词典: 构建有向无环图 (DAG),利用动态规划查找最大概率路径。
- HMM (隐马尔科夫模型): 对于词典中未登录的词(新词),利用HMM模型(基于字的角色标注)进行发现。这就是马尔科夫假设的直接应用。
- 适用场景: 快速原型开发、情感分析、关键词提取。
- 代码示例:
import jieba seg_list = jieba.cut("我来到北京清华大学") print("/ ".join(seg_list))
第二类:工业级 & 全能型 (传统统计 + 深度学习)
如果你需要处理大规模数据,或者需要同时进行词性标注 (POS)、命名实体识别 (NER),选这些。
2. HanLP
由一系列模型构成的NLP工具包,在Java和Python界都非常有名。
- 特点: 功能极其强大,不仅是分词,还包括句法分析、文本分类等。它有两个版本:
- 1.x 版本: 基于传统统计模型(HMM, CRF),速度快,内存可控。
- 2.x 版本: 基于深度学习(TensorFlow/PyTorch),精度世界领先,但对硬件有要求。
- 核心算法:
- 提供了多种分词模式:最短路分词(N-shortest)、CRF分词(条件随机场,比HMM精度更高)、感知机分词。
- 适用场景: 企业级搜索、知识图谱构建、复杂的NLP流水线。
3. LTP (Language Technology Platform)
哈工大社会计算与信息检索研究中心研发。
- 特点: 学术界尤其是中文NLP领域的标杆之一。最新版基于PyTorch,使用预训练模型,效果极佳。
- 核心算法: 深度学习序列标注模型(基于Transformer/BERT等架构)。
- 适用场景: 科研、需要高精度的句法分析。
第三类:特定领域 & 高精度 (深度学习定制)
如果你处理的是特定领域(如医疗、微博、新闻),通用分词器可能效果不佳。
4. PKUSEG
北京大学语言计算与机器学习研究组研发。
- 特点: 专为多领域设计。它提供了不同领域的预训练模型(新闻、网络、医药、旅游)。
- 核心算法: 基于特征的序列标注模型。相比于Jieba,它在细分领域的未登录词识别上更准。
- 适用场景: 微博文本分析、医药文本挖掘。
5. LAC (Lexical Analysis of Chinese)
百度开源的词法分析工具。
- 特点: 速度非常快,且集成了分词、词性标注和实体识别。
- 核心算法: Bi-GRU + CRF。这完美结合了深度学习(RNN变种)处理长距离依赖的能力和CRF(概率图模型)处理标签转移约束的能力。
- 适用场景: 对性能(QPS)有要求的高并发业务。
总结与技术选型建议
| 工具 | 核心技术流派 | 速度 | 精度 | 推荐场景 |
|---|---|---|---|---|
| Jieba | 词典 + HMM | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 快速上手、简单的文本分析、教学演示 |
| HanLP | CRF / 感知机 / BERT | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 生产环境、需要全套NLP功能、Java/Python混用 |
| Lac | Bi-GRU + CRF | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 工业级应用、追求速度与精度的平衡 |
| PKUSEG | 序列标注 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 特定领域(如医疗、社交媒体)的文本分析 |
建议:
如果是个人学习或小项目,闭眼选 Jieba;如果是公司做产品或科研追求SOTA(State of the Art),首选 HanLP 2.x 或 LTP。

浙公网安备 33010602011771号