class_docstr: Provides 2 main methods that syllabify words given phonology of its language.
docstr: >>> from cltk.phonology.gmh.syllabifier import DIPHTHONGS, TRIPHTHONGS, SHORT_VOWELS, LONG_VOWELS, CONSONANTS
  >>> gmh_syllabifier = Syllabifier()
  >>> gmh_syllabifier.set_short_vowels(SHORT_VOWELS)
  >>> gmh_syllabifier.set_vowels(SHORT_VOWELS+LONG_VOWELS)
  >>> gmh_syllabifier.set_diphthongs(DIPHTHONGS)
  >>> gmh_syllabifier.set_triphthongs(TRIPHTHONGS)
  >>> gmh_syllabifier.set_consonants(CONSONANTS)
  
  >>> gmh_syllabifier.syllabify_mop('entslâfen')
  ['ent', 'slâ', 'fen']
  
  >>> gmh_syllabifier.syllabify_mop('fröude')
  ['fröu', 'de']
  
  >>> gmh_syllabifier.syllabify_mop('füerest')
  ['füe', 'rest']
  
  >>> from cltk.phonology.enm.syllabifier import DIPHTHONGS, TRIPHTHONGS, SHORT_VOWELS, LONG_VOWELS
  >>> enm_syllabifier = Syllabifier()
  >>> enm_syllabifier.set_short_vowels(SHORT_VOWELS)
  >>> enm_syllabifier.set_vowels(SHORT_VOWELS+LONG_VOWELS)
  >>> enm_syllabifier.set_diphthongs(DIPHTHONGS)
  >>> enm_syllabifier.set_triphthongs(TRIPHTHONGS)
  
  
  >>> enm_syllabifier.syllabify_mop('heldis')
  ['hel', 'dis']
  >>> enm_syllabifier.syllabify_mop('greef')
  ['greef']
  
  Once you syllabify the word, the result will be saved as a class
  variable
  
  >>> enm_syllabifier.syllabify_mop('commaundyd')
  ['com', 'mau', 'ndyd']
  
  :param word: word to syllabify
  :return: syllabified word
