Skip to content

Instantly share code, notes, and snippets.

@hiropppe
Last active November 29, 2015 18:13
Show Gist options
  • Save hiropppe/eed9ce70c2c5ddc3bca9 to your computer and use it in GitHub Desktop.
Save hiropppe/eed9ce70c2c5ddc3bca9 to your computer and use it in GitHub Desktop.
J.DepP付属の評価スクリプト(tools/eval.py)の出力をガッちゃんこするやつ
#!/usr/bin/env python
import sys, re
r_sum = re.compile(r'\((\d+)/(\d+)\)')
acc, param = [], []
for line in sys.stdin:
if line.split()[0] in (['precision:', 'recall:', 'sent']):
m = r_sum.findall(line)
acc.append(int(m[0][0]))
param.append(int(m[0][1]))
ok = sum(c for i, c in enumerate(acc) if i % 6 == 0)
all_a = sum(c for i, c in enumerate(param) if i % 6 == 0)
all_g = sum(c for i, c in enumerate(param) if i % 6 == 1)
sok = sum(c for i, c in enumerate(acc) if i % 6 == 2)
all_s = sum(c for i, c in enumerate(param) if i % 6 == 2)
pre = ok * 1.0 / all_a
rec = ok * 1.0 / all_g
sys.stdout.write ("chunk:\n")
sys.stdout.write (" precision: %.4f (%d/%d)\n" % (pre, ok, all_a))
sys.stdout.write (" recall: %.4f (%d/%d)\n" % (rec, ok, all_g))
sys.stdout.write (" f1: %.4f\n" % (2 * pre * rec / (pre + rec)))
sys.stdout.write (" sent acc.: %.4f (%d/%d)\n" % (sok * 1.0 / all_s, sok, all_s))
ok = sum(c for i, c in enumerate(acc) if i % 6 == 3)
all_a = sum(c for i, c in enumerate(param) if i % 6 == 3)
all_g = sum(c for i, c in enumerate(param) if i % 6 == 4)
sok = sum(c for i, c in enumerate(acc) if i % 6 == 5)
all_s = sum(c for i, c in enumerate(param) if i % 6 == 5)
pre = ok * 1.0 / all_a
rec = ok * 1.0 / all_g
sys.stdout.write ("depnd:\n")
sys.stdout.write (" precision: %.4f (%d/%d)\n" % (pre, ok, all_a))
sys.stdout.write (" recall: %.4f (%d/%d)\n" % (rec, ok, all_g))
sys.stdout.write (" f1: %.4f\n" % (2 * pre * rec / (pre + rec)))
sys.stdout.write (" sent acc.: %.4f (%d/%d)\n" % (sok * 1.0 / all_s, sok, all_s))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment