中文分词是自然语言处理的基础环节。英文单词之间有空格作为天然分隔符,而中文句子中的词语边界模糊,必须借助算法来判定。分词结果的质量直接左右着后续的文本分类、情感分析以及搜索引擎的召回效果,因此选择合适的分词方案是每个 NLP 项目都绕不开的课题。
这类方法依赖预先构建的词典,通过设定匹配规则在文本中切分词语。其典型代表是最大匹配法,即从句子一端开始,尝试用词典中最长的词进行匹配,匹配成功则切分,否则缩短词长继续尝试。正向最大匹配从左侧起步,逆向最大匹配则从右侧处理。
实际工程中常将正向与逆向匹配结合执行,若二者结果出现分歧,会依据"切分后总词数更少"或"单字更少"等启发式原则确定最终分词。这种方案的优点是部署简便、响应速度极快,通常能达到毫秒级处理;但其对词典中未收录的新词、专有名词无能为力,且处理歧义字段时准确率偏低。
例:若词典含有"南京市"和"长江大桥",句子"南京市长江大桥"在正向匹配下易被错分为"南京市/长江/大桥",这类经典歧义是规则方法难以彻底解决的。
统计方法放弃了对固定词库的绝对依赖,转而通过分析大规模语料中汉字相邻共现的频率来推测词语边界。这类算法通常将分词转化为序列标注任务,为每个汉字标注其在词语中的位置,例如 B 代表词首字、M 代表词中字、E 代表词尾字、S 代表单字成词。
隐马尔可夫模型(HMM)和条件随机场(CRF)是这一阶段的代表性工具。HMM 假设当前状态只与前一个状态相关,建模相对简单;CRF 则在标注时能够兼顾整个句子的上下文特征,对序列依赖关系的刻画更为细腻,在歧义词消解和少量新词识别上的表现普遍优于 HMM。
使用统计模型需要预先准备大规模带标注的语料用于训练,人力成本不低。同时,这类模型对出现频率极低的生僻词仍会失效,泛化能力存在天花板,且在线预测时的计算开销高于词典方法。
神经网络模型通过端到端学习直接捕捉文本的深层语义特征,省去了人工设计特征工程的过程。主流的框架是使用双向长短期记忆网络(BiLSTM)或 Transformer 编码器将每个汉字转化为包含丰富上下文信息的词向量,再通过 CRF 层解码出全局最优的标签序列。
近年来,以 BERT 为代表的预训练语言模型极大提升了分词的性能上限。这类模型利用海量无标注文本进行预训练,掌握了较强的通用语义知识,在下游分词任务中仅需轻微微调即可达到不错的效果。尤其对开放域文本中的网络流行语、罕见人名地名,其识别能力是以往所有方法都无法企及的。
必须权衡的是,神经网络模型通常体积庞大,推理阶段需要 GPU 加速才能满足生产环境时延要求。如果项目部署在纯 CPU 环境或移动端,这类方案的落地难度会显著上升。
分词工具没有绝对的好坏,只有是否契合当前的业务约束。决策时应主要考量算力预算、响应时间要求以及文本领域的开放程度。
对延迟极其敏感、运行环境资源受限的项目,例如嵌入式设备或高并发短文本过滤服务,优先考虑基于词典的正向最大匹配,配合一份经过针对性补充的行业专业词典,能够以较低的算力成本换取可接受的准确率。
面向新闻、法律、金融等相对规范垂直领域的项目,若已有足够规模的标注语料,采用 CRF 或 BiLSTM 模型可以在准确率和推理速度之间取得较好的平衡,也具备较强的可解释性。
处理社交媒体评论、搜索 query 等开放多变的文本时,应优先选择基于 BERT 微调的预训练模型,虽然算力开销较大,但对新词和复杂歧义的耐受性最强。
一个实用的避坑建议是:在其功能不能满足需求之前,优先尝试 Jieba、HanLP 这类开源工具快速搭建基线效果。只有当基线暴露出严重的歧义或未登录词问题,再针对性评估是否需要切换为统计模型或神经网络模型,避免在项目早期陷入复杂的模型调参陷阱。
难点主要体现在两个方面。其一,中文语句中词与词之间没有空格,边界模糊;其二,大量歧义词和未登录词(如新出现的网络用语、专属名词)无法被词典穷尽,仅靠规则或统计概率很难做到完全准确。
速度和算力直接相关。基于词典的匹配法通常可做到毫秒级响应,无需额外算力;CRF 统计模型在 CPU 上也能保持不错吞吐,但需要前期训练;BERT 等深度模型在 CPU 上往往需要数十毫秒甚至更长,依赖 GPU 才能达到高性能生产要求。
核心指标是分词准确率、召回率以及 F1 值,同时还应注意未登录词召回率。工程上还会关注处理速度(每秒处理字数)和资源占用。建议用与自身业务相似的测试语料进行验证,切莫只依赖通用评测数据。
中文分词算法的演进经历了从词典规则到统计模型再到深度学习三个阶段。当下项目选型并未出现一种通吃所有场景的方案,务实做法是先厘清算力和性能约束:资源紧张且文本领域固定则锚定词典法,语料充足可引入 CRF,开放域高准确率需求则直接拥抱 BERT 微调。无论选择哪条路线,建议先以主流开源工具快速建立基线,明确痛点后再做有针对性的升级,避免盲目追逐复杂模型带来的成本和风险。