Normalize unicode strings tensor.

    Args:
        source: `Tensor` or `SparseTensor` of any shape, strings to normalize.
        form: Scalar value, name of normalization algorithm.
            One of `"NFD"`, `"NFC"`, `"NFKD"`, `"NFKC"`.
        name: A name for the operation (optional).
    Returns:
        `Tensor` or `SparseTensor` of same shape and size as input.

def transform_normalize_unicode(source, form, name=None):
    """Normalize unicode strings tensor.

    Args:
        source: `Tensor` or `SparseTensor` of any shape, strings to normalize.
        form: Scalar value, name of normalization algorithm.
            One of `"NFD"`, `"NFC"`, `"NFKD"`, `"NFKC"`.
        name: A name for the operation (optional).
    Returns:
        `Tensor` or `SparseTensor` of same shape and size as input.
    """

    with ops.name_scope(name, "TransformNormalizeUnicode", [source]):
        source = convert_to_tensor_or_sparse_tensor(source, dtype=tf.string)
        if isinstance(source, tf.SparseTensor):
            result = tf.SparseTensor(
                indices=source.indices,
                values=ops_module.transform_normalize_unicode(source.values, form),
                dense_shape=source.dense_shape
            )
        else:
            result = ops_module.transform_normalize_unicode(source, form)

        return result