注释指标#

这里我们描述 Argilla 中可用的指标

  • 一致性指标:注释任务的一致性指标

  • 注释者指标:注释者的指标。包括每个注释者的指标和所有注释者的统一指标。

基础指标#

class argilla.client.feedback.metrics.base.AgreementMetricResult(*, metric_name, count, result)#

一致性指标结果的容器。

它包含两个字段,metric_nameresult,其中包含指标的值。

参数:
  • metric_name (str) –

  • count (int) –

  • result (float) –

class argilla.client.feedback.metrics.base.ModelMetricResult(*, metric_name, count, result)#

注释者指标结果的容器。

它包含两个字段,metric_nameresult,其中包含指标的值。

参数:
  • metric_name (str) –

  • count (int) –

  • result (Union[float, Dict[str, float], DataFrame, Dict[str, DataFrame]]) –

class argilla.client.feedback.metrics.base.MetricBase(dataset, question_name, responses_vs_suggestions=True)#
参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • responses_vs_suggestions (bool) –

__init__(dataset, question_name, responses_vs_suggestions=True)#

初始化一个 AgreementMetric 对象,以计算给定问题的 FeedbackDataset 的一致性指标。

参数:
  • dataset (FeedbackDataset) – 用于计算指标的 FeedbackDataset。

  • question_name (str) – 我们要分析一致性的问题名称。

  • responses_vs_suggestions (bool) – 是否比较响应与建议,反之亦然。默认为 True(指标将假设响应是真值,建议是预测来进行比较)。

Raises:

NotImplementedError – 如果不支持问题类型。

Return type:

None

property allowed_metrics: List[str]#

给定问题的可用指标。

一致性指标#

此模块包含收集与注释者间一致性相关信息的指标。

class argilla.client.feedback.metrics.agreement_metrics.KrippendorfAlpha(annotated_dataset=None, distance_function=None)#

Krippendorf's alpha 一致性指标。

是编码一组分析单元时实现的注释者间一致性的统计度量。

为了解释此指标的结果,我们建议读者参考维基百科条目。普遍共识认为,alpha 值 >= 0.8 表示可靠的注释,值 >= 0.667 只能保证初步结论,而较低的值表明注释不可靠。

参数:
  • annotated_dataset (FormattedResponses) –

  • distance_function (Callable) –

class argilla.client.feedback.metrics.agreement_metrics.NLTKAnnotationTaskMetric(annotated_dataset=None, distance_function=None)#

使用 nltk 的 AnnotationTask 类的指标的基类。

这些指标使用距离函数来计算之间的距离

通常情况下,我们不希望将两个不同的标签视为完全不一致,因此 AnnotationTask 构造函数也可以将距离度量作为最后一个参数。距离度量是接受两个参数的函数,并返回介于 0.0 和 1.0 之间的值,指示它们之间的距离。

默认情况下,为每种问题类型提供以下距离度量

对于 LabelQuestion,binary_distance

>>> am.binary_distance("a", "b")
1.0
>>> am.binary_distance("a", "a")
0.0

对于 MultiLabelQuestion,masi_distance

>>> label_sets = [
...     [frozenset(["a", "b"]), frozenset(["b", "a"])],
...     [frozenset(["a"]), frozenset(["a", "b"])],
...     [frozenset(["c"]), frozenset(["a", "b"])],
... ]
>>> for a, b in label_sets:
...     print((a,b), am.masi_distance(a,b))
...
(frozenset({'a', 'b'}), frozenset({'a', 'b'})) 0.0
(frozenset({'a'}), frozenset({'a', 'b'})) 0.665
(frozenset({'c'}), frozenset({'a', 'b'})) 1.0

对于 RatingQuestion,interval_distance

>>> for a, b in [(1, 1), (1, 2), (3,6)]:
...     print((a,b), am.interval_distance(a,b))
...
(1, 1) 0
(1, 2) 1
(3, 6) 9

对于 RankingQuestion,kendall_tau_dist

