code: def split_leading_punct(
      text: str, punctuation: Optional[List[str]] = None
  ) -> str:
      """Some tokenizers, including that in Stanza, do not always
      handle punctuation properly. For example, an open curly
      quote  (``"‘κατηγόρων’"``) is not split into an extra punctuation
      token. This function does such splitting on raw text before
      being sent to such a tokenizer.
  
      Args:
          text: Input text string.
          punctuation: List of punctuation that should be split when before a word.
  
      Returns:
          Text string with leading punctuation separated by a whitespace character.
  
      >>> raw_text = "‘κατηγόρων’, οὐκ οἶδα: ἐγὼ δ᾽ οὖν"
      >>> split_leading_punct(text=raw_text)
      '‘ κατηγόρων’, οὐκ οἶδα: ἐγὼ δ᾽ οὖν'
      """
      if not punctuation:
          punctuation = ["‘", "“"]  # opening curly quotes
      new_chars: List[str] = list()
      last_char_idx = len(text) - 1
      for index, char in enumerate(text):
          # If at end of string, don't split
          if index == last_char_idx:
              new_chars.append(char)
              continue
          next_char = text[index + 1]
          # If there is already a whitespace ahead, do not add another
          if next_char.isspace():
              new_chars.append(char)
              continue
          else:
              if char in punctuation:
                  new_chars.append(f"{char} ")
              else:
                  new_chars.append(char)
      return "".join(new_chars)
  
file_path: cltk/src/cltk/alphabet/text_normalization.py
imports: from typing import List, Optional
  from unicodedata import normalize
label_desc: Use image node_id 5 for calling a global function with example usage: split_leading_punct(text, punctuation) and returns: str