code: def text_dataset_from_directory(
      directory: str,
      batch_size: int = 32,
      max_length: Optional[int] = None,
      shuffle: bool = True,
      seed: Optional[int] = None,
      validation_split: Optional[float] = None,
      subset: Optional[str] = None,
  ) -> tf.data.Dataset:
      """Generates a `tf.data.Dataset` from text files in a directory.
  
      If your directory structure is:
  
      ```
      main_directory/
      ...class_a/
      ......a_text_1.txt
      ......a_text_2.txt
      ...class_b/
      ......b_text_1.txt
      ......b_text_2.txt
      ```
  
      Then calling `text_dataset_from_directory(main_directory)`
      will return a `tf.data.Dataset` that yields batches of texts from
      the subdirectories `class_a` and `class_b`, together with labels
      'class_a' and 'class_b'.
  
      Only `.txt` files are supported at this time.
  
      # Arguments
          directory: Directory where the data is located.
              If `labels` is "inferred", it should contain
              subdirectories, each containing text files for a class.
              Otherwise, the directory structure is ignored.
          batch_size: Size of the batches of data. Defaults to 32.
          max_length: Maximum size of a text string. Texts longer than this will
              be truncated to `max_length`.
          shuffle: Whether to shuffle the data. Default: True.
              If set to False, sorts the data in alphanumeric order.
          seed: Optional random seed for shuffling and transformations.
          validation_split: Optional float between 0 and 1,
              fraction of data to reserve for validation.
          subset: One of "training" or "validation".
              Only used if `validation_split` is set.
  
      # Returns
          A `tf.data.Dataset` object, which yields a tuple `(texts, labels)`,
              where both has shape `(batch_size,)` and type of tf.string.
      """
      if seed is None:
          seed = np.random.randint(1e6)
      file_paths, labels, class_names = index_directory(
          directory,
          "inferred",
          formats=(".txt",),
          shuffle=shuffle,
          seed=seed,
      )
  
      file_paths, labels = get_training_or_validation_split(
          file_paths, labels, validation_split, subset
      )
  
      strings = tf.data.Dataset.from_tensor_slices(file_paths)
      strings = strings.map(tf.io.read_file)
      if max_length is not None:
          strings = strings.map(
              lambda x: tf.strings.substr(x, 0, max_length)
          )
  
      labels = np.array(class_names)[np.array(labels)]
      labels = tf.data.Dataset.from_tensor_slices(labels)
  
      dataset = tf.data.Dataset.zip((strings, labels))
      dataset = dataset.batch(batch_size)
      return dataset
  
file_path: autokeras/autokeras/utils/io_utils.py
imports: import json
  import multiprocessing
  import os
  from typing import Optional
  from typing import Tuple
  import numpy
  import tensorflow
  from keras_tuner.engine import hyperparameters
label_desc: Use image node_id 7 for calling a global function with example usage: text_dataset_from_directory(directory, batch_size, max_length, shuffle, seed, validation_split, subset) and returns: dataset