speechbrain.lm.counting 模块

N-gram 计数、折扣、插值和回退

作者
  • Aku Rouhe 2020

摘要

函数

ngrams

从序列生成所有 N 阶 N-gram。

ngrams_for_evaluation

为每个标记生成适当的上下文。

pad_ends

用句子开始和结束标记填充句子末尾

参考

speechbrain.lm.counting.pad_ends(sequence, pad_left=True, left_pad_symbol='<s>', right_pad_symbol='</s>')[source]

用句子开始和结束标记填充句子末尾

在语音识别中,预测句子结尾并使用句子开头来条件化预测很重要。通常这是通过在每个句子的末尾添加特殊标记(通常是 <s> 和 </s>)来完成的。<s> 标记不应被预测,因此对于一元词需要特别注意。

参数:
  • sequence (迭代器) – 要填充的序列 (任何可迭代类型)。

  • pad_left (布尔值) – 是否也填充左侧。默认为 True。

  • left_pad_symbol (任何类型) – 用于左侧填充的标记。默认为 “<s>”。

  • right_pad_symbol (任何类型) – 用于右侧填充的标记。默认为 “</s>”。

返回值:

一个生成器,生成填充后的序列。

返回类型:

生成器

示例

>>> for token in pad_ends(["Speech", "Brain"]):
...     print(token)
<s>
Speech
Brain
</s>
speechbrain.lm.counting.ngrams(sequence, n)[source]

从序列生成所有 N 阶 N-gram。

这通常用于 N-gram 计数流程中。

参数:
  • sequence (迭代器) – 从中生成 N-gram 的序列。

  • n (整数) – 要生成的 N-gram 阶数

生成值:

元组 – 将每个 ngram 作为元组生成。

返回类型:

示例

>>> for ngram in ngrams("Brain", 3):
...     print(ngram)
('B', 'r', 'a')
('r', 'a', 'i')
('a', 'i', 'n')
speechbrain.lm.counting.ngrams_for_evaluation(sequence, max_n, predict_first=False)[source]

为每个标记生成适当的上下文。

此函数生成尽可能大的 N-gram,即从一元词/二元词增长到 max_n。

例如,当你的模型是三元词模型时,对于第一个标记,你仍然只有一个上下文标记(句子开始标记)。

通常,这在评估 N-gram 模型时很有用。

参数:
  • sequence (迭代器) – 用于生成标记和上下文的序列。

  • max_n (整数) – 要生成的最大 N-gram 长度。

  • predict_first (布尔值) – 是否生成序列中第一个要预测的标记(不带上下文)。本质上,当句子开始符号是序列中的第一个时,这应该为 False。

生成值:
  • 任何类型 – 要预测的标记

  • 元组 – 用于条件化预测的上下文。

示例

>>> for token, context in ngrams_for_evaluation("Brain", 3, True):
...     print(f"p( {token} |{' ' if context else ''}{' '.join(context)} )")
p( B | )
p( r | B )
p( a | B r )
p( i | r a )
p( n | a i )