speechbrain.lm.counting 模块

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

Authors
  • 阿库·柔赫 2020

摘要

函数:

ngrams

从序列中生成所有第N阶N-grams。

ngrams_for_evaluation

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

pad_ends

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

参考

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

在句子的开头和结尾添加开始和结束标记

在语音识别中,预测句子的结束并使用句子的开始来条件化预测是非常重要的。通常,这是通过在每句话的末尾添加特殊标记(通常是)来完成的。标记不应该被预测,因此对于一元语法需要特别小心。

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

  • pad_left (bool) – 是否也在左侧填充。默认为True。

  • left_pad_symbol (any) – 用于左侧填充的标记。默认为“”。

  • right_pad_symbol (any) – 用于右侧填充的标记。默认为“”。

Returns:

生成填充序列的生成器。

Return type:

生成器

Example

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

从序列中生成所有第N阶N-grams。

这通常将用于N-gram计数管道中。

Parameters:
  • sequence (iterator) – 用于生成N-grams的序列。

  • n (int) – 要生成的N-grams的阶数

Yields:

tuple – 将每个n元组生成为元组。

Return type:

Example

>>> 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-grams,因此从unigrams/bigrams逐渐增长到max_n。

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

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

Parameters:
  • sequence (iterator) – 用于生成标记和上下文的序列。

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

  • predict_first (bool) – 是否生成序列中的第一个标记以进行预测(无上下文)。当序列中的第一个标记是句子开始符号时,这应该为False。

Yields:
  • 任何 – 要预测的标记

  • tuple – 用于预测的条件上下文。

Example

>>> 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 )