class_docstr: Runs end-to-end tokenization.
code: def tokenize(self, text):
      split_tokens = []
      token_starts = []
      token_ends = []
  
      for token, token_idx in zip(*self.basic_tokenizer.tokenize(text)):
          subtokens = self.wordpiece_tokenizer.tokenize(
              token, token_idx
          )[0]
          if subtokens == [self.wordpiece_tokenizer.unk_token]:
              subtokens = [
                  token
              ]  # this will be unked later but it keeps lengths intact
          split_tokens.extend(subtokens)
  
          token_start = token_idx[0]
          subtoken_ends = (
              np.cumsum(
                  [len(tok.replace("##", "")) for tok in subtokens]
              )
              + token_start
          )
  
          token_ends.extend(subtoken_ends)
          token_starts.extend(
              [token_start] + subtoken_ends[:-1].tolist()
          )
  
      return split_tokens, token_starts, token_ends
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  import re
  import unicodedata
  import six
  import numpy
  import tensorflow
label_desc: Use image node_id 2 for calling the FullTokenizer obj's underlying member method code with example usage: obj.tokenize(text) and returns: split_tokens,  token_starts,  token_ends