如何用Java实现中文分词
- 后端开发
- 2025-06-21
- 9
怎么使用Java进行中文分词
中文分词是中文自然语言处理的基础环节,它将连续的中文字符序列切分为有意义的词语组合(我爱编程”切分为“我/爱/编程”),以下是使用Java实现中文分词的详细方法:
常用Java中文分词工具
-
HanLP
- 开源地址:https://github.com/hankcs/HanLP
- 特点:支持多种分词模式,词性标注,命名实体识别
- Maven依赖: <dependency> <groupId>com.hankcs</groupId> <artifactId>hanlp</artifactId> <version>portable-1.8.4</version> </dependency>
-
Ansj分词
- 开源地址:https://github.com/NLPchina/ansj_seg
- 特点:轻量高效,支持自定义词典
- Maven依赖: <dependency> <groupId>org.ansj</groupId> <artifactId>ansj_seg</artifactId> <version>5.1.6</version> </dependency>
-
jieba结巴分词(Java版)

- 开源地址:https://github.com/huaban/jieba-analysis
- 特点:移植自Python,支持新词发现
- Maven依赖: <dependency> <groupId>com.huaban</groupId> <artifactId>jieba-analysis</artifactId> <version>1.0.2</version> </dependency>
使用HanLP分词的完整示例
import com.hankcs.hanlp.HanLP; import com.hankcs.hanlp.seg.common.Term; import java.util.List; public class HanLPDemo { public static void main(String[] args) { // 待分词的文本 String text = "清华大学坐落在北京中关村科技园区"; // 标准分词(含词性) List<Term> termList = HanLP.segment(text); // 输出结果 System.out.println("分词结果:"); for (Term term : termList) { System.out.printf("%s/%s ", term.word, term.nature); } } }
输出:
清华大学/nt 坐落/v 在/p 北京/ns 中关村科技园区/ns
Ansj分词实战代码
import org.ansj.domain.Result; import org.ansj.splitWord.analysis.ToAnalysis; import org.ansj.domain.Term; public class AnsjDemo { public static void main(String[] args) { String text = "自然语言处理是人工智能的核心技术之一"; // 基础分词模式 Result result = ToAnalysis.parse(text); System.out.println("分词结果:"); for (Term term : result.getTerms()) { System.out.print(term.getName() + "/"); } } }
高级功能与优化策略
-
自定义词典(以HanLP为例)
在src/main/resources下创建custom.dic文件:
区块链 1000 n 深度学习 1000 n
代码加载词典:

-
停用词过滤
移除无意义的词(的、了、是):
List<Term> filtered = termList.stream() .filter(term -> !"的|了|是".contains(term.word)) .collect(Collectors.toList()); -
性能优化
- 预加载模型(避免首次调用延迟): HanLP.preload(); // 初始化分词器
- 多线程环境下使用ThreadLocal重用分词器实例
-
新词识别失败
解决方案:添加自定义词典或使用支持新词发现的工具(如jieba)

-
专业术语切分错误
- 示例:”机器学习”被拆分为”机器/学习”
- 处理:在词典中强制添加”机器学习”
-
歧义消解
- 如”乒乓球拍卖完了”
- 优化:选择支持N-最短路径分词的算法(HanLP默认支持)
- HanLP: https://github.com/hankcs/HanLP
- Ansj: https://github.com/NLPchina/ansj_seg
词典数据来源于各项目默认词典及互联网公开语料库。
分词工具选型建议
工具 适用场景 优势 HanLP 学术研究、复杂NLP任务 功能全面,精度高 Ansj 高并发生产环境 速度快,内存占用低 Jieba 迁移Python项目,简单分词需求 新词发现能力强
Java中文分词可通过成熟的开源工具快速实现,选择时需平衡精度、速度与业务需求,建议初次使用者从HanLP开始,其完善的文档和社区支持能显著降低学习门槛,生产环境部署需注意词典热更新、线程安全等工程细节。
引用说明
本文代码基于HanLP 1.8.4、Ansj 5.1.6官方文档实现,开源项目地址:
常见问题处理