def test_fit_and_predict_with_new_labels_set_via_method(self): # Initialize model invalid_entities = {"PAD": 0, "BACKGROUND": 1, "test3": 2} cnn_model = CharacterLevelCnnModel(invalid_entities) cnn_model._construct_model() invalid_entities2 = {"PAD": 0, "BACKGROUND": 1} cnn_model.set_label_mapping(invalid_entities2) cnn_model._reconstruct_model() cnn_model.set_label_mapping(self.label_mapping) # data for model data_gen = [[ np.array([['test']]), # x_data np.zeros((1, 3400, max(self.label_mapping.values()) + 1)) ] # y_data ] cv_gen = data_gen cnn_model._construct_model() # set different labels cnn_model.set_label_mapping(self.label_mapping) history, f1, f1_report = cnn_model.fit(data_gen, cv_gen) # test predict on just the text cnn_model.predict(data_gen[0][0])
def test_set_label_mapping(self, *mocks): # load default cnn_model = CharacterLevelCnnModel(self.label_mapping) # test not dict label_mapping = None with self.assertRaisesRegex( TypeError, "Labels must either be a non-empty encoding dict " "which maps labels to index encodings or a list."): cnn_model.set_label_mapping(label_mapping) # test raise error for setting non PAD to 0 label_mapping = {'TEST': 0} with self.assertRaisesRegex(ValueError, "`PAD` must map to index zero."): cnn_model.set_label_mapping(label_mapping) # test raise error for setting PAD other than 0 label_mapping = {'PAD': 1} with self.assertRaisesRegex(ValueError, "`PAD` must map to index zero."): cnn_model.set_label_mapping(label_mapping) # test raise error if default label not in mapping label_mapping = {'PAD': 0} with self.assertRaisesRegex( ValueError, "The `default_label` of BACKGROUND must " "exist in the label mapping."): cnn_model.set_label_mapping(label_mapping) # test label_mapping without PAD label_mapping = { 'CITY': 1, # SAME AS BACKGROUND 'BACKGROUND': 1, 'ADDRESS': 2, } cnn_model.set_label_mapping(label_mapping) self.assertNotEqual(label_mapping, cnn_model.label_mapping) label_mapping['PAD'] = 0 self.assertDictEqual(label_mapping, cnn_model.label_mapping) # test label_mapping with PAD: 0 label_mapping = { 'PAD': 0, 'CITY': 1, # SAME AS BACKGROUND 'BACKGROUND': 1, 'ADDRESS': 2, } cnn_model.set_label_mapping(label_mapping) self.assertDictEqual(label_mapping, cnn_model.label_mapping)