class_docstr: Uses a reconstruction to transcribe a orthographic string into IPA.
docstr: Performs preparatory tasks grouping and reordering characters in order to make transcription formulaic.
  :param text:
  :return:
docstr_tok: ["Performs","preparatory","tasks","grouping","and","reordering","characters","in","order","to","make","transcription","formulaic",".",":","param","text",":",":","return",":"]
code: def _prep_text(self, text):
      """
      Performs preparatory tasks grouping and reordering characters in order to make transcription formulaic.
      :param text:
      :return:
      """
      string_in = "".join([self._parse_diacritics(ch) for ch in text])
      diph1 = "".join(list(set([d[0] for d in self.diphs])))
      # (list of all acceptable first chars in diphthongs)
      diph2 = "".join(list(set([d[1] for d in self.diphs])))
      # (list of all acceptable second chars in diphthongs)
  
      if self.h:
          # Locates acceptable diphthongs and treats them as single base
          # Combines all diacritics accordingly
          # Also finds any h's stranded in media diphthong (\3) and moves
          # them to the left edge
          pattern = (
              r"(["
              + diph1
              + r"])\/\/([̄]?\/)(h///)?(["
              + diph2
              + r"]\/[́͂]?\/)\/"
          )
          diphshift = re.sub(pattern, r"\3\1\4\2", string_in)
      else:
          # Same as above, minus h-moving
          pattern = (
              r"(["
              + diph1
              + r"])\/\/([̄]?\/)(["
              + diph2
              + r"]\/[́͂]?\/)\/"
          )
          diphshift = re.sub(pattern, r"\1\3\2", string_in)
      if self.i:
          # Locates iota subscripts and treats as base + iota diphthongs
          # Adds macron, since iota subscripts only appear on long vowels
          # (and we need to use all clues to identify long vowels)
          iotashift = re.sub(
              r"([αηω])(\/[́͂]*\/[̄ ̈]*)ͅ([̄ ̈]*\/)",
              r"\1ι\2̄\3",
              diphshift,
          )
      else:
          # Same as above, but deletes iota entirely: only adds macrons
          iotashift = re.sub(
              r"([αηω])(\/[́͂]*\/[̄ ̈]*)ͅ([̄ ̈]*\/)",
              r"\1\2̄\3",
              diphshift,
          )
      tup_out = re.findall(r"(..?)\/([́͂]*)\/([̄ ̈]*)\/", iotashift)
      return tup_out
  
imports: import re
  import unicodedata
  from typing import List
  from nltk.tokenize import wordpunct_tokenize
  from cltk.core.cltk_logger import logger
label_desc: Use image node_id 3 for calling the Transcriber obj's underlying member method code with example usage: obj._prep_text(text) and returns: tup_out