docstr_tok: [">",">",">","from","cltk.phonology.gmh.syllabifier","import","DIPHTHONGS",",","TRIPHTHONGS",",","SHORT_VOWELS",",","LONG_VOWELS",",","CONSONANTS",">",">",">","gmh_syllabifier","=","Syllabifier","(",")",">",">",">","gmh_syllabifier.set_short_vowels","(","SHORT_VOWELS",")",">",">",">","gmh_syllabifier.set_vowels","(","SHORT_VOWELS+LONG_VOWELS",")",">",">",">","gmh_syllabifier.set_diphthongs","(","DIPHTHONGS",")",">",">",">","gmh_syllabifier.set_triphthongs","(","TRIPHTHONGS",")",">",">",">","gmh_syllabifier.set_consonants","(","CONSONANTS",")",">",">",">","gmh_syllabifier.syllabify_mop","(","'entsl\u00e2fen","'",")","[","'ent","'",",","'sl\u00e2","'",",","'fen","'","]",">",">",">","gmh_syllabifier.syllabify_mop","(","'fr\u00f6ude","'",")","[","'fr\u00f6u","'",",","'de","'","]",">",">",">","gmh_syllabifier.syllabify_mop","(","'f\u00fcerest","'",")","[","'f\u00fce","'",",","'rest","'","]",">",">",">","from","cltk.phonology.enm.syllabifier","import","DIPHTHONGS",",","TRIPHTHONGS",",","SHORT_VOWELS",",","LONG_VOWELS",">",">",">","enm_syllabifier","=","Syllabifier","(",")",">",">",">","enm_syllabifier.set_short_vowels","(","SHORT_VOWELS",")",">",">",">","enm_syllabifier.set_vowels","(","SHORT_VOWELS+LONG_VOWELS",")",">",">",">","enm_syllabifier.set_diphthongs","(","DIPHTHONGS",")",">",">",">","enm_syllabifier.set_triphthongs","(","TRIPHTHONGS",")",">",">",">","enm_syllabifier.syllabify_mop","(","'heldis","'",")","[","'hel","'",",","'dis","'","]",">",">",">","enm_syllabifier.syllabify_mop","(","'greef","'",")","[","'greef","'","]","Once","you","syllabify","the","word",",","the","result","will","be","saved","as","a","class","variable",">",">",">","enm_syllabifier.syllabify_mop","(","'commaundyd","'",")","[","'com","'",",","'mau","'",",","'ndyd","'","]",":","param","word",":","word","to","syllabify",":","return",":","syllabified","word"]
code: def syllabify_mop(self, word: str) -> List[str]:
      """
      >>> from cltk.phonology.gmh.syllabifier import DIPHTHONGS, TRIPHTHONGS, SHORT_VOWELS, LONG_VOWELS, CONSONANTS
      >>> gmh_syllabifier = Syllabifier()
      >>> gmh_syllabifier.set_short_vowels(SHORT_VOWELS)
      >>> gmh_syllabifier.set_vowels(SHORT_VOWELS+LONG_VOWELS)
      >>> gmh_syllabifier.set_diphthongs(DIPHTHONGS)
      >>> gmh_syllabifier.set_triphthongs(TRIPHTHONGS)
      >>> gmh_syllabifier.set_consonants(CONSONANTS)
  
      >>> gmh_syllabifier.syllabify_mop('entslâfen')
      ['ent', 'slâ', 'fen']
  
      >>> gmh_syllabifier.syllabify_mop('fröude')
      ['fröu', 'de']
  
      >>> gmh_syllabifier.syllabify_mop('füerest')
      ['füe', 'rest']
  
      >>> from cltk.phonology.enm.syllabifier import DIPHTHONGS, TRIPHTHONGS, SHORT_VOWELS, LONG_VOWELS
      >>> enm_syllabifier = Syllabifier()
      >>> enm_syllabifier.set_short_vowels(SHORT_VOWELS)
      >>> enm_syllabifier.set_vowels(SHORT_VOWELS+LONG_VOWELS)
      >>> enm_syllabifier.set_diphthongs(DIPHTHONGS)
      >>> enm_syllabifier.set_triphthongs(TRIPHTHONGS)
  
  
      >>> enm_syllabifier.syllabify_mop('heldis')
      ['hel', 'dis']
      >>> enm_syllabifier.syllabify_mop('greef')
      ['greef']
  
      Once you syllabify the word, the result will be saved as a class
      variable
  
      >>> enm_syllabifier.syllabify_mop('commaundyd')
      ['com', 'mau', 'ndyd']
  
      :param word: word to syllabify
      :return: syllabified word
      """
      # Array holding the index of each given syllable
      ind = []
  
      i = 0
      # Iterate through letters of word searching for the nuclei
      while i < len(word) - 1:
          if word[i] in self.vowels:
              nucleus = ""
  
              # Find cluster of vowels
              while word[i] in self.vowels and i < len(word) - 1:
                  nucleus += word[i]
                  i += 1
  
              try:
                  # Check whether it is succeeded by a geminant
  
                  if word[i] == word[i + 1]:
                      ind.append(i)
                      i += 2
                      continue
  
                  # elif sum(c not in self.consonants for c in word[i: i + 3]) == 0:
                  #     ind.append(i - 1 if word[i: i + 3] in self.triphthongs else i)
                  #     i += 3
                  #     continue
  
              except IndexError:
                  pass
  
              if nucleus in self.short_vowels:
                  ind.append(
                      i + 2
                      if word[i : i + 3] in self.triphthongs
                      else i + 1
                      if word[i : i + 2] in self.diphthongs
                      else i
                  )
                  continue
  
              else:
                  ind.append(i - 1)
                  continue
  
          i += 1
  
      # Check whether the last syllable should be merged with the previous one
      try:
          if ind[-1] in [len(word) - 2, len(word) - 1]:
              ind = ind[: -(1 + (ind[-2] == len(word) - 2))]
  
      except IndexError:
          if len(ind) > 0 and ind[-1] in [len(word) - 2, len(word) - 1]:
              ind = ind[:-1]
  
      syllables = word
  
      for n, k in enumerate(ind):
          syllables = (
              syllables[: k + n + 1] + "." + syllables[k + n + 1 :]
          )
  
      # Check whether the last syllable lacks a vowel nucleus
  
      syllables = syllables.split(".")
  
      if sum(map(lambda x: x in self.short_vowels, syllables[-1])) == 0:
          syllables[-2] += syllables[-1]
          syllables = syllables[:-1]
  
      return syllables
  
imports: import logging
  import unicodedata
  from collections import defaultdict
  from typing import List, Union
  import cltk.phonology.ang.syllabifier
  import cltk.phonology.enm.syllabifier
  import cltk.phonology.gmh.syllabifier
  import cltk.phonology.non.syllabifier
  import cltk.phonology.non.utils
  from cltk.core.exceptions import CLTKException
label_desc: Use image node_id 10 for calling the Syllabifier obj's underlying member method code with example usage: obj.syllabify_mop(word) and returns: syllables