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