paddlespeech.s2t.utils.error_rate 模块

该模块提供计算不同级别的错误率的函数。 例如,wer用于单词级别,cer用于字符级别。

class paddlespeech.s2t.utils.error_rate.ErrorCalculator(char_list, sym_space, sym_blank, report_cer=False, report_wer=False)[来源]

基础: object

在训练过程中计算E2E_ASR和CTC模型的CER和WER。

Parameters:
  • y_hats -- numpy 数组,包含预测的文本

  • y_pads -- numpy数组,包含真实(目标)文本

  • char_list -- List[str]

  • sym_space --

  • sym_blank -- <空白>

Returns:

方法

__call__(ys_hat, ys_pad[, is_ctc])

计算句子级别的 WER/CER 分数。

calculate_cer(seqs_hat, seqs_true)

计算句子级别的CER评分。

calculate_cer_ctc(ys_hat, ys_pad)

计算CTC的句子级CER分数。

calculate_wer(seqs_hat, seqs_true)

计算句子级别的WER分数。

convert_to_char(ys_hat, ys_pad)

将索引转换为字符。

calculate_cer(seqs_hat, seqs_true)[来源]

计算句子级别的CER分数。

Parameters:
  • seqs_hat (list) -- 预测

  • seqs_true (list) -- 参考

Returns:

平均句子级 CER 得分

:rtype 浮点数

calculate_cer_ctc(ys_hat, ys_pad)[来源]

计算CTC的句子级CER分数。

Parameters:
  • ys_hat (paddle.Tensor) -- 预测 (批次, 序列长度)

  • ys_pad (paddle.Tensor) -- 参考 (批次,序列长度)

Returns:

平均句子级CER评分

:rtype 浮点数

calculate_wer(seqs_hat, seqs_true)[来源]

计算句子级别的WER得分。

Parameters:
  • seqs_hat (list) -- 预测

  • seqs_true (list) -- 参考

Returns:

平均句子级别的WER得分

:rtype 浮点数

convert_to_char(ys_hat, ys_pad)[来源]

将索引转换为字符。

Parameters:
  • seqs_hat (paddle.Tensor) -- 预测 (batch, seqlen)

  • seqs_true (paddle.Tensor) -- 参考 (batch, seqlen)

Returns:

预测的令牌列表

:rtype list :return: 参考的令牌列表 :rtype list

paddlespeech.s2t.utils.error_rate.cer(reference, hypothesis, ignore_case=False, remove_space=False)[来源]

计算字符错误率 (CER)。CER 在字符级别比较参考文本和假设文本。CER 定义为:

\[CER = (Sc + Dc + Ic) / Nc\]

哪里

Sc is the number of characters substituted,
Dc is the number of characters deleted,
Ic is the number of characters inserted
Nc is the number of characters in the reference

我们可以使用莱文斯坦距离来计算CER。中文输入应编码为unicode。请注意,开头和结尾的空格字符将被截断,句子中多个连续的空格字符将被替换为一个空格字符。

Parameters:
  • 参考 (str) -- 参考句子。

  • 假设 (str) -- 假设句子。

  • ignore_case (bool) -- 是否区分大小写。

  • remove_space (bool) -- 是否移除内部空格字符

Returns:

字符错误率。

Return type:

浮点数

Raises:

ValueError -- 如果参考长度为零。

paddlespeech.s2t.utils.error_rate.char_errors(reference, hypothesis, ignore_case=False, remove_space=False)[来源]

计算参考序列和假设序列之间的勒文斯坦距离(字符级)。

Parameters:
  • 引用 (str) -- 参考句子。

  • 假设 (str) -- 假设句子。

  • ignore_case (bool) -- 是否区分大小写。

  • remove_space (bool) -- 是否移除内部空格字符

Returns:

莱文斯坦距离和参考句子的长度。

Return type:

列表

paddlespeech.s2t.utils.error_rate.wer(reference, hypothesis, ignore_case=False, delimiter=' ')[来源]

计算词错误率 (WER)。WER 在词级别上比较参考文本和假设文本。WER 定义为:

\[WER = (Sw + Dw + Iw) / Nw\]

哪里

Sw is the number of words subsituted,
Dw is the number of words deleted,
Iw is the number of words inserted,
Nw is the number of words in the reference

我们可以使用莱文斯坦距离来计算词错误率(WER)。请注意,当通过分隔符拆分句子时,空项将被移除。

Parameters:
  • 参考 (str) -- 参考句子。

  • 假设 (str) -- 假设句子。

  • ignore_case (bool) -- 是否区分大小写。

  • delimiter (char) -- 输入句子的分隔符。

Returns:

词错误率。

Return type:

浮点数

Raises:

值错误 -- 如果参考的单词数量为零。

paddlespeech.s2t.utils.error_rate.word_errors(reference, hypothesis, ignore_case=False, delimiter=' ')[来源]

计算参考序列与假设序列之间的莱文斯坦距离(Levenshtein distance),以词为单位。

Parameters:
  • 引用 (str) -- 参考句子。

  • 假设 (str) -- 假设句子。

  • ignore_case (bool) -- 是否区分大小写。

  • delimiter (char) -- 输入句子的分隔符。

Returns:

参考句子的Levenshtein距离和单词数量。

Return type:

列表