class_docstr: Adapted from the original PhraseTokenizer tests.
code: def testPhraseOp(
      self,
      tokens,
      expected_subwords,
      vocab,
      unknown_token="<UNK>",
      token_out_type=dtypes.string,
  ):
      tokens_t = ragged_factory_ops.constant(tokens)
      tokenizer = PhraseTokenizer(
          vocab=vocab,
          unknown_token=unknown_token,
          token_out_type=token_out_type,
          split_end_punctuation=True,
      )
      subwords_t = tokenizer.tokenize(tokens_t)
      self.assertAllEqual(subwords_t, expected_subwords)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl import flags
  from absl.testing import parameterized
  import tensorflow
  from tensorflow.python.data.kernel_tests import test_base
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.platform import test
  from tensorflow_text.python.ops.phrase_tokenizer import PhraseTokenizer
label_desc: Use image node_id 1 for calling the PhraseOpOriginalTest obj's underlying member method code with example usage: obj.testPhraseOp(tokens, expected_subwords, vocab, unknown_token, token_out_type) without return types