Ejemplo n.º 1
0
    def report(self, show_flag: bool = True)\
            -> Dict[str, Dict[str, Dict[str, float]]]:
        """

        :param show_flag: if True, output reports to a console
        :return: reports for all, unknown only and known only NEs
                 {'all': {'NELABEL1': {'precision': 0.000,
                                       'recall': 0.000,
                                       'f1_score': 0.00},
                          'NELABEL2': {'precision': ...},
                          ...
                  'unknown': ..., 'known': ..., 'misses': ...
                          }}
        """

        sentences = self._dataset.get_sentences('test')
        known_words = self._dataset.known_NEs()
        predicts = self._model.predict_all(self.test_data[0])
        miner = Miner(self.test_data[1], predicts, sentences, known_words)
        return {
            'all': miner.default_report(show_flag),
            'unknown': miner.unknown_only_report(show_flag),
            'known': miner.known_only_report(show_flag),
            'misses': miner.return_miss_labelings(),
            'seg': {
                type_: miner.segmentation_score(type_, show_flag)
                for type_ in ['all', 'unknown', 'known']
            }
        }