code: def _augment(self, data, n=1, num_thread=1):
      results = []
      augmented_data = data[:]
      parent_include_detail = self.include_detail
  
      change_logs = []
  
      for aug in self:
          if not self.draw():
              continue
  
          aug.include_detail = (
              parent_include_detail  # Follow parent setting
          )
          aug.parent_change_seq = self.parent_change_seq + len(
              change_logs
          )
          augmented_data = aug.augment(
              augmented_data, n=n, num_thread=num_thread
          )
          if aug.include_detail:
              # (augmented_data, change_log)
              change_logs.extend(augmented_data[1])
              augmented_data = augmented_data[0]
  
      # Data format output of each augmenter should be same
      for aug in self:
          if str(aug.__class__.__bases__[0]) == str(Pipeline):
              results.append(augmented_data)
              continue
          if not aug.is_duplicate(results + [data], augmented_data):
              results.append(augmented_data)
          break
  
      output = None
      if len(results) == 0:
          # if not result, return itself
          output = [data]
      else:
          output = results[:n]
  
      if parent_include_detail:
          return output, change_logs
      return output
  
file_path: nlpaug/nlpaug/flow/pipeline.py
imports: from nlpaug import Augmenter
  from nlpaug.augmenter.char import CharAugmenter
  from nlpaug.util import Method
label_desc: Use image node_id 5 for calling the Pipeline obj's underlying member method code with example usage: obj._augment(data, n, num_thread) and returns: output, output,  change_logs