Flairのtraining.logからmicro recallとprecisionを算出するコード
FlairでNERを実施した際,training.logというのが出力されるのだが,これにはmicro F1は載っているが,micro recallとprecisionは載っていない.このため,ログファイルからTP, FP, FNを読み取り自力で算出してみる.
import re if __name__ == "__main__": logpath = "/path/to/your/result/training.log" with open(logpath, "r") as f: lines = f.readlines() tp, fp, fn = 0, 0, 0 for line in lines: if re.search("f1-score:", line): # tokens = line.split(" ") tokens = ' '.join(line.split()).split(" ") # avoid multi space error try: tp += int(tokens[2]) except: pass fp += int(tokens[5]) fn += int(tokens[8]) precision = tp / (tp + fp) recall = tp / (tp + fn) f1 = 2*recall*precision / (recall + precision) print(logpath) print("precision:", precision) print("recall:", recall) print("micro-f1:", f1)
ディスカッション
コメント一覧
まだ、コメントがありません