code: def baby_names(max_length=15):
    
    names = []
    lengths = []
    targets = []
    with open(os.path.join(os.path.dirname(sys.modules[__name__].__file__),
                           'baby_names.csv'), 'rb') as f:
      first = True
      for l in csv.reader(f, delimiter=','):
        if first:
          first = False
          continue
        assert len(l) == 4, l
        name = l[0]
        if max_length < len(name):
          raise ValueError('Max length is too small: %d > %d' %
                           (max_length, len(name)))
        chars = [convert_to_int(c) for c in name]
        names.append(chars + ([EOS] * (max_length - len(chars))))
        lengths.append([len(name)])
        values = [float(l[2]), float(l[3])]
        if abs(sum(values) - 1) > 0.001:
          raise ValueError('Each row must sum to 1: %s' % l)
        targets.append(values)
    return np.array(names), np.array(targets), np.array(lengths)
docs: Opens the baby_names csv file and produces numpy array.
  
    Args:
      max_length: The maximum length, 15 was the longest name when this was
        written.  Short entries will be padded with the EOS marker.
    Returns:
      A numpy array of the names converted to ascii codes, the labels and an
      array of lengths.
    Raises:
      ValueError: if max_length is too small.