code: def init_from_files(
        vocab_file, files, target_vocab_size, threshold, min_count=None,
        file_byte_limit=1e6, reserved_tokens=None):
      
      if reserved_tokens is None:
        reserved_tokens = RESERVED_TOKENS
  
      if tf.gfile.Exists(vocab_file):
        tf.logging.info("Vocab file already exists (%s)" % vocab_file)
      else:
        tf.logging.info("Begin steps to create subtoken vocabulary...")
        token_counts = _count_tokens(files, file_byte_limit)
        alphabet = _generate_alphabet_dict(token_counts)
        subtoken_list = _generate_subtokens_with_target_vocab_size(
            token_counts, alphabet, target_vocab_size, threshold, min_count,
            reserved_tokens)
        tf.logging.info("Generated vocabulary with %d subtokens." %
                        len(subtoken_list))
        mlperf_log.transformer_print(key=mlperf_log.PREPROC_VOCAB_SIZE,
                                     value=len(subtoken_list))
        _save_vocab_file(vocab_file, subtoken_list)
      return Subtokenizer(vocab_file)
docs: Create subtoken vocabulary based on files, and save vocab to file.
  
      Args:
        vocab_file: String name of vocab file to store subtoken vocabulary.
        files: List of file paths that will be used to generate vocabulary.
        target_vocab_size: target vocabulary size to generate.
        threshold: int threshold of vocabulary size to accept.
        min_count: int minimum count to use for generating the vocabulary. The min
          count is the minimum number of times a subtoken should appear in the
          files before it is added to the vocabulary. If set to none, this value
          is found using binary search.
        file_byte_limit: (Default 1e6) Maximum number of bytes of sample text that
          will be drawn from the files.
        reserved_tokens: List of string tokens that are guaranteed to be at the
          beginning of the subtoken vocabulary list.
  
      Returns:
        Subtokenizer object