UCDP-AEC

Models and data for the UCDP Abstractive Event analysis Corpus paper
git clone https://esimon.eu/repos/UCDP-AEC.git
Log | Files | Refs | README | LICENSE

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