code: def _split_chunks(self, dirty_string, dirty_parts):
      clean_chunks = []
      splice_idx = 0
      end = -1
      for i, (ngram, start, end) in enumerate(dirty_parts):
          if i >= self.too_dirty_cutoff:
              return []
          start = max(0, start - self.window_to_remove)
          end = min(len(dirty_string), end + self.window_to_remove)
  
          if start - splice_idx > self.minimum_slice_length:
              clean_chunks.append(dirty_string[splice_idx:start])
          splice_idx = end
  
      if end < len(dirty_string) - self.minimum_slice_length:
          clean_chunks.append(dirty_string[end + 1 :])
  
      return clean_chunks
  
imports: import re
  import string
  import timeit
  import pickle
  import traceback
  from pprint import pprint
label_desc: Use image node_id 6 for calling the Janitor obj's underlying member method code with example usage: obj._split_chunks(dirty_string, dirty_parts) and returns: clean_chunks, list