中文分词通用工具

共 1253字,需浏览 3分钟

 ·

2026-06-30 11:46

行业场景

中文分词旨在解决的最根本的产品问题是:消除中文文本的歧义,让机器能够准确理解用户的意图,从而提供精准的产品服务。

与英文等拉丁语系不同,中文句子中词与词之间没有天然的空格作为分隔符。这就导致机器在处理中文时,面临“字”与“词”的错位。

不同行业对分词的诉求差异巨大,以下是目前最典型、价值最高的行业场景:

搜索引擎与电商搜索

金融风控与智能投研

社交媒体与舆情监控

智能客服与对话机器人

医疗与法律垂直领域

功能介绍

设计了常量与配置模块、核心数据结构模块、工具类模块、索引与词图计算模块、核心分词逻辑模块。

常量与配置模块:定义工厂的 “基础规则” 和 “标准配件”,避免硬编码,统一管理配置。

核心数据结构模块:定义分词过程中需要的 “实体对象”,封装词的属性(位置、长度、权重、类型)。

工具类模块:提供底层工具能力 —— 字节流读取、字符类型判断(数字 / 字母 / 标点)。

索引与词图计算模块:构建 “词图”(文本的分词候选路径),用迪杰斯特拉算法计算最优分词路径(权重最低 / 语义最优)。

核心分词逻辑模块:整合所有模块,实现完整分词流程,对外提供分词接口。

项目实现

实现了词图与迪杰斯特拉算法、多策略分词、多类型标记、多特征分析、索引构建加速分词、高内聚低耦合架构

- 词图与迪杰斯特拉算法:对输入文本构建实时动态词图,然后使用Dijkstra算法推理出最优分词路径,最终实现歧义消除。

- 多策略分词:为了适应不同的使用场景以及业务需求,该方案提供了以下五种分词策略:

   1. SMART: 选最优路径(最短路径),优先长词 / 高权重词,主要用于在线搜索的Query端场景;

   2. MAX_WORD: 在SMART基础之上,列出以当前词的首字符开头的所有合法子词(包括一个字符的子词),主要用于离线索引的数据端场景;

   3. MAX_ALL_WORD: 在SMART基础之上,列出所有合法子词(包括一个字符的子词),主要用于离线索引的数据端场景;

   4. ALL_WORD: 在SMART基础之上,列出所有合法子词(不包括一个字符的子词),主要用于离线索引的数据端场景;

   5. FULL_WORD: 列出所有合法词(包括一个字符的词),主要用于离线索引的数据端场景

- 多类型标记:分词结果会给出合理的标记:普通词、短语(会进行嵌套标记)、数字、字母、标点符号。

- 多特征分析:构建词图时的词权重,同时考虑了频率、左右熵和凝固度(紧密度)。

- 索引构建加速分词:构建词库的双数组Trie树(DAT)索引,这种索引的查询时间复杂度是查询串的有效匹配长度,与索引的数据量大小无关,所以数据量越大该索引结构的优势越明显。

- 高内聚低耦合架构:整体架构遵循 “高内聚、低耦合”,每个模块只做一件事(配置定义、数据封装、工具处理、核心计算),便于扩展(比如新增分词策略、新增字符类型)。

浏览 8
1点赞
评论
1收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
1收藏
分享

手机扫一扫分享

分享
举报