code: def _phrase_process(cls, phrase: Span) -> Span:
      last_phrase = None
      while phrase != last_phrase:
          last_phrase = phrase
          for func_args in post_processing_rules:
              pf = func_args[0]
              args = func_args[1:]
              if len(args) > 0:
                  phrase = pf(phrase, *args)
              else:
                  phrase = pf(phrase)
              if phrase is None:
                  break
      return phrase
  
imports: import pickle
  from os import path
  import numpy
  import spacy
  from spacy.tokens import Doc
  from spacy.tokens import Span
  from nlp_architect.models.chunker import SequenceChunker
  from nlp_architect.utils.generic import pad_sentences
  from nlp_architect.utils.io import validate_existing_filepath
  from nlp_architect.utils.text import extract_nps, Stopwords
label_desc: Use image node_id 2 for calling the _NPPostprocessor obj's underlying member method code with example usage: obj._phrase_process(cls, phrase) and returns: phrase