def reverse_generator_nlplike(nbr_symbols, max_length, nbr_cases, scale_std_dev=100, alpha=1.5):
    'Generator for the reversing nlp-like task on sequences of symbols.\n\n  The length of the sequence is drawn from a Gaussian(Normal) distribution\n  at random from [1, max_length] and with std deviation of 1%,\n  then symbols are drawn from Zipf\'s law at random from [0, nbr_symbols) until\n  nbr_cases sequences have been produced.\n\n  Args:\n    nbr_symbols: integer, number of symbols.\n    max_length: integer, maximum length of sequences to generate.\n    nbr_cases: the number of cases to generate.\n    scale_std_dev: float, Normal distribution\'s standard deviation scale factor\n      used to draw the length of sequence. Default = 1% of the max_length.\n    alpha: float, Zipf\'s Law Distribution parameter. Default = 1.5.\n      Usually for modelling natural text distribution is in\n      the range [1.1-1.6].\n\n  Yields:\n    A dictionary {"inputs": input-list, "targets": target-list} where\n    target-list is input-list reversed.\n  '
    std_dev = (max_length / scale_std_dev)
    distr_map = zipf_distribution(nbr_symbols, alpha)
    for _ in range(nbr_cases):
        l = int((abs(np.random.normal(loc=(max_length / 2), scale=std_dev)) + 1))
        inputs = zipf_random_sample(distr_map, l)
        (yield {'inputs': inputs, 'targets': list(reversed(inputs))})
Generator for the reversing nlp-like task on sequences of symbols.

The length of the sequence is drawn from a Gaussian(Normal) distribution
at random from [1, max_length] and with std deviation of 1%,
then symbols are drawn from Zipf's law at random from [0, nbr_symbols) until
nbr_cases sequences have been produced.

Args:
  nbr_symbols: integer, number of symbols.
  max_length: integer, maximum length of sequences to generate.
  nbr_cases: the number of cases to generate.
  scale_std_dev: float, Normal distribution's standard deviation scale factor
    used to draw the length of sequence. Default = 1% of the max_length.
  alpha: float, Zipf's Law Distribution parameter. Default = 1.5.
    Usually for modelling natural text distribution is in
    the range [1.1-1.6].

Yields:
  A dictionary {"inputs": input-list, "targets": target-list} where
  target-list is input-list reversed.
def reverse_generator_nlplike(nbr_symbols, max_length, nbr_cases, scale_std_dev=100, alpha=1.5):
    'Generator for the reversing nlp-like task on sequences of symbols.\n\n  The length of the sequence is drawn from a Gaussian(Normal) distribution\n  at random from [1, max_length] and with std deviation of 1%,\n  then symbols are drawn from Zipf\'s law at random from [0, nbr_symbols) until\n  nbr_cases sequences have been produced.\n\n  Args:\n    nbr_symbols: integer, number of symbols.\n    max_length: integer, maximum length of sequences to generate.\n    nbr_cases: the number of cases to generate.\n    scale_std_dev: float, Normal distribution\'s standard deviation scale factor\n      used to draw the length of sequence. Default = 1% of the max_length.\n    alpha: float, Zipf\'s Law Distribution parameter. Default = 1.5.\n      Usually for modelling natural text distribution is in\n      the range [1.1-1.6].\n\n  Yields:\n    A dictionary {"inputs": input-list, "targets": target-list} where\n    target-list is input-list reversed.\n  '
    std_dev = (max_length / scale_std_dev)
    distr_map = zipf_distribution(nbr_symbols, alpha)
    for _ in range(nbr_cases):
        l = int((abs(np.random.normal(loc=(max_length / 2), scale=std_dev)) + 1))
        inputs = zipf_random_sample(distr_map, l)
        (yield {'inputs': inputs, 'targets': list(reversed(inputs))})