speechbrain.utils.bertscore 模块
提供用于 BERTscore 指标的指标类。
作者 * Sylvain de Langen 2024
摘要
类
使用提供的 HuggingFace Transformers 文本编码器计算 BERTScore,采用论文 BERTScore: Evaluating Text Generation with BERT 中描述的方法。 |
函数
返回一个 token 掩码,其中特殊 token 被掩蔽。 |
|
返回用于 BERTScore 指标的 token 权重。 |
参考
- class speechbrain.utils.bertscore.BERTScoreStats(lm: TextEncoder, batch_size: int = 64, use_idf: bool = True, sentence_level_averaging: bool = True, allow_matching_special_tokens: bool = False)[源代码]
基类:
MetricStats
使用提供的 HuggingFace Transformers 文本编码器计算 BERTScore,采用论文 BERTScore: Evaluating Text Generation with BERT 中描述的方法。
BERTScore 对上下文化的 token (例如,BERT 的输出,但许多其他模型也适用) 进行操作。由于使用余弦相似度,输出范围将在
-1
和1
之间。有关更多详细信息,请参阅链接的资源。特殊 token (从 tokenizer 查询) 被完全忽略。
该指标的作者参考实现可以在这里找到。链接的页面详细描述了该方法,并比较了 BERTScore 与许多不同模型的人工评估的相关性。
警告
此实现可能无法严格匹配参考实现的结果。请阅读参数文档以了解差异。
- 参数:
lm (speechbrain.integrations.huggingface.TextEncoder) – 用作 LM 的 HF Transformers tokenizer 和文本编码器包装器。
batch_size (int, 可选) – 应一次考虑多少对话语。值越高速度越快,但可能导致 OOM。
use_idf (bool, 可选) – 如果启用(默认),则参考文本中的 token 会根据逆文档频率 (IDF) 进行加权,这可以降低可能携带信息较少的常见词语的影响。每个附加的句子都被视为 IDF 计算中的一个文档。
sentence_level_averaging (bool, 可选) – 当
True
时,最终的召回率/精确率指标将是每个测试句子的召回率/精确率的平均值,而不是每个测试 token 的平均值,例如,一个很长的句子在最终指标中的权重与一个很短的句子相同。默认值为True
,这与参考实现一致。allow_matching_special_tokens (bool, 可选) – 当
True
时,非特殊 token 可以在贪婪匹配期间与特殊 token 匹配(例如[CLS]
/[SEP]
)。由于 padding 处理,批次大小必须为 1。默认值为False
,这与参考实现的行为不同(参见 bert_score#180)。
- speechbrain.utils.bertscore.get_bert_token_mask(tokenizer) BoolTensor [源代码]
返回一个 token 掩码,其中特殊 token 被掩蔽。
- 参数:
tokenizer (transformers.PreTrainedTokenizer) – 用于 BERT 模型的 HuggingFace tokenizer。
- 返回:
可以按 token ID 索引的掩码张量(形状为
[vocab_size]
)。- 返回类型:
torch.BoolTensor
- speechbrain.utils.bertscore.get_bertscore_token_weights(tokenizer, corpus: Iterable[str] | None = None) Tensor [源代码]
返回用于 BERTScore 指标的 token 权重。当指定
corpus
时,权重是每个 token 的逆文档频率 (IDF),从corpus
中提取。IDF 公式改编自 BERTScore 论文,其中参考语料库中缺失的词语使用
+1
平滑进行加权。- 参数:
tokenizer (transformers.PreTrainedTokenizer) – 用于 BERT 模型的 HuggingFace tokenizer。
corpus (Iterable[str], 可选) – 用于计算 IDF 的可迭代语料库。每次迭代的值在 IDF 计算中被视为语料库中的一个文档。如果省略,则不进行 IDF 加权。
- 返回:
一个浮点张量,可以按 token ID 索引,形状为
[vocab_size]
,其中每个条目表示给定 token 的影响应乘以多少。- 返回类型:
torch.Tensor