docs: def get_analysis_dict( root, pos, form ):
      '''  Takes *root*, *pos* and *form* from Filosoft's mrf input and reformats as 
           EstNLTK's analysis dict:
            {
               "clitic":       string,
               "ending":       string,
               "form":         string,
               "partofspeech": string,
               "root":         string
            },
           Returns the dict;
      ''' 
      import sys
      result = { CLITIC:"", ENDING:"", FORM:form, POSTAG:pos, ROOT:"" }
      breakpoint = -1
      for i in range(len(root)-1, -1, -1):
          if root[i] == '+':
              breakpoint = i
              break
      if breakpoint == -1:
          result[ROOT]   = root
          result[ENDING] = "0"
          if not re.match("^\W+$", root):
              try:
                  print( " No breakpoint found from: ", root, pos, form, file=sys.stderr )
              except UnicodeEncodeError:
                  print( " No breakpoint found from input *root*!",  file=sys.stderr )
      else:
          result[ROOT]   = root[0:breakpoint]
          result[ENDING] = root[breakpoint+1:]
      if result[ENDING].endswith('ki') and len(result[ENDING]) > 2:
          result[CLITIC] = 'ki'
          result[ENDING] = re.sub('ki$', '', result[ENDING])
      if result[ENDING].endswith('gi') and len(result[ENDING]) > 2:
          result[CLITIC] = 'gi'
          result[ENDING] = re.sub('gi$', '', result[ENDING])
      return result