Keras 3 API 文档 / KerasNLP / 指标 / BLEU 指标

BLEU 指标

[来源]

Bleu

keras_nlp.metrics.Bleu(
    tokenizer=None, max_order=4, smooth=False, dtype="float32", name="bleu", **kwargs
)

BLEU 指标。

此类实现 BLEU 指标。BLEU 通常用于评估机器翻译系统。默认情况下,此实现复制 SacreBLEU,但可以传递用户定义的分词器来处理其他语言。

对于 BLEU 分数,我们计算候选翻译和参考文本中匹配的 n 元组的数量。我们找到匹配 n 元组的“剪切计数”,以避免对具有冗余、重复标记的(参考,预测)对给予高分。其次,BLEU 分数往往会奖励更短的预测,这就是为什么应用简短惩罚来惩罚简短预测的原因。有关更多详细信息,请参阅以下文章:https://cloud.google.com/translate/automl/docs/evaluate#bleu。

关于输入形状的说明:对于未批处理的输入,y_pred 应该是一个形状为 () 的张量,而 y_true 应该是一个形状为 (num_references,) 的张量。对于批处理输入,y_pred 应该是一个形状为 (batch_size,) 的张量,而 y_true 应该是一个形状为 (batch_size, num_references) 的张量。在批处理输入的情况下,如果不同的样本具有不同的参考数量,y_true 也可以是一个形状为 (batch_size, None) 的不规则张量。

参数

  • tokenizer:可调用对象。一个函数,它接受一个字符串 tf.RaggedTensor(任何形状),并对张量中的字符串进行分词。如果未指定分词器,则使用默认分词器。默认分词器复制 SacreBLEU 的 "tokenizer_13a" 分词器(https://github.com/mjpost/sacrebleu/blob/v2.1.0/sacrebleu/tokenizers/tokenizer_13a.py)的行为。
  • max_order:int。要使用的最大 n 元组阶数。例如,如果 max_order 设置为 3,则将考虑一元组、二元组和三元组。默认为 4
  • smooth:bool。是否将 Lin 等人 2004 年的平滑应用于 BLEU 分数。在计算精度时,为每个阶数将匹配的 n 元组计数(即分子)加 1,并将总 n 元组计数(即分母)加 1。默认为 False
  • dtype:字符串或 tf.dtypes.Dtype。指标计算的精度。如果未指定,则默认为 "float32"
  • name:字符串。指标实例的名称。
  • **kwargs:其他关键字参数。

参考资料