>>> for i, a in enumerate(itertools.permutations(values, len(values))):
...     for j, b in enumerate(itertools.permutations(values, len(values))):
...         if j >= i:
...             print((a, b), kendall_tau_dist(a,b))
...
((1, 2, 3), (1, 2, 3)) 0.0
((1, 2, 3), (1, 3, 2)) 0.3333333333333333
((1, 2, 3), (2, 1, 3)) 0.3333333333333333
((1, 2, 3), (2, 3, 1)) 0.6666666666666667
((1, 2, 3), (3, 1, 2)) 0.6666666666666667
((1, 2, 3), (3, 2, 1)) 1.0
((1, 3, 2), (1, 3, 2)) 0.0
...
参数:
  • annotated_dataset (FormattedResponses) –

  • distance_function (Callable) –

class argilla.client.feedback.metrics.agreement_metrics.AgreementMetric(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

用于计算一致性指标的主要类。

示例

>>> import argilla as rg
>>> from argilla.client.feedback.metrics import AgreementMetric
>>> metric = AgreementMetric(dataset=dataset, question_name=question, filter_by={"response_status": "submitted"})
>>> metrics_report = metric.compute("alpha")
参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

__init__(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

初始化一个 AgreementMetric 对象以计算一致性指标。

参数:
  • dataset (FeedbackDataset) – 用于计算指标的 FeedbackDataset。

  • question_name (str) – 我们要分析一致性的问题名称。

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) – 一个字典,键是要筛选的字段,值是要应用的筛选器。可以是:draft、pending、submitted 和 discarded 之一。如果设置为 None,则不应用任何筛选器。默认为 None(不应用筛选器)。

  • sort_by (Optional[List[SortBy]]) – 用于对数据集进行排序的 SortBy 对象列表。默认为 None(不应用筛选器)。

  • max_records (Optional[int]) – 用于训练的最大记录数。默认为 None。

Return type:

None

compute(metric_names)#

计算给定问题的一致性指标。

参数:
  • metric_names (Union[str, List[str]]) – 要计算的指标的名称或名称列表。例如:alpha

  • kwargs – 传递给指标的其他参数。

Raises:

ValueError – 如果给定问题不支持指标名称。

Returns:

数据集的 AgreementMetricResult 对象列表。

Return type:

agreement_metrics

注释者指标#

此模块包含建议指标和响应指标的指标。

class argilla.client.feedback.metrics.annotator_metrics.AccuracyMetric(responses=None, suggestions=None)#

准确率得分。

响应与提供的建议相等的比例。

我们使用以下实现:https://scikit-learn.cn/stable/modules/generated/sklearn.metrics.accuracy_score.html#sklearn.metrics.accuracy_score

在多标签分类中,此函数计算子集准确率:为样本预测的标签集必须与 y_true 中相应的标签集完全匹配

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.AnnotatorMetric(dataset, question_name, filter_by=None, sort_by=None, max_records=None, responses_vs_suggestions=True)#

计算注释者指标的主要类。注释者指标是指建议指标和响应指标的组合。它们都与一致性指标(即注释者间一致性)不同,并且用于计算对比建议与响应的指标。

示例

>>> import argilla as rg
>>> from argilla.client.feedback.metrics import AnnotatorMetric
>>> metric = AnnotatorMetric(dataset=dataset, question_name=question)
>>> metrics_report = metric.compute("accuracy")
参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

  • responses_vs_suggestions (bool) –

compute(metric_names, show_progress=True)#

计算给定问题的注释者指标。

参数:
  • metric_names (Union[str, List[str]]) – 要计算的指标的名称或名称列表。例如:accuracy

  • show_progress (bool) –

Raises:

ValueError – 如果给定问题不支持指标名称。

Returns:

一个字典,其中包含为每个注释者计算的指标,其中

键对应于用户 ID,值是指标结果的列表。

Return type:

metrics

class argilla.client.feedback.metrics.annotator_metrics.ConfusionMatrixMetric(responses=None, suggestions=None)#

计算混淆矩阵以评估注释者的准确性。

在多类分类的情况下,此函数返回一个类别的混淆矩阵。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.F1ScoreMetric(responses=None, suggestions=None)#

F1 分数:2 * (精确率 * 召回率) / (精确率 + 召回率)

我们使用以下实现:https://scikit-learn.cn/stable/modules/generated/sklearn.metrics.f1_score.html#sklearn.metrics.f1_score

在多类数据的情况下,计算每个标签的指标,并找到它们的未加权平均值。这不考虑标签不平衡。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.GLEUMetric(responses=None, suggestions=None)#

BLEU 的改进版本,考虑了响应的长度。

BLEU(Bilingual Evaluation Understudy,双语评估辅助工具)是一种用于评估文本质量的算法,该文本是从一种自然语言机器翻译成另一种自然语言的。 Google-BLEU 是 BLEU 的改进版本,它解决了在单个句子中发现的一些不良属性。

https://hugging-face.cn/spaces/evaluate-metric/bleu https://hugging-face.cn/spaces/evaluate-metric/google_bleu

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.ModelMetric(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

其中建议是真值,响应是与之比较的。

参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelAccuracyMetric(responses=None, suggestions=None)#

计算多标签分类的二元化数据的准确率。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelConfusionMatrixMetric(responses=None, suggestions=None)#

计算混淆矩阵以评估注释者的准确性。

数据是二元化的,因此我们将返回一个字典,其中包含每个类的混淆矩阵。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelF1ScoreMetric(responses=None, suggestions=None)#

计算多标签分类的二元化数据的 f1-score。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelMetrics(responses=None, suggestions=None)#

基于 MultiLabel 指标的父类。它对数据进行二元化以计算指标。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelPrecisionMetric(responses=None, suggestions=None)#

计算多标签分类的二元化数据的精确率。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.MultiLabelRecallMetric(responses=None, suggestions=None)#

计算多标签分类的二元化数据的召回率。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.NDCGMetric(responses=None, suggestions=None)#

计算归一化折损累积增益。

来自维基百科关于折损累积增益的页面

“折损累积增益 (DCG) 是排名质量的度量。在信息检索中,它通常用于衡量 Web 搜索引擎算法或相关应用程序的有效性。DCG 使用搜索引擎结果集中文档的分级相关性,根据文档在结果列表中的位置来衡量文档的有用性或增益。增益从结果列表的顶部到底部累积,每个结果的增益在较低的排名中会被折损”

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.PearsonCorrelationCoefficientMetric(responses=None, suggestions=None)#
参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.PrecisionMetric(responses=None, suggestions=None)#

计算精确率:tp / (tp + fp)

我们使用以下实现:https://scikit-learn.cn/stable/modules/generated/sklearn.metrics.precision_score.html#sklearn.metrics.precision_score

在多类数据的情况下,计算每个标签的指标,并找到它们的未加权平均值。这不考虑标签不平衡。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.ROUGEMetric(responses=None, suggestions=None)#

来自 evaluate 库

ROUGE,或称 Recall-Oriented Understudy for Gisting Evaluation(面向要点评估的召回率研究),是一组指标和一个软件包,用于评估自然语言处理中的自动摘要和机器翻译软件。这些指标将自动生成的摘要或翻译与参考摘要或一组参考摘要(人工生成)或翻译进行比较。请注意,ROUGE 是不区分大小写的,这意味着大写字母和小写字母的处理方式相同。

https://hugging-face.cn/spaces/evaluate-metric/rouge

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.RecallMetric(responses=None, suggestions=None)#

计算召回率:tp / (tp + fn)

我们使用以下链接中实现的版本: https://scikit-learn.cn/stable/modules/generated/sklearn.metrics.recall_score.html#sklearn.metrics.recall_score

在多类数据的情况下,计算每个标签的指标,并找到它们的未加权平均值。这不考虑标签不平衡。

参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.SpearmanCorrelationCoefficientMetric(responses=None, suggestions=None)#
参数:
  • responses (List[Union[float, int, str]]) –

  • suggestions (List[Union[float, int, str]]) –

class argilla.client.feedback.metrics.annotator_metrics.UnifiedAnnotatorMetric(dataset, question_name, strategy_name='majority', filter_by=None, sort_by=None, max_records=None, responses_vs_suggestions=True)#

用于计算统一数据集指标的主类。

示例

>>> import argilla as rg
>>> from argilla.client.feedback.metrics import UnifiedAnnotatorMetric
>>> metric = UnifiedAnnotatorMetric(dataset=dataset, question_name=question)
>>> metrics_report = metric.compute("accuracy")
参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • strategy_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

  • responses_vs_suggestions (bool) –

compute(metric_names)#

计算给定问题的统一标注指标。

参数:
  • metric_names (Union[str, List[str]]) – 要计算的指标的名称或名称列表。例如:accuracy

  • kwargs – 传递给指标的其他参数。

Raises:

ValueError – 如果给定问题不支持指标名称。

Returns:

如果计算了多个指标,则返回标注者指标结果的列表;如果只计算了一个指标,则返回结果

容器。

Return type:

metrics

class argilla.client.feedback.metrics.annotator_metrics.ModelMetric(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

其中建议是真值,响应是与之比较的。

参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

__init__(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

初始化一个 AnnotatorMetric 对象,用于计算 Suggestions Metric 和 Responses Metric 的一致性指标。

参数:
  • dataset (FeedbackDataset) – 用于计算指标的 FeedbackDataset。

  • question_name (str) – 我们要分析一致性的问题名称。

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) – 一个字典,键是要筛选的字段,值是要应用的筛选器。可以是:draft、pending、submitted 和 discarded 之一。如果设置为 None,则不应用任何筛选器。默认为 None(不应用筛选器)。

  • sort_by (Optional[List[SortBy]]) – 用于对数据集进行排序的 SortBy 对象列表。默认为 None(不应用筛选器)。

  • max_records (Optional[int]) – 用于训练的最大记录数。默认为 None。

  • responses_vs_suggestions – 是否使用 Suggestions Metric(其中建议是真值,并将响应与之进行比较)或 Responses Metric(其中响应是真值,并将建议与之进行比较)。默认为 True,即 Responses Metric。

Return type:

None

compute(metric_names, show_progress=True)#

计算给定问题的注释者指标。

参数:
  • metric_names (Union[str, List[str]]) – 要计算的指标的名称或名称列表。例如:accuracy

  • show_progress (bool) –

Raises:

ValueError – 如果给定问题不支持指标名称。

Returns:

一个字典,其中包含为每个注释者计算的指标,其中

键对应于用户 ID,值是指标结果的列表。

Return type:

metrics

class argilla.client.feedback.metrics.annotator_metrics.UnifiedModelMetric(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#
参数:
  • dataset (FeedbackDataset) –

  • question_name (str) –

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) –

  • sort_by (Optional[List[SortBy]]) –

  • max_records (Optional[int]) –

__init__(dataset, question_name, filter_by=None, sort_by=None, max_records=None)#

初始化一个 AnnotatorMetric 对象,用于计算 Suggestions Metric 和 Responses Metric 的一致性指标。

参数:
  • dataset (FeedbackDataset) – 用于计算指标的 FeedbackDataset。

  • question_name (str) – 我们要分析一致性的问题名称。

  • filter_by (Optional[Dict[str, Union[ResponseStatusFilter, List[ResponseStatusFilter]]]]) – 一个字典,键是要筛选的字段,值是要应用的筛选器。可以是:draft、pending、submitted 和 discarded 之一。如果设置为 None,则不应用任何筛选器。默认为 None(不应用筛选器)。

  • sort_by (Optional[List[SortBy]]) – 用于对数据集进行排序的 SortBy 对象列表。默认为 None(不应用筛选器)。

  • max_records (Optional[int]) – 用于训练的最大记录数。默认为 None。

  • responses_vs_suggestions – 是否使用 Suggestions Metric(其中建议是真值,并将响应与之进行比较)或 Responses Metric(其中响应是真值,并将建议与之进行比较)。默认为 True,即 Responses Metric。

Return type:

None

compute(metric_names)#

计算给定问题的统一标注指标。

参数:
  • metric_names (Union[str, List[str]]) – 要计算的指标的名称或名称列表。例如:accuracy

  • kwargs – 传递给指标的其他参数。

Raises:

ValueError – 如果给定问题不支持指标名称。

Returns:

如果计算了多个指标,则返回标注者指标结果的列表;如果只计算了一个指标,则返回结果

容器。

Return type:

metrics