中文文本处理的第一步,通常是分词。中文句子中词与词之间没有空格,机器要理解语言,必须先判断哪些字该组合成词。分词的质量会直接影响后续的搜索、推荐、情感分析等任务的效果。选对分词方案,比盲目堆叠复杂模型更关键。
词典分词实现门槛低、执行速度快,核心机制是依靠词表加字符串匹配。具体操作方式包括正向最大匹配、逆向最大匹配以及双向最大匹配。以"研究生命起源"为例,正向匹配可能切出"研究/生命/起源",如果词典覆盖不全,可能误切为"研究生/命/起源",此时双向匹配能在一定程度上纠正误差。
让词典法发挥更好效果,需注意以下几点:词表必须持续更新,遇到网络新词或行业术语时,未收录的词会被拆散成单字,导致召回率下降;处理长文本时匹配效率会下降,建议使用哈希表或Trie树加速查找;词典法对未登录词基本无解,遇到人名、地名、新术语时表现有限。
统计方法将分词视为给每个字打标签的任务,常用标签有B(词头)、M(词中)、E(词尾)、S(单字成词)。隐马尔可夫模型(HMM)和条件随机场(CRF)是这一派的代表技术。HMM依靠维特比算法寻找概率最高的标签序列,CRF则能利用更长上下文信息,不做过强的独立假设,在边界识别上更细致,传统方法中表现一直稳定。
值得关注的是,统计模型对未登录词有一定容忍度,某个词出现次数足够多时,模型能逐渐学会将其视为整体。但这需要充足且领域匹配的训练数据支撑,同时训练调参耗时较长,推理速度也慢于词典法。如果手中没有像样的标注语料,强行使用统计模型反而容易出问题。
深度学习方案在工业界日益普及,主力包括BiLSTM和BERT等预训练模型。BiLSTM通过双向结构捕捉上下文,比CRF更能应对长距离依赖;BERT依靠大规模通用语料预训练,微调后即可在分词任务中取得高分。像"南京市长江大桥"这类句子,深度模型能理解语义,切出"南京市/长江大桥",而不是误判为"南京/市长/江大桥"。
但深度模型的短板同样明显:参数量大、显存占用高、在线推理延迟高,很难直接满足毫秒级响应需求。要应用于生产环境,通常需配合模型蒸馏、量化压缩等手段。此外,它对训练数据质量依赖较强,换一个领域可能出现性能下滑,这是团队容易忽视的坑点。
选择分词方案,不能只看准确率,要结合业务特点综合权衡。
实际案例供参考:做电商评论情感分析时,产品名和新词频繁出现,建议优先考虑统计或深度路线;如果是法律文书的精确切分,领域语料充足时,用CRF加词典兜底也足够。反过来,日志分析、关键词提取这类对速度敏感但数据量大的场景,词典法配上动态词库更新往往最务实。
可以。实践中常见做法是深度模型或统计模型做主分词,词典法做后兜底或前处理。例如先用CRF切分,再用领域词典修正错误边界,这能兼顾准确率与针对性,且不会显著增加开发成本。
核心手段是动态词库更新。可以定期从业务日志中挖掘高频未登录词,人工审核后加入词表。另外,配合统计方法对候选词进行打分过滤,也能提升新词识别率。
不一定。在通用测试集上深度模型占优,但在特定领域、数据不足或响应要求极高的场景,词典法的稳定性和速度反而更合适。选型应基于业务实际,而非单一指标。
分词方案没有绝对的好坏,只有适合与否。动手前先梳理自己的需求:准确率优先还是速度优先,有没有标注语料,团队开发能力如何。建议先用词典法搭出基线,再根据业务瓶颈决定是否引入统计或深度模型,这样既能控制成本,也能保证上线效果。