真实面经题目 · 原创解析

分词算法有哪些?

分词算法解决的是把连续文本切成有意义的词或子词单位。中文没有天然空格,因此分词既要处理词典匹配,也要处理歧义、未登录词、新词、专名、领域词和下游任务适配。常见算法包括基于词典的正向/逆向/双向最大匹配、DAG 加动态规划、HMM/CRF 序列标注、统计语言模型、深度学习序列标注,以及 BPE、WordPiece、SentencePiece 等子词切分方法。

出现于:阿里巴巴 · 算法

60 秒回答模板

可以按算法思想分类回答。第一类是基于词典的匹配算法,例如正向最大匹配、逆向最大匹配和双向最大匹配,优点是实现简单、速度快、可控性强,适合规则明确、词表稳定的业务场景,缺点是依赖词典,遇到新词和歧义容易出错。第二类是 DAG 加动态规划,把句子中所有可能成词的片段构成有向无环图,再根据词频、概率或代价函数选择全局最优路径。第三类是统计序列标注,例如 HMM 和 CRF,通常用 B/M/E/S 或 B/I/O 标注体系建模字到词边界,能结合上下文处理歧义和一定程度的新词识别。第四类是统计语言模型或 n-gram 方法,通过最大化切分序列的概率选择更合理的结果。第五类是深度学习序列标注,例如 BiLSTM-CRF、CNN-CRF、Transformer-CRF 或预训练模型微调,能利用上下文语义,但训练和推理成本更高。第六类是子词切分,例如 BPE、WordPiece 和 SentencePiece,它们更适合神经网络模型输入表示,能缓解未登录词问题,但不完全等同于传统中文分词。

考点 分词问题本质
主线 词典匹配方法
易错点 只回答正向匹配、逆向匹配、HMM、CRF,没有解释每种…

深入解析

01

分词问题本质

中文分词不是把句子按固定长度切开,而是在多个可能切分之间选择最符合语义、统计规律和业务需求的一种。例如“研究生命起源”可能被切成“研究/生命/起源”,也可能被误切成“研究生/命/起源”,这体现了分词的核心难点:歧义。另一个难点是未登录词,也就是词典或训练语料中没有出现过的词,例如新人名、新地名、新产品名、网络热词和行业术语。

02

词典匹配方法

基于词典的分词方法依赖已有词表,把输入句子和词典中的词进行匹配。正向最大匹配从左到右扫描,每次尽量匹配最长词;逆向最大匹配从右到左扫描;双向最大匹配同时执行正向和逆向,再根据词数更少、单字词更少、总词频更高等规则选择结果。这类方法实现简单、速度快、容易加入业务词典,适合搜索召回、日志处理、关键词抽取预处理等场景。缺点是依赖词典覆盖率,对新词和复杂歧义较弱。

03

DAG 动态规划

DAG 加动态规划会先根据词典枚举句子中所有可能成词的片段,把字符位置看成节点,把可能的词看成边,从而形成有向无环图。随后为每条边赋予权重,权重可以来自词频、词概率、负对数概率或业务代价,再通过动态规划寻找总代价最小或总概率最大的路径。这种方式的优势是全局最优,不会像最大匹配那样只看当前最长词;缺点是仍然依赖词典和词频估计,对未登录词需要结合 HMM、规则或新词发现模块补充。

04

HMM 与 CRF

HMM 和 CRF 通常把中文分词建模为序列标注问题。常用标注体系包括 B、M、E、S,其中 B 表示词首,M 表示词中,E 表示词尾,S 表示单字成词。HMM 通过初始概率、转移概率和发射概率建模,再用维特比算法解码最可能的状态序列,实现相对简单,也能识别部分未登录词。CRF 是判别式模型,可以融合当前字、前后字、字形、词典特征等上下文信息,并对整句标注序列进行全局建模,通常比 HMM 更适合处理边界歧义。

05

统计语言模型

统计语言模型方法把分词看成候选切分序列的概率选择问题。系统先生成多个候选切分,然后计算每种切分的概率,选择概率最大的结果。概率可以来自一元词频、二元词共现、三元语言模型或更复杂的上下文模型。这类方法能利用语料统计规律处理一部分歧义,但对语料领域、平滑方法和数据稀疏问题敏感。如果语料来自新闻领域,直接迁移到医疗、法律、电商或社交文本,切分质量可能明显下降。

06

深度学习方法

深度学习分词通常仍然采用序列标注框架,但用神经网络自动学习上下文表示。常见结构包括 BiLSTM-CRF、CNN-CRF、Transformer-CRF 或预训练语言模型微调。它的优势是能利用长距离上下文、语义信息和字符表示,对歧义和未登录词的处理能力通常更强,也更容易迁移到命名实体识别、词性标注等任务。缺点是需要标注数据和训练资源,推理成本高于词典方法,并且在强业务约束场景下不如词典规则直观可控。

07

子词切分

BPE、WordPiece 和 SentencePiece 属于子词切分方法,常用于神经网络语言模型输入表示。BPE 从字符开始反复合并高频相邻片段;WordPiece 倾向选择能提升语料似然的子词组合;SentencePiece 可以直接从原始文本学习切分,不强依赖预先按空格分词。它们的核心价值是缓解未登录词问题,因为罕见词可以拆成更小的已知子词。但传统中文分词追求语义词边界,子词切分追求模型词表覆盖率和泛化能力,两者目标不同。

08

歧义与新词

分词系统最容易出问题的是歧义切分和未登录词识别。歧义可以依赖词频、上下文概率、CRF 特征、神经网络语义表示或业务规则处理。未登录词则需要依靠字符模式、上下文边界、词内部凝固度、左右邻信息熵、命名实体识别和用户词典更新。工程上常见做法是用词典和 DAG 保证基础召回,用 HMM 或深度模型识别新词,用规则修正常见错误,再通过领域语料持续更新词表。

09

评估与落地

评估分词不能只看单个例子是否切对,应该使用标准测试集和业务样本。常见指标包括 Precision、Recall、F1、边界准确率、未登录词召回率、歧义样本准确率和分词速度。对于搜索和推荐场景,还要看召回率、点击率、相关性和查询改写效果;对于文本分类和信息抽取,要看下游任务指标是否提升。一个分词器在通用语料上分数高,不代表在垂直领域一定好。

易错点

  • 只回答正向匹配、逆向匹配、HMM、CRF,没有解释每种算法的思想和边界。
  • 把 BPE、WordPiece、SentencePiece 直接等同于传统中文分词,忽略它们主要服务于模型输入表示。
  • 认为词典越大分词越准,忽略大词典也会引入错误匹配、歧义和领域冲突。
  • 只看准确率,不看召回率、F1、未登录词召回率和下游任务指标。
  • 忽视未登录词问题,没有说明人名、地名、网络词和领域术语如何处理。
  • 把最大匹配说成全局最优,混淆贪心匹配和动态规划路径搜索。

面试官追问

正向最大匹配和逆向最大匹配有什么区别?

正向最大匹配从句首向句尾扫描,每次选择当前位置能匹配到的最长词;逆向最大匹配从句尾向句首扫描,每次选择当前位置向前能匹配到的最长词。逆向匹配在某些中文场景下效果更好,但同样不能彻底解决歧义。

双向最大匹配如何选择最终结果?

通常会比较正向和逆向结果。如果两者相同,直接采用;如果不同,可以选择词数更少的结果,若词数相同则选择单字词更少的结果,也可以结合词频、业务词典优先级或语言模型分数决定。

DAG 加动态规划为什么比最大匹配更稳?

最大匹配每一步只做局部选择,当前最长词未必带来整句最优。DAG 加动态规划会保留句子中所有可能的词边,并从全局计算最佳路径,因此能更好地处理多个候选切分竞争的情况。

HMM 如何处理未登录词?

HMM 不完全依赖词典,而是学习字在词首、词中、词尾、单字词等状态下的发射概率和状态转移概率。即使某个词没有在词典中出现,只要其字符组合和上下文状态符合训练语料中的规律,也可能被识别为一个词。

CRF 相比 HMM 的优势是什么?

CRF 可以利用更丰富的上下文特征,并直接建模给定观测序列下的标注序列概率,不需要像 HMM 那样强依赖观测独立性假设。因此 CRF 在边界歧义处理和特征融合方面通常更强。

为什么大模型常用子词切分而不是传统分词?

神经语言模型需要一个有限词表覆盖海量文本。子词切分可以把罕见词、拼写变化、外文片段和新词拆成已知单元,降低 OOV 风险。传统分词追求人类可理解的词边界,子词切分更关注模型训练和泛化。