def validate(model, iteration=None): def f1(data, name): print print 'Phrase-based F1:', name f1 = F1() for i, x in enumerate(iterview(data)): predict = extract_contiguous(model(x)) truth = extract_contiguous(x.truth) # (i,begin,end) uniquely identifies the span for (label, begins, ends) in truth: f1.add_relevant(label, (i, begins, ends)) for (label, begins, ends) in predict: f1.add_retrieved(label, (i, begins, ends)) print return f1.scores(verbose=True) llh = sum(map(crf.likelihood, iterview(train, msg='llh'))) / len(train) with lineplot('llh') as d: d.append(llh) print print 'likelihood:', llh print
def validate(model, iteration=None): def f1(data, name): print print 'Phrase-based F1:', name f1 = F1() for i, x in enumerate(iterview(data)): predict = extract_contiguous(model(x)) truth = extract_contiguous(x.truth) # (i,begin,end) uniquely identifies the span for (label, begins, ends) in truth: f1.add_relevant(label, (i, begins, ends)) for (label, begins, ends) in predict: f1.add_retrieved(label, (i, begins, ends)) print return f1.scores(verbose=True) def weight_sparsity(W, t=0.0001): a = (np.abs(W) > t).sum() b = W.size print '%.2f (%s/%s) sparsity' % (a*100.0/b, a, b) # f1(train, name='TRAIN') # if test: # f1(test, name='TEST') # print # weight_sparsity(model.W) llh = sum(map(crf.likelihood, iterview(train, msg='llh'))) / len(train) from arsenal.viz.util import lineplot with lineplot('llh') as d: d.append(llh) print print 'likelihood:', llh print print