utils.py (1309B)
1 from tensorboardX import SummaryWriter 2 3 class Summarizer(object): 4 def __init__(self, logdir='./log'): 5 self.writer = SummaryWriter(logdir) 6 7 def scalar_summary(self, tag, value, step): 8 self.writer.add_scalar(tag, value, step) 9 10 def text_summary(self, tag, value, step): 11 self.writer.add_text(tag, value, step) 12 13 def generate_vocabs(datasets): 14 event_type_set = set() 15 role_type_set = set() 16 for dataset in datasets: 17 event_type_set.update(dataset.event_type_set) 18 role_type_set.update(dataset.role_type_set) 19 20 event_type_itos = sorted(event_type_set) 21 role_type_itos = sorted(role_type_set) 22 23 event_type_stoi = {k: i for i, k in enumerate(event_type_itos)} 24 role_type_stoi = {k: i for i, k in enumerate(role_type_itos)} 25 26 return { 27 'event_type_itos': event_type_itos, 28 'event_type_stoi': event_type_stoi, 29 'role_type_itos': role_type_itos, 30 'role_type_stoi': role_type_stoi, 31 } 32 33 def safe_div(num, denom): 34 if denom > 0: 35 return num / denom 36 else: 37 return 0 38 39 def compute_f1(predicted, gold, matched): 40 precision = safe_div(matched, predicted) 41 recall = safe_div(matched, gold) 42 f1 = safe_div(2 * precision * recall, precision + recall) 43 return precision, recall, f1