docs: def _loadKSubcatRelations( inputFile ):
      ''' Laeb sisendfailist (inputFile) kaassõnade rektsiooniseoste mustrid.
          Iga muster peab olema failis eraldi real, kujul:
          (sõnalemma);(sõnaliik);(post|pre);(nõutud_käänete_regexp)
          nt
              ees;_K_;post;g
              eest;_K_;post;g
              enne;_K_;pre;p
          Tagastab laetud andmed sõnastikuna;
      '''
      kSubCatRelations = dict()
      in_f = codecs.open(inputFile, mode='r', encoding='utf-8')
      for line in in_f:
          line = line.rstrip()
          if len(line) > 0 and not re.match("^#.+$", line):
              items = line.split(';')
              if len(items) == 4:
                  root         = items[0]
                  partofspeech = items[1]
                  postPre      = items[2]
                  morphPattern = items[3]
                  fpattern = '(sg|pl)\s'+morphPattern
                  if root not in kSubCatRelations:
                      kSubCatRelations[root] = []
                  kSubCatRelations[root].append( [postPre, fpattern] )
                  root_clean = root.replace('_', '')
                  if root != root_clean:
                      if root_clean not in kSubCatRelations:
                          kSubCatRelations[root_clean] = []
                      kSubCatRelations[root_clean].append( [postPre, fpattern] )
              else:
                  raise Exception(' Unexpected number of items in the input lexicon line: '+line)
      in_f.close()
      return kSubCatRelations