- 论坛徽章:
- 780
|
本帖最后由 Herowinter 于 2014-04-26 16:56 编辑
回复 68# wlyqiqi
我觉得改成这样你试试吧,彻底抓瞎,
你上传的文本文件Win8打不开。- awk 'NR==FNR{a[$1" "$3];c[$1];count[$1]++;next} {if($1" "$3 in a){APtmp[$1" "A[$1]]=++A[$1]/++$4}else B[$1]++;b[$1" "$3]} END{for(i in a){split(i,key," ");k=key[1];if(!(i in b))C[k]++};for(i in APtmp){split(i,key," ");k=key[1];AP[k]+=APtmp[i]} print "key\t准确率\t召回率\tF1\tAP";for(i in c){P=A[i]/(A[i]+B[i]);R=A[i]/(A[i]+C[i]);F1=(P+R)>0?2*P*R/(P+R):0;APi=AP[i]/count[i];printf "%s\t%.4f\t%.4f\t%.4f\t%.4f\n",i,P,R,F1,APi}}' training.qrels TF_IDF_0.res|sort -n -k1
复制代码 分母为0的不是代码的错,你的数据有时候是会出现A+B或A+C=0
的情况,你要告诉我这种情况下P R怎么算,我把代码加上就可以了。 |
|