class_docstr: Invertible `TextEncoder` using word pieces with a byte-level fallback.
  
  Encoding is fully invertible because all out-of-vocab wordpieces are
  byte-encoded.
  
  The vocabulary is "trained" on a corpus and all wordpieces are stored in a
  vocabulary file. To generate a vocabulary from a corpus, use
  `tfds.deprecated.text.SubwordTextEncoder.build_from_corpus`.
  
  Typical usage:
  
  ```
  # Build
  encoder = tfds.deprecated.text.SubwordTextEncoder.build_from_corpus(
      corpus_generator, target_vocab_size=2**15)
  encoder.save_to_file(vocab_fname)
  
  # Load
  encoder = tfds.deprecated.text.SubwordTextEncoder.load_from_file(vocab_fname)
  ids = encoder.encode("hello world")
  text = encoder.decode([1, 2, 3, 4])
  ```
docstr: Converts a subword integer ID to a subword string.
docstr_tok: ["Converts","a","subword","integer","ID","to","a","subword","string","."]
code: def _id_to_subword(self, subword_id):
      """Converts a subword integer ID to a subword string."""
      if subword_id < 0 or subword_id >= (self.vocab_size - 1):
          raise ValueError(
              "Received id %d which is invalid. Ids must be within [0, %d)."
              % (subword_id + 1, self.vocab_size)
          )
  
      if 0 <= subword_id < len(self._subwords):
          # Subword
          return self._subwords[subword_id]
      else:
          # Byte
          offset = len(self._subwords)
          subword_id -= offset
          bytestr = bytes(bytearray([subword_id]))
          return bytestr
  
imports: from __future__ import unicode_literals
  import collections
  from absl import logging
  from tensorflow_datasets.core.deprecated.text import text_encoder
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
label_desc: Use image node_id 8 for calling the SubwordTextEncoder obj's underlying member method code with example usage: obj._id_to_subword(subword_id) and returns: self, bytestr