中文分词处于文本处理流程的最前端,它决定着计算机能否准确理解句子的含义。由于汉语词与词之间没有天然空格,分词算法必须依靠规则或模型来推算边界。分词结果的优劣会直接影响后续的词性标注、文本分类和信息抽取等环节,因此了解各类分词手段的特性并据此做出选型,是搭建中文NLP应用时的重要一步。
这类方法依托一份预先整理好的词表,通过字符串比对来完成词的识别。因为不涉及复杂计算,它的执行速度很快,实现门槛也低,在工程实践里相当常见。依据扫描路径的区别,常见的做法有三种:
此类方案的明显短板是对新词的无力感。一旦遇到词表之外的人名、地名或网络流行语,就容易切得七零八落。如果你的文本来源是新闻或社交平台,建议定期将高频新词整理后加入词库,否则随着内容更新,分词的召回表现会持续下滑。
避坑提示:面对"乒乓球拍卖完了"这类句子,词典法只能提供"乒乓/球拍/卖完/了"或"乒乓球/拍卖/完/了"两种可能,要消除这种歧义,必须引入上下文语境。
统计路线不指望词表全,而是从已标注的语料里捕捉汉字之间的搭配规律。其中较有代表性的模型包括隐马尔可夫模型与条件随机场。
隐马尔可夫模型把分词看成一个给每个字贴标签的过程,常用的标签集是B(词首位)、M(词中位)、E(词尾位)、S(单字成词),最终通过维特比算法找出概率最高的标签序列。这种结构运行轻量,但模型假设相邻观测相互独立,对上下文信息的利用有限。条件随机场则打破了这种约束,它允许引入字的前后缀、单字成词频度等多种特征,因此在描述复杂词边界时更胜一筹。
这类方法的核心收益在于能识别出一定范围内的未登录词:只要某串字符在语料中反复共现,模型就有机会把它当成一个整体来学习。不过,它对数据的质与量都更为挑剔,并且训练及推理所需的时间远高于词典法。若可用标注数据稀少,模型的表现会明显受限。
在大算力普及的背景下,神经网络逐渐占据了分词研究的前沿。其中两条主流技术路线值得关注。
一是双向长短期记忆网络这类序列模型,它让每个字的表示同时吸收左右两侧的信息,在理解长距离前后文方面比统计模型更强。二是预训练语言模型,它在海量未标注文本上先学习通用语义,再针对分词任务加一个简单的输出层做微调,即可达到很高的准确率。以"南京市长江大桥"为例,依赖完整句意,模型能轻松得出"南京市/长江大桥",而不是拆成"南京/市长/江大桥"。
深度方案的精度虽高,却无法在任何场景下无脑选用。它动辄拥有数千万参数,对GPU显存与实时响应速度都有硬性要求。若你的任务是离线跑批、算力充裕,那么深度学习方案是理想选择;若面对的是高并发线上调用,则轻量词典法或小型统计模型往往更能保证稳定的服务体验。
为了让选型过程更直观,可以从几个核心维度做横向比较:
实际项目中,不少团队也会采用混合策略——先用词典法快速处理,再将高频未匹配片段送入深度模型做二次校正,以此在效率与精度之间寻找平衡。
因为两种扫描的优先切分顺序不同。汉语中不少短语的歧义来源于局部结构,例如"结合成分子"既可读作"结合/成/分子"也可读作"结合成/分子"。正向与逆向在遇到这类结构时,命中词典的先后次序存在差异,自然会产生不同结果。双向匹配正是利用这种差异性,通过规则去选择一个更符合语言习惯的方案。
有帮助,但作用方式不同。统计模型虽然能够减少对静态词表的依赖,但若领域语料不够丰富,模型仍可能把"华为鸿蒙"这类专有名词切开。此时将领域专名以外部词典形式注入,强行保留合并结果,可显著提升特定行业文本的切分质量,同时减小对更大规模语料的依赖。
常见原因有三类:一是语料来源与目标文本领域不一致,比如用新闻语料切分医疗记录,效果自然偏差;二是预处理环节引入噪声,如未清理的标点和多个空格会干扰标签预测;三是过度追求模型复杂度,忽视硬件推理时长,造成实际可用性差。建议从一份贴近真实场景的样本开始,先人工核对输出再逐步调优。
分词系统的选型没有唯一答案,关键取决于业务场景的约束。如果追求极快的响应速度且文本领域固定,优先考虑维护良好的词典法;如果手头有充足的高质量标注语料,统计模型能带来更高的新词容纳度;若部署资源和算力充足、对精度要求极高,深度学习方案则是最佳选项。建议先用你自己的真实语料对这三类方案做小规模测试,对比准确率、内存占用和单句耗时三项指标后再做最终决定。