def _handle_example_element(self, record_id):
        #annotate phrase
        self._current_ids['phrase'] = self._current_ids['seq']
        self._current_ids['seq'] += 1
        ann_type = self._tier_labels.tier_label(poioapi.data.TIER_UTTERANCE)
        phrase_id = 'a{0}'.format(self._current_ids['phrase'])
        self._annotations_for_parent[(record_id, ann_type)].append(
            poioapi.io.graf.Annotation(phrase_id, self._tier_block['phrase']))

        # validate quantities of words/morphemes and glosses
        words = self._tier_block['word'].split()
        morphemes = self._tier_block['morpheme'].split()
        glosses = self._tier_block['gloss'].split()
        gt_with_underscore = [a for a in glosses
                              if self._string_has_char_inside(a, '_')]

        if len(morphemes) > len(glosses):
            if len(gt_with_underscore) == 0:
                return

        # annotate the rest.
        gloss_to_next_word = None
        gloss_idx = 0
        for word, morpheme in zip(words, morphemes):
            # words
            self._current_ids['word'] = self._current_ids['seq']
            self._current_ids['seq'] += 1
            word_id = 'a{0}'.format(self._current_ids['word'])
            word_type = self._tier_labels.tier_label(poioapi.data.TIER_WORD)
            self._annotations_for_parent[(phrase_id, word_type)].append(
                poioapi.io.graf.Annotation(word_id, word))

            # morphemes and glosses
            if self._string_has_char_inside(morpheme, '-'):
                morphemes_for_word = morpheme.split('-')
                # assuming that if the morpheme has hyphen, so does the gloss
                # and that the gloss special case doesn't occur
                glosses_for_word = glosses[gloss_idx].split('-')
                for m, g in zip(morphemes_for_word, glosses_for_word):
                    # morpheme handling done, annotate it
                    self._annotate_morpheme(m)
                    for sg in g.split('.'):
                        # gloss handling finished, annotate
                        self._annotate_gloss(sg)

                # increment the gloss indexer
                gloss_idx += 1
            else:
                # morpheme handling is done, annotate it
                self._annotate_morpheme(morpheme)
                if gloss_to_next_word is not None:
                    self._annotate_gloss(gloss_to_next_word)
                    gloss_to_next_word = None
                else:
                    gloss = glosses[gloss_idx]
                    if self._string_has_char_inside(gloss, '_'):
                        # assuming that if it has an underscore, it is only one
                        gt = gloss.split('_')
                        self._annotate_gloss(gt[0])
                        gloss_to_next_word = gt[1]
                    else:
                        self._annotate_gloss(gloss)
                        gloss_to_next_word = None
                    # increment the gloss indexer
                    gloss_idx += 1
        self._annotate_translation(phrase_id)
Returns the J x J prediction table.
dataset/ETHPy150Open cidles/poio-api/src/poioapi/io/odin.py/Parser._handle_example_element--crossover with--dataset/ETHPy150Open statsmodels/statsmodels/statsmodels/discrete/discrete_model.py/MultinomialResults.pred_table