真实面经题目 · 原创解析
序列标注时数据量太少的时候怎么做?
序列标注数据量太少时,核心不是单纯多标一点,而是先确认任务边界和标注质量,再用预训练迁移降低样本需求,用规则、词典、弱监督和半监督扩大可用监督信号,用数据增强和主动学习提高样本效率,最后通过 CRF、约束解码和一致性评估减少不合法输出。一个成熟回答应覆盖数据、模型、标注、推理约束和评估闭环,而不是只说换成 BERT 或做数据增强。
真实面经题目 · 原创解析
序列标注数据量太少时,核心不是单纯多标一点,而是先确认任务边界和标注质量,再用预训练迁移降低样本需求,用规则、词典、弱监督和半监督扩大可用监督信号,用数据增强和主动学习提高样本效率,最后通过 CRF、约束解码和一致性评估减少不合法输出。一个成熟回答应覆盖数据、模型、标注、推理约束和评估闭环,而不是只说换成 BERT 或做数据增强。
如果 NER、词性标注、槽位填充这类序列标注任务数据量很少,可以先把问题拆成三层:第一层是数据本身,先检查标注规范、实体边界、类别定义和样本覆盖,避免小数据里还混入大量不一致标注;第二层是提升监督信号,优先使用预训练语言模型或领域预训练模型做迁移,再结合少量人工标注、词典规则、弱监督、伪标签和主动学习,让有限标注覆盖更多高价值样本;第三层是模型和解码约束,对 BIO/BIOES 标签加入合法转移约束,常见做法是 BERT 类编码器加 CRF,或者在解码时限制不合法标签序列,减少小样本下的离谱预测。具体做法上,先建立一个干净的小规模 gold set 作为评估集,然后用数据增强扩充表达,比如同义替换、模板替换、实体替换、回译或生成式改写,但必须保证标签对齐和语义不漂移。对于未标注语料,可以先训练初版模型打伪标签,再用置信度筛选和人工抽检迭代;对于领域词汇明显的场景,可以用词典、正则、业务规则产生弱标签,再用人工样本校准。最后用实体级 precision、recall、F1、边界错误、类别混淆和长尾类别表现来判断改进是否真实有效,并持续把模型最不确定、最容易错的样本送去标注。这样做的目标是让每一条人工标注都更值钱,而不是盲目堆模型复杂度。
小样本序列标注最常见的问题不是样本绝对数量少,而是标注规范不清导致同一类现象被不同人标成不同结果。比如人名、机构名、产品名之间边界模糊,槽位是否包含修饰词没有统一口径,BIO 标签中 B/I 使用不一致,都会让模型学到噪声。第一步应先抽样审查标注一致性,统一实体边界、嵌套实体处理、类别优先级和冲突规则,必要时建立少量高质量 gold set。没有这个步骤,后面的数据增强、伪标签和复杂模型会把错误放大。
数据少时,预训练模型通常是最优先的技术路线,因为它已经从大规模语料中学习了词法、句法和上下文表达。NER、词性标注、槽位填充都可以使用 BERT、RoBERTa、MacBERT、领域预训练模型等作为编码器,再接 softmax、CRF 或 span 分类头。若领域差异明显,例如医疗、金融、法律、客服对话,应优先考虑领域语料继续预训练或使用领域模型。这样小样本只需要学习标签映射和领域边界,而不是从头学习语言表示。
序列标注的数据增强比文本分类更敏感,因为每个 token 都有标签,增强后标签必须仍然对齐。常见方法包括实体替换、同类词替换、模板改写、上下文改写、回译、随机删除或插入非实体词。更稳妥的做法是优先替换同类型实体,比如把一个地点实体替换成另一个地点实体,把一个商品名替换成同类商品名。不要只追求样本数量,增强样本需要抽检语义是否改变、实体边界是否漂移、标签是否仍然合法。
如果有大量未标注文本,可以先用少量人工数据训练初版模型,再对未标注数据打伪标签。伪标签不能全部照收,应该按置信度、实体类型、句子长度、领域覆盖和规则校验筛选,也可以让人工只复核模型高价值或高不确定样本。更稳健的做法是多模型投票、teacher-student、自训练迭代,逐步扩大训练集。伪标签适合提高覆盖,但也容易引入确认偏差,所以必须保留独立人工评估集来监控是否真的变好。
当人工标注资源有限时,不应该随机挑样本标注,而应优先标注模型最不确定、最有代表性、最容易影响决策边界的样本。可以选择熵高、边界置信度低、多模型分歧大、包含新实体或长尾类别的句子进入标注队列。主动学习的价值在于用较少标注覆盖更多错误模式,特别适合类别不均衡和长尾实体明显的任务。实践中要避免只挑难样本导致数据分布失真,可以混合一部分随机样本保持整体分布。
序列标注任务往往有大量可利用的先验,例如人名词典、地名库、商品库、专业术语表、正则表达式、上下文触发词和格式规则。小样本阶段可以用这些规则产生候选标签、辅助特征或弱监督数据,再通过模型学习上下文泛化能力。弱监督不等于把规则结果当真值直接塞进训练集,而是要处理冲突、置信度和覆盖范围。规则适合提高召回和冷启动,模型适合消化上下文和减少规则误报,两者应组合使用。
NER 和槽位填充常用 BIO 或 BIOES 标签体系,小样本下模型容易输出非法序列,比如句首出现 I-ORG,或者 B-PER 后接 I-LOC。CRF 可以学习标签转移关系,也可以显式禁止不合法转移;即使用普通分类头,也可以在 Viterbi 解码或后处理阶段加入合法性约束。约束解码不能替代模型能力,但能显著减少格式错误,让输出更符合序列标注结构。对于强格式任务,还可以加入词典约束、长度约束和类型兼容约束。
序列标注不能只看 token-level accuracy,因为大量 O 标签会掩盖实体识别问题。更合理的是看实体级 precision、recall、F1,并分别分析边界错误、类别错误、漏召回、误识别和嵌套或长实体问题。小数据场景还要特别关注开发集和测试集是否稳定,最好做交叉验证或多随机种子实验,避免一次训练结果偶然偏高。上线后应持续采样人工复核,把高频错误回流到标注规范和训练数据中。
可以用主动学习策略,而不是随机抽样。先让当前模型在未标注数据上预测,挑选置信度低、多模型分歧大、包含长尾类别或新表达的样本,同时混入一部分随机样本保证分布不偏。这样既能覆盖难例,也能避免训练集越来越偏向极端样本。
最大风险是标签对齐和语义漂移。比如替换词后实体边界变了,或者原本的机构名变成普通名词,标签就不再可靠。NER 增强应优先使用同类型实体替换、模板填充和可控改写,并且抽样检查增强数据的边界和类别是否仍然正确。
因为序列标注输出不是独立标签集合,而是一条有结构的标签序列。CRF 能建模标签之间的转移关系,减少 BIO/BIOES 中不合法的输出,例如 I 类标签不能随便出现在句首。它不能凭空创造语义理解能力,但能让小样本下的输出更稳定、更符合格式。
如果只依赖规则,确实容易死板,召回和泛化都会受限。但把规则作为弱监督、候选生成、后处理约束或高置信兜底,就能发挥领域先验的价值。关键是要给规则设置置信度、冲突处理和人工评估,而不是把规则结果无条件当成真值。
首先不能全量接收模型预测,而要按置信度、规则合法性和多模型一致性筛选。其次要保留人工标注的独立评估集,每轮自训练后比较实体级 F1 和错误类型变化。如果发现长尾类别下降或误报增加,就要降低伪标签权重、加强人工复核或回退该轮数据。
要避免只看一次训练的总分。可以使用固定 gold set、交叉验证、多随机种子实验和错误类型分析,观察提升是否稳定。还要区分 token-level 指标和实体级指标,序列标注更应该以实体级 precision、recall、F1 以及边界和类别错误为主。