中文分词是中文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。
