code: def forward(model: Model, docs, is_train: bool):
      batch_keys = []
      batch_vals = []
      for doc in docs:
          unigrams = model.ops.asarray(
              doc.to_array([model.attrs["attr"]])
          )
          ngrams = [unigrams]
          for n in range(2, model.attrs["ngram_size"] + 1):
              ngrams.append(model.ops.ngrams(n, unigrams))  # type: ignore[arg-type]
          keys = model.ops.xp.concatenate(ngrams)
          keys, vals = model.ops.xp.unique(keys, return_counts=True)
          batch_keys.append(keys)
          batch_vals.append(vals)
      lengths = model.ops.asarray(
          [arr.shape[0] for arr in batch_keys], dtype="int32"
      )
      batch_keys = model.ops.xp.concatenate(batch_keys)
      batch_vals = model.ops.asarray(
          model.ops.xp.concatenate(batch_vals), dtype="f"
      )
  
      def backprop(dY):
          return []
  
      return (batch_keys, batch_vals, lengths), backprop
  
imports: from thinc.api import Model
  from ..attrs import LOWER
  from ..util import registry
label_desc: Use image node_id 2 for calling a global function with example usage: forward(model, docs, is_train) and returns: batch_keys,  batch_vals,  lengths,  backprop, list