中文不像英文那样天然以空格分隔词语,计算机要理解中文句子,必须先完成分词这一步。它是舆情监测、搜索引擎、智能客服等应用的基石,分词结果的好坏直接牵动后续任务的表现。当前业界常见的中文分词方案,大致可分为基于词典、基于统计和基于深度学习三大方向,不同方案在准确率、速度和资源消耗上各有取舍。
这类方法实现门槛不高,核心在于准备一份覆盖广泛的词库,再按既定规则将待处理文本与词库比对,完成切分。依据扫描方向不同,可以细分为正向最大匹配、逆向最大匹配以及双向最大匹配。
正向最大匹配从文本开头出发,每次取词库中最长词条的长度作为窗口,截取片段去比对,若命中则切分,否则缩短窗口重试。例如处理“研究生命科学”时,大概率切成“研究/生命/科学”。逆向最大匹配则从末尾向前扫描,对某些词尾歧义能起到规避作用。双向最大匹配综合两个方向的结果,通过比较切分出来的词数或词长来选择更合理的切分版本。
容易忽略的短板:这类方式面对新网络用语、专业术语显得被动。如果选用此路线,务必给词库建立定期补充机制,把业务涉及的独特词汇及时纳入。好在它的处理速度很快,在原型开发或对实时性要求极高的线上接口中,仍然有不错的生存空间。
统计方法跳出词库的硬性限制,改为从大规模语料中挖掘字与字之间的共现关系。其中,隐马尔可夫模型(HMM)与条件随机场(CRF)是具有代表性的技术。
HMM将分词视为序列标注,为每个汉字分配B(词首)、M(词中)、E(词尾)、S(单字成词)的标签,再用维特比算法找出整体最优的标注序列。CRF则不再假设标签之间相互独立,它能够灵活整合上下文中的丰富特征,对边界模糊的词汇判断更加稳健。
这一派系的优势在于对未登录词有一定识别余地,当某个新概念在语料中反复相邻出现时,模型会逐步将其视为一个整体。不过它的前提是准备大量与业务场景匹配的标注数据,且训练与预测的算力成本、耗时明显高于词典法。
算力成本降低之后,深度学习方案逐渐成为众多团队的首选,典型代表包括把分词视为序列标注任务的BiLSTM网络,以及以BERT为首的预训练语言模型。
BiLSTM借助正反两个方向读取上下文,能捕捉更远位置的句内关联,在这一任务上效果通常优于CRF。BERT此前已在海量通用文本上自学了词语的深层含义,接入下游任务时只需加一个薄薄的分类层做微调,便能在多个评价指标上刷新纪录。
以“南京市长江大桥”为例,预训练模型能结合整体语境领会出“南京市”修饰“长江大桥”的关系,自然切出“南京市/长江大桥”,而不会误判成“南京/市长/江大桥”。这正是简单规则与统计手段难以跨越的语义理解差距。
当然,这类模型的参数规模不小,运行依赖GPU算力,线上实时推断会带来更高的机器开销与响应延迟。若目标设备是移动端或需要毫秒级响应,往往要对模型做蒸馏、量化等压缩处理,在速度与精度之间寻找平衡点。
面对具体项目,挑选合适的分词方式比钻研算法细节更为紧迫。就词典法而言,部署省事、处理迅速,却难以招架新词;统计方法对未登录词友好些,但依赖高质量标注数据,训练成本偏高;深度学习方案准确率领先,但推理环节的资源消耗和时延是实际约束。若业务以短文本、领域术语固定为主,词典法足够胜任;若语料庞大且希望兼顾新词识别,可考虑统计或深度学习路线;若要求极端实时响应,则优先保证词典法,或以压缩后的轻量模型兜底。尚不确定时,不妨准备少量代表性测试集,用同一套数据跑一遍对照,让效果数据说话。
基本上无法及时识别。词典法只认词库里已有的词条,遇到刚流行的新词多半会切错。可行的办法就是经常更新词库,或者把网络热词单独整理成补充词表,在正式切分前先做一次快速替换或合并处理。
并不绝对。训练阶段使用GPU会显著节省时间,但在线上推理环节,通过模型蒸馏、参数量精简或使用合适的中小型预训练模型,CPU也完全可以承担一定并发量。关键是提前对响应时间和吞吐量做压测,找到硬件配置与模型规模的匹配点。
建议先做一次小批量人工标注,把错误切分样本分类:若是词库缺词,属于数据准备问题;若是同一句话在不同上下文中的切分反复变化,则更偏向模型或特征设计问题。对照错误类型再决定是扩充语料、调整特征还是更换模型架构。
没有哪一种分词方案能通吃所有场景,词典法胜在快与轻,统计法长于识别新词,深度法精于语义理解。动手实践时不必追求最复杂的模型,先明确业务对准确率、响应速度和硬件预算的要求,再制作小规模评测集验证几种备选方案的表现,最终选择那个在效果与成本之间最均衡的答案,才是务实可靠的落地策略。