中文文本没有天然的词边界,一句话里词和词之间是连续的汉字串。分词要做的事情,就是按照语义习惯把这串汉字切成一个个独立的词语。它是中文信息处理最靠前的一步,分词质量好不好,会直接影响后面的关键词提取、情感判断、搜索排序等任务的表现。面对不同的项目需求,选对分词方案往往比盲目追求复杂算法更重要。
这是最早被大规模应用的分词思路。核心逻辑很简单:先准备好一份包含大量词语的词典,再把待处理的文本按照一定规则去词典里匹配。根据匹配方向的不同,衍生出了正向最大匹配、逆向最大匹配和双向最大匹配几种变体。
正向最大匹配从句子左边开始,先试着用词典中最长的词去切分文本。比如处理“研究生命科学”时,它会优先考虑“研究”而不是“研究生”,从而得到“研究/生命/科学”的结果。逆向最大匹配则从句尾倒着扫描,在遇到某些以单字词结尾的歧义场景时,往往比正向匹配更准确。双向最大匹配则同时运行正反两个方向,最后比较切分结果的词数量或词频,选择更合理的那个。
这类方法的优势是极快的处理速度和极低的内存占用,特别适合对响应时间有严苛要求的系统。但它的短板也很明显:词典的完备性直接决定了分词效果。一旦遇到词典里没有的新词、人名或行业术语,就会切得乱七八糟。因此使用词典法,必须配套建设词典更新机制,持续把新出现的词汇补充进去。
统计方法不依赖人工维护的完整词表,而是从大规模语料中自动学习字与字之间的共现规律。隐马尔可夫模型(HMM)和条件随机场(CRF)是这条路线上的两个标志性成果。
HMM把分词问题转化为序列标注问题:每个汉字被赋予一个标签,比如词首、词中、词尾或单字成词,然后通过维特比算法找出概率最大的标签序列,从而完成切分。CRF则改进了HMM的强独立性假设,能够引入更丰富的上下文特征,因此在歧义词边界判断上通常表现更好。
统计模型还具备一定的“新词发现”能力:当一个生僻词在语料中反复出现,模型会逐渐将其识别为一个整体。需要留意的是,这类方法高度依赖训练语料的质量和领域匹配度。在法律、医疗等垂直领域效果不错的模型,直接拿去处理社交网络文本,准确率往往会下滑。同时,训练耗时和推理延迟也明显高于词典法,需要权衡精度与效率的关系。
随着计算资源的普及,深度学习模型已经成为当前中文分词技术的主流。以BiLSTM为代表的循环神经网络结构,能够综合考虑一个词前后的上下文信息,对语义的把控能力远超传统统计模型。而基于Transformer架构的预训练模型,如BERT及其衍生模型,通过在海量文本上预训练获得了深厚的语言理解能力,再在特定分词任务上做微调,就能显著提升切分准确率。
以“南京市长江大桥”为例,预训练模型能够理解“南京市”与“长江大桥”之间的语义修饰关系,正确切分为“南京市/长江大桥”,而不是机械地切出“南京/市长/江大桥”。这种对上下文语义的深层理解,是词典法和传统统计方法难以实现的。
不过,深度学习模型的缺点也相当突出。模型参数规模大,推理时延高,部署需要依赖GPU等高性能硬件。如果要跑在手机端或嵌入式设备上,往往还得借助模型蒸馏、量化、剪枝等手段进行压缩优化,这会带来额外工程成本。
不同类型的项目,对分词精度、速度、成本和可维护性各有偏重,适合的方案也各不相同。
选型时建议先做一个小规模的真实数据测试,对比不同方案在目标语料上的准确率和召回率,再结合线上环境的延迟要求做最终决定,不要盲目引入昂贵的深度学习方案。
业界最常用的评价指标是准确率、召回率和F1值。准确率表示切分出的词有多少是正确的,召回率表示正确的词有多少被切了出来,F1是两者的平衡综合。在实际项目中,你可以挑几百条有代表性的文本做人工标注,然后拿不同分词器的输出结果与之对比,量化出各自的数值。
不是。分词是把句子切成词语,词性标注是给每个切好的词语打上名词、动词、形容词等标签。分词是前置步骤,词性标注依赖分词的输出结果。很多工具会把两个功能打包在一起交付,但内部逻辑是独立的,词性标注的准确度会受到分词错误的连带影响。
开源工具在通用文本上的表现通常不错,但直接用于特定领域时,建议多做验证。比如处理电商商品标题或医疗病历,工具内置词典很可能覆盖不足。遇到这种情况,优先选择支持自定义词典或支持增量训练的框架,用领域语料做定向优化,效果会显著改善。
中文分词没有完美通用的方案,词典法胜在快、统计法强在自适应、深度学习赢在语义理解。务实的选择路径是:先明确项目对速度、精度和部署成本的容忍度,再用真实数据验证候选方案的性能差距。无论采用哪种方法,都要预留词典或语料的迭代空间,分词系统的长期效果取决于后续的持续维护与调优。