中文文本在书写时词与词之间没有空格分隔,想要让计算机理解一句话的含义,第一步就是正确地把连续的汉字切分成一个个有意义的词语,这个环节就是中文分词。切分结果的准确与否,直接影响后续的词性标注、文本分类、信息检索等自然语言处理任务的整体效果。理解不同分词方法的实际表现和适用场景,有助于在项目中做出合理选型。
这是最朴素也最容易上手的一种思路。它的核心是预先准备一个包含大量常见词语的词库,然后用待处理的文本去和词库做匹配,从而完成切分。根据扫描顺序和匹配规则的不同,常见的实现形式有正向最大匹配、逆向最大匹配和双向最大匹配三种。
正向最大匹配是从句子的开头向右扫描,每次尝试按照词库中最长的词条长度来截取文本进行比对。比如处理“研究生命起源”这句话,这种策略会优先切出“研究/生命/起源”,而不是错误地切成“研究生/命/起源”。逆向最大匹配的方向则完全相反,它从句子末尾向左处理,在遇到某些结尾为单字词的场景时往往表现更好。双向最大匹配则是把两种方式的结果都跑一遍,再根据切出的词条数量或词频等指标,选出一个更合理的切分组合。
实用提醒:如果项目处于快速原型阶段,或者对响应速度有严格要求,词典法凭借毫秒级的处理速度依然是很好的选择。前提是需要建立一套可以持续维护和更新的词表,把新出现的人名、网络热词和垂直领域术语及时补充进去,否则遇到新词时的切分效果会比较差。
这类方法不把宝全押在词典上,而是从大量真实语料里统计字与字之间一起出现的规律,来判断哪些字组合在一起更像一个词。隐马尔可夫模型(HMM)和条件随机场(CRF)是两种极具代表性的统计路线。
HMM把分词问题转化为给每个汉字打标签的任务,比如用B代表词的开始位置,M代表词的中间部分,E代表词的结尾,S代表独立的单字词,然后通过维特比算法找出整体概率最高的标签序列,从而推导出词语边界。CRF则更灵活一些,它不像HMM那样假设每个字的状态只跟自身相关,而是可以把前后文的各种特征组合都纳入考虑,因此在处理复杂的边界情况时,准确率通常会更高。
这种方法的优势在于具备一定的发现新词能力。当语料中“生成式人工智能”反复以固定顺序高频出现时,模型会逐渐学会把它当成一个整体来切分。不过代价也很明显:需要准备大量与业务领域匹配的高质量标注数据用来训练,而且模型的训练时间和预测耗时都远远超过词典法。
算力成本降低之后,深度学习模型逐渐成为中文分词的主流工具。其中具有代表性的架构包括双向长短期记忆网络(BiLSTM)以及以BERT为代表的预训练语言模型。
BiLSTM通过同时从正向和反向两个方向读取句子,把每个字的上下文信息充分融合进特征表示里,在处理跨度较长的语义依赖时,它的表现比CRF更有优势。而BERT这类预训练模型,更是在海量无标签文本上通过遮词预测等任务提前学到了丰富的语言知识,下游在做分词时,只需要在模型顶层加一个简单的分类层做微调,就能在公开评测数据集上拿到领先的结果。
一个经常被拿来举例的场景是切分“南京市长江大桥”。基于深度学习的模型可以从上下文语义中理解“南京市”和“长江大桥”之间的限定关系,从而正确切出“南京市/长江大桥”,而不会掉进“南京/市长/江大桥”这种歧义陷阱里。这种语义层面的判断能力,是纯粹的词典匹配和传统统计方法难以做到的。
但深度模型也并非没有短板。它的参数规模非常大,推理时需要占用GPU资源,响应时间通常比前两类方法慢不少,线上部署和运维的硬件成本也更高。如果目标环境是手机等移动设备,或者业务要求几十毫秒内的响应,通常需要考虑模型压缩、蒸馏等方式来降低开销。
在实际的工程项目中,以上三种方法并不是互斥的,很多成熟的分词工具会混合使用。比如先用词典法做快速预切分,再叠加统计模型或者深度学习模型来处理歧义和未登录词。
从处理速度来看,词典法最快,统计模型次之,深度模型最慢。从切分准确度,尤其是对歧义和新词的处理能力来看,顺序则恰好相反。在实际选型时,可以参考以下思路:
难点主要集中在两方面:一是歧义切分,比如“结婚的和尚未结婚的”这句话,可以理解为“结婚/的/和/尚未/结婚/的”,也可以理解为“结婚/的/和尚/未/结婚/的”,需要结合上下文语义才能确定哪一种是正确的;二是未登录词识别,即词库里没有收录的新词、人名、机构名或专业术语,这些词在传统的词典法里很难被正确切分。
建议先判断问题出在词汇覆盖还是歧义处理上。如果错误集中在某类特定的专业名词或新词上,优先更新词表或增加自定义词典。如果错误集中在对一些常见句式的切分上,特别是那些需要结合整句话语义才能判断的情况,那么可能需要考虑引入统计模型或深度学习模型来提升效果。
需要。任何分词方案都不是一劳永逸的,语言始终在变化,新词不断涌现。如果业务有持续增长的内容量,那么词表维护、模型训练数据的更新都是长期工作。建议在系统设计阶段就预留好词表管理和模型版本迭代的接口,并建立一套从中发现典型分错案例并持续反馈改进的闭环机制。
中文分词没有放之四海皆准的完美方案,词典法、统计模型和深度学习方法各有其擅长的场景和明确的局限性。建议在动手之前,先花时间梳理自己的数据特点和性能指标,再据此选择合适的方案。对于大多数实际应用,优先考虑一款成熟的混合策略分词工具,并在上层针对性地补充自定义词典,往往能够用最小的成本换来最理想的效果。