中文分词是把连续的汉字序列切分成独立词语的基础处理步骤。由于中文词语之间没有天然空格,分词质量直接影响文本分类、信息检索和情感分析等后续任务的表现。面对多种分词方案,了解各方法的工作逻辑和适用边界,才能在实际项目中选出最合适的工具。
这是最早出现也最容易上手的分词方式,核心是准备一个词条集合,再按设定规则把文本和词库进行比对切分。根据扫描方向,常见有正向最大匹配、逆向最大匹配和双向最大匹配三种做法。
正向最大匹配从句子左边开始,每次取出能匹配到的最长词。比如“研究生命科学”这句话,若词典有“研究”和“生命”,正向匹配会先切出“研究”,再处理“生命科学”。逆向最大匹配从右边扫描,处理一些动宾结构歧义时往往更稳。双向匹配则同时执行两种扫描,再结合词频或规则决定最终分词结果。
注意:使用词典法不能只靠静态词表“一劳永逸”。需要建立词库更新流程,随时补充新词、专业术语和地名,否则切分生僻词时错误率会明显升高。判断词库是否够用,可以拿真实业务语料做小范围测试,观察未登录词的出现比例。
统计分词不再依赖完整词表,而是从大批标注语料中学习字与字的组合规律。它把分词当成序列标注任务,给每个汉字标记它在词里的位置,比如词首、词尾或单字成词。
隐马尔可夫模型(HMM)是这类方法的早期代表,通过维特比算法寻找概率最高的标注路径。它的优点是模型小、解码快,但缺点在于假设相邻状态独立,难以利用长距离上下文。条件随机场(CRF)则引入整个序列的上下文特征,不依赖强独立性假设,在复杂边界的处理上准确率更高,代价是训练速度更慢。
这类方法能识别部分未登录词:当一个新组合反复稳定出现,模型会逐步将它当作整体输出。实际应用时要注意训练语料的领域匹配度,用通用语料训练的模型去切分医疗或法律文本,效果可能不理想。
深度学习分词已成为当前的主流方向。早期的经典结构是BiLSTM叠加CRF,BiLSTM抽取句子前后双向特征,CRF保证输出标签序列合法。后来预训练语言模型兴起,BERT等Transformer架构通过大规模文本自监督学习,获得了深层的语义理解能力,再在其顶部接一个序列标注层微调即可完成分词。
以“南京市长江大桥”为例,传统方法很难分辨“南京市/长江大桥”还是“南京/市长/江大桥”。基于语义的模型能结合上下文判断修饰关系,从而正确切分。这类方案对复杂歧义句和生僻词的容忍度明显优于前两类。
它的短板在于工程开销:模型参数多、推理慢,在手机端或高并发实时场景下部署困难。如果业务对延迟敏感,可以考虑先用轻量词典法做初切,再用深度学习模型做二次校正或歧义消解,以平衡速度与精度。
生产环境中很少只用单一算法,更常见的做法是让多种方法协同工作。词典法负责快速初切,统计或深度模型负责处理歧义和未登录词,最后再用规则修正特定领域的切分结果。
判断方案是否合适,建议对比三类指标:切分准确率(可抽样人工核对)、处理速度(每秒处理字符数)以及维护成本(词库更新或模型重训的频率)。不要把单次实验的准确率当作唯一标准,要考察在真实流量和数据分布下的稳定性。
垂直领域且词表较全时,词典法简单可控,维护成本低。但若领域内新词多且更新快,统计法更容易发现高频新组合。无标注数据时,借助少量规则配合词典法是务实选择。
不一定。效果取决于数据量、领域匹配度和算力。小样本场景下CRF可能和BERT效果接近,但BERT训练成本高很多。先评估数据规模和业务需求,再做选择更稳妥。
可以随机抽取文本,人工标记标准切分结果,与模型输出对比计算精确率和召回率。另外结合下游任务表现来判断,比如搜索时看召回率是否变化,情感分析时看结论是否更稳定。
中文分词没有“万能算法”,核心是匹配业务需求。低算力冷启动选词典法,有标注资源后引入CRF或深度学习提升精度,复杂场景用混合方案平衡速度与效果。建议从小规模实验开始,先定评估指标,再逐步优化词库和模型,不要一上来就追求最重型的方案。