真实面经题目 · 原创解析
意图识别使用 LR、命名实体识别使用 HMM 时,实体如何提取,模型如何训练?
这道题考察经典 NLP 任务拆分:LR 适合把句子级特征映射到意图类别,HMM 适合把 token 序列映射到 BIO 实体标签序列。回答要讲清文本预处理、特征构造、HMM 初始/转移/发射概率训练、Viterbi 解码和实体字段回收。
真实面经题目 · 原创解析
这道题考察经典 NLP 任务拆分:LR 适合把句子级特征映射到意图类别,HMM 适合把 token 序列映射到 BIO 实体标签序列。回答要讲清文本预处理、特征构造、HMM 初始/转移/发射概率训练、Viterbi 解码和实体字段回收。
我会把它拆成句子级意图识别和 token 级实体识别。意图识别用 LR 时,先对用户文本做分词或字粒度处理,提取 n-gram、关键词、词典命中、上下文和实体占位等特征,LR 输出各意图类别概率。命名实体识别用 HMM 时,把实体类型设计成 BIO 标签序列,例如 B-city、I-city、O,训练阶段从标注语料估计初始概率、状态转移概率和观测发射概率,预测阶段用 Viterbi 找最大概率标签序列,再把连续的 B/I 标签合并成实体。最后用 intent accuracy、实体 precision/recall/F1 和端到端 slot filling 指标验证。
意图识别是句子级分类,目标是判断用户想做什么;命名实体识别是序列标注,目标是从句子中抽取地点、时间、产品名、业务对象等槽位。LR 和 HMM 的分工对应分类和序列建模,不应混成一个模型来讲。
LR 输入是句子特征向量,可包含字词 n-gram、关键词、词典命中、实体占位、句式模板、上下文特征和统计特征。二分类用 sigmoid,多分类可用 one-vs-rest 或 softmax 形式。训练目标是最小化交叉熵,并用 L1/L2 正则控制稀疏特征过拟合。
HMM 需要先定义状态集合,常见是 BIO 或 BIOES 标签,例如 B-person、I-person、B-location、O。观测是字或词序列,隐藏状态是每个位置的实体标签。实体提取不是单点分类,而是寻找全局概率最大的合法标签路径。
有标注语料时,可以用监督计数估计初始概率、状态转移概率和发射概率,并做平滑处理解决未登录词或低频转移。无标注场景可用 Baum-Welch,但面试中若题目问实体提取,优先讲有标注序列的监督训练更直观。
预测时用 Viterbi 动态规划,结合初始概率、转移概率和发射概率得到最大概率标签序列。随后把 B-xxx 后连续的 I-xxx 合并为一个实体,并根据业务 schema 输出实体类型、文本 span 和置信度。
线上效果通常取决于意图和实体是否同时正确。评估时既要看意图准确率,也要看实体级 precision、recall、F1、span 是否完整、类型是否正确,以及端到端槽位填充成功率。错误样本要区分是意图错、实体漏抽还是实体边界错。
优点是训练快、可解释、线上延迟低,适合稀疏文本特征;缺点是表达能力依赖特征工程,对复杂语义、上下文和组合泛化能力有限。
NER 标签天然有序列依赖,例如 I-city 前面通常需要 B-city 或 I-city。HMM 用状态转移概率建模标签之间的依赖,比独立逐 token 分类更稳。
会。未登录词导致发射概率估计不足,需要平滑、字形特征、词典特征、UNK 处理或回退规则,否则模型容易把低频实体判成 O。
可以用实体结果作为意图特征,也可以用意图约束实体类型;排查时要分别统计意图错、实体漏召、边界错和类型错,避免只看总成功率。