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)






ディスカッション
コメント一覧
まだ、コメントがありません