【问题标题】:Measuring F1-score for NER测量 NER 的 F1 分数
【发布时间】:2020-11-08 13:30:14
【问题描述】:

我正在尝试评估用于 NER(命名实体识别)的人工智能模型。
为了与其他基准进行比较,我需要计算模型的 F1 分数。但是,我不确定如何编码。

我的想法是:
True-positives:相等的标记和相等的标签,标签的真阳性
假阴性:相等的标记和预测中没有出现不相等的标签或标记,标记为假阴性
假阳性:标记不存在但已分配给标记,例如:

短语:“这是一个测试”
预测:{token:这是,标签:WHO}
真对:{token: This, tag: WHO} {token: a test, tag: what}
在这种情况下,{token: This is, tag: WHO} 被认为是 WHO 的误报。

代码:

       for val predicted tokens (pseudo-code) {   
       // val = struct { tokens, tags } from a phrase
           for (auto const &j : val.tags) {
                if (j.first == current_tokens) {
                    if (j.second == tag) {
                        true_positives[tag_id]++;
                    } else {
                        false_negatives[tag_id]++;
                    }
                    current_token_exists = true;
                }
                
            }
            if (!current_token_exists) {
                false_positives[tag_id]++;
            }
        }

        for (auto const &i : val.tags) {
            bool find = 0;
            for (auto const &j : listed_tokens) {
                if (i.first == j) {find = 1; break;}
            }
            if (!find) {
                false_negatives[str2tag_id[i.second]]++;
            }
        }

在此之后,计算 F-1:

    float precision_total, recall_total, f_1_total;
    precision_total = total_true_positives / (total_true_positives + total_false_positives);
    recall_total = total_true_positives / (total_true_positives + total_false_negatives);
    f_1_total = (2 * precision_total * recall_total) / (precision_total + recall_total);

但是,我认为我在某些概念上是错误的。有人有意见吗?

【问题讨论】:

    标签: nlp artificial-intelligence named-entity-recognition measurement


    【解决方案1】:

    这不是一个完整的答案。 看看here 我们可以看到有许多可能的方法来定义 NER 的 F1 分数。考虑至少 6 种可能的情况,TP、TN、FN 和 FP 的一部分,因为标签可以对应多个标记,因此我们可以考虑部分匹配。 如果您看一下定义 F1 分数的不同方法,例如,其中一些定义 TP 就像严格正数和部分正数的加权平均值。 CoNLL 是最著名的 NER 基准之一,看起来他们对召回率和精度使用了严格的定义,这足以定义 F1 分数:

    precision 是学习发现的命名实体的百分比 正确的系统。召回是命名实体的百分比 存在于系统找到的语料库中。命名实体是 仅当它与中的相应实体完全匹配时才正确 数据文件。

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2017-10-25
      • 2020-02-22
      • 2020-10-21
      相关资源
      最近更新 更多