You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用CRF模型predict_marginals计算文档级不确定性用于主动学习

NER主动学习中文档不确定性分数计算问题

需求说明

我的目标是在命名实体识别(NER)任务中应用主动学习,需要为待识别的每个文档计算不确定性分数,以此筛选出最优先用于标注训练的文档。
文档存储在文本文件中,格式为:每个文档由「单句换行+多句」组成(如文档1是一行单句加换行后的多句内容,文档2同理)。

我使用CRF模型的predict_marginals方法获取每个token对应所有类别的概率,希望给每个文档分配平均不确定性分数,找出不确定性最高(模型最没把握)的文档。目前的做法是对每个token计算1-最大概率得到该token的不确定性,再对每个句子的token不确定性取平均得到句子级分数,但有两个疑问:

  • 这个token级的不确定性计算方法是否合理?
  • 如何将句子级的计算扩展到文档级?

现有代码

def classifier_uncertainty(self, x):
    """
    通过公式(1-最大概率值)计算每个token的不确定性,再取平均值得到每句话的不确定性数组
    """
    predictions = self.predict_proba(x)  # 输入是句子列表,每个句子的每个token对应多个类别概率(数量等于标签数)
    resultat = 1 - predictions.max(axis=-1)  # 计算每个token的不确定性
    uncertainties = np.mean(resultat, axis=1)  # 对每句的token不确定性取平均,得到句子级分数
    return uncertainties

解决方案建议

1. token级不确定性计算的合理性

你用的1-最大概率方法是主动学习中置信度不确定性的标准计算方式,完全合理。这个值代表模型对当前token预测结果的不确定程度:最大概率越低,模型越没把握,1-最大概率的值就越高,不确定性越强。这种方法在NER的主动学习场景中被广泛使用,无需调整。

2. 扩展到文档级的实现思路

要得到文档级的不确定性分数,核心是把文档内所有token的不确定性值汇总计算,而不是只停留在句子层面:

  • 第一步:将每个文档拆分为句子(匹配你的文件格式:每个文档对应「单句+换行+多句」的内容,先拆分出文档内的所有句子)
  • 第二步:对文档内每一个句子的所有token,计算1-最大概率得到单个token的不确定性
  • 第三步:将整个文档中所有token的不确定性值放在一起,取全局平均值,就是该文档的最终不确定性分数
  • (可选)如果某些句子/token对任务更重要,可以引入加权平均,但无特殊需求时,简单平均足够满足筛选需求

调整后的代码示例

def document_uncertainty(self, doc_sentences):
    """
    输入单个文档的句子列表,返回该文档的平均不确定性分数
    """
    # 获取每个句子中所有token的概率分布
    predictions = self.predict_proba(doc_sentences)
    # 计算每个token的不确定性
    token_uncertainties = 1 - predictions.max(axis=-1)
    # 将所有token的不确定性展平为一维数组,计算全局平均值
    doc_uncertainty = np.mean(token_uncertainties.flatten())
    return doc_uncertainty

# 使用示例:假设docs是所有文档的列表,每个元素是该文档的句子列表
doc_uncertainty_scores = [self.document_uncertainty(doc) for doc in docs]
# 按不确定性从高到低排序,得到优先标注的文档索引
sorted_indices = np.argsort(doc_uncertainty_scores)[::-1]
priority_docs = [docs[i] for i in sorted_indices]

内容的提问来源于stack exchange,提问作者Balkhrod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:13:11