code: def apply_extracted_fills(self, masked_texts, extracted_id_to_fills):
      # split masked text into tokens, only splitting on spaces (not
      # newlines)
      tokens = [x.split(" ") for x in masked_texts]
  
      n_expected = self.count_masks(masked_texts)
  
      for i, (text, n_fills) in enumerate(zip(tokens, n_expected)):
          for fill_idx in range(n_fills):
              fill_token = f"<extra_id_{fill_idx}>"
              if fill_token not in text:
                  continue
              if fill_token in extracted_id_to_fills[i]:
                  text[text.index(fill_token)] = extracted_id_to_fills[
                      i
                  ][fill_token]
              else:
                  text[text.index(fill_token)] = ""
  
      # join tokens back into text
      texts = [" ".join(x) for x in tokens]
      return texts
  
imports: import numpy
  from abc import ABC, abstractmethod
  from .text_utils import extract_non_overlapping_ngrams
label_desc: Use image node_id 7 for calling the PerturbationModel obj's underlying member method code with example usage: obj.apply_extracted_fills(masked_texts, extracted_id_to_fills) and returns: texts