code: def reverse_generator_nlplike(nbr_symbols,
                                max_length,
                                nbr_cases,
                                scale_std_dev=100,
                                alpha=1.5):
    
    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))}
docs: 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.