code: def test_dense_input_with_multiple_ngrams(self):
      data = [[b"a", b"b", b"c", b"d"], [b"e", b"f", b"g", b"h"]]
      data_tensor = ragged_factory_ops.constant(data)
      ngram_op = ragged_string_ops.ngrams(
          data_tensor, ngram_width=(1, 2, 3), separator=b"|"
      )
      result = self.evaluate(ngram_op)
      expected_ngrams = [
          [
              b"a",
              b"b",
              b"c",
              b"d",
              b"a|b",
              b"b|c",
              b"c|d",
              b"a|b|c",
              b"b|c|d",
          ],
          [
              b"e",
              b"f",
              b"g",
              b"h",
              b"e|f",
              b"f|g",
              b"g|h",
              b"e|f|g",
              b"f|g|h",
          ],
      ]
      self.assertAllEqual(expected_ngrams, result)
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_string_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 21 for calling the StringNgramsTest obj's underlying member method code with example usage: obj.test_dense_input_with_multiple_ngrams() without return types