code: def expand_char_ngrams(source, minn, maxn, itself='ASIS', name=None):
      
  
      with ops.name_scope(name, "ExpandCharNgrams", [source]):
          source = convert_to_tensor_or_sparse_tensor(source, dtype=tf.string)
          if isinstance(source, tf.SparseTensor):
              child_indices, child_values, child_shape = ops_module.expand_char_ngrams(source.values, minn, maxn, itself)
              result = _combine_sparse_successor(source.indices, source.dense_shape, child_indices, child_values,
                                                 child_shape)
          else:
              indices, values, shape = ops_module.expand_char_ngrams(source, minn, maxn, itself)
              result = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)
  
          return result
docs: Split unicode strings into char ngrams.
      Ngrams size configures with minn and max
  
      Args:
          source: `Tensor` or `SparseTensor` of any shape, strings to split
          minn: Minimum length of char ngram
          minn: Maximum length of char ngram
          itself: Scalar value, strategy for source word preserving.
              One of `"ASIS"`, `"NEVER"`, `"ALWAYS"`, `"ALONE"`.
          name: A name for the operation (optional).
      Returns:
          `SparseTensor` with an additional dimension of size 1 added.