예제 #1
0
def evaluate(sess, SRL_Model, name, data, idx2label, logger):

	logger.info("evaluate:{}".format(name))
	srl_results = SRL_Model.evaluate_crf_model(sess, data, ELMo_context, ELMo_ids, idx2label)

	eval_lines = test_srl(srl_results)
	for line in eval_lines:
		logger.info(line.strip())
	f1 = float(eval_lines[1].strip().split()[-1])

	if name == "dev":
		best_test_f1 = SRL_Model.best_dev_f1.eval(session=sess)
		if f1 > best_test_f1:
			tf.assign(SRL_Model.best_dev_f1, f1).eval(session=sess)
			logger.info("new best dev f1 score:{:>.3f}".format(f1))

		if f1 > best_test_f1:
			final_report = eval_lines
		else:
			final_report = None

		return f1 > best_test_f1, f1, final_report
	elif name == "test":
		best_test_f1 = SRL_Model.best_test_f1.eval(session=sess)
		if f1 > best_test_f1:
			tf.assign(SRL_Model.best_test_f1, f1).eval(session=sess)
			logger.info("new best test f1 score:{:>.3f}".format(f1))

		return f1 > best_test_f1, f1, eval_lines
예제 #2
0
def evaluate(sess, model, name, data, id_to_tag, logger):
	logger.info("evaluate:{}".format(name))
	
	srl_results = model.evaluate_model(sess, data, id_to_tag)
	eval_lines = test_srl(srl_results, FLAGS.result_path)
	for line in eval_lines:
		logger.info(line.strip())
	f1 = float(eval_lines[1].strip().split()[-1])

	if name == "dev":
		best_test_f1 = model.best_dev_f1.eval(session=sess)
		if f1 > best_test_f1:
			tf.assign(model.best_dev_f1, f1).eval(session=sess)
			logger.info("new best dev f1 score:{:>.3f}".format(f1))
		return f1 > best_test_f1, f1
	elif name == "test":
		best_test_f1 = model.best_test_f1.eval(session=sess)
		if f1 > best_test_f1:
			tf.assign(model.best_test_f1, f1).eval(session=sess)
			logger.info("new best test f1 score:{:>.3f}".format(f1))
		return f1 > best_test_f1, f1