def test_entity_evaluation_report(tmp_path: Path): path = tmp_path / "evaluation" path.mkdir() report_folder = str(path / "reports") report_filename_a = os.path.join(report_folder, "EntityExtractorA_report.json") report_filename_b = os.path.join(report_folder, "EntityExtractorB_report.json") rasa.shared.utils.io.create_directory(report_folder) extractors = _get_active_entity_extractors([EN_entity_result]) result = evaluate_entities( [EN_entity_result], extractors, report_folder, errors=True, successes=True, disable_plotting=False, ) report_a = json.loads(rasa.shared.utils.io.read_file(report_filename_a)) report_b = json.loads(rasa.shared.utils.io.read_file(report_filename_b)) assert len(report_a) == 6 assert report_a["datetime"]["support"] == 1.0 assert report_b["macro avg"]["recall"] == 0.0 assert report_a["macro avg"]["recall"] == 0.5 assert result["EntityExtractorA"]["accuracy"] == 0.75 assert os.path.exists( os.path.join(report_folder, "EntityExtractorA_confusion_matrix.png") ) assert os.path.exists(os.path.join(report_folder, "EntityExtractorA_errors.json")) assert os.path.exists( os.path.join(report_folder, "EntityExtractorA_successes.json") ) assert not os.path.exists( os.path.join(report_folder, "EntityExtractorA_histogram.png") )
def test_get_active_entity_extractors( entity_results: List[EntityEvaluationResult], expected_extractors: Set[Text] ): extractors = _get_active_entity_extractors(entity_results) assert extractors == expected_extractors