免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wlyqiqi
打印 上一主题 下一主题

[文本处理] awk相关问题 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2014-04-26 13:52 |只看该作者
回复 59# Herowinter
再问最后一个问题,如果每个query不是固定的50,001可能是20个,002可能是25个,这样就不能用n=?来计算了吧,要如何做呢
谢谢~
   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
62 [报告]
发表于 2014-04-26 14:11 |只看该作者
回复 61# wlyqiqi
那你总要传个东西告诉程序吧,也许传个数组吧
a[1]=20,a[2]=25,...,可以写C程序之类的自己处理,
没写过awk接收一个数组的。

论坛徽章:
0
63 [报告]
发表于 2014-04-26 14:16 |只看该作者
回复 62# Herowinter
我的意思是让awk自己判断每个query的总个数,然后进行计算


   

论坛徽章:
0
64 [报告]
发表于 2014-04-26 14:17 |只看该作者
回复 62# Herowinter

有一个新的TF_IDF文件,里面的query不全是固定的50,有10个的,也有25个的,每个query的数量不一样

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
65 [报告]
发表于 2014-04-26 16:40 |只看该作者
本帖最后由 Herowinter 于 2014-04-26 16:43 编辑

回复 64# wlyqiqi
那样可以的,在原来的程序上稍微改改就行了,
但我周一请假了,要下周二才能帮你改。
现在可以帮你目测一个。请明确你的需求:
(1)取消处理TIF文件之前一的处理记录数上限限制,
如之前的50 10,处理所有的记录
(2)算AP时还是根据training文件中比如001相关
的记录数来做最后的分母?


   

论坛徽章:
0
66 [报告]
发表于 2014-04-26 16:42 |只看该作者
回复 57# Herowinter

ExtendingData.zip (5.94 KB, 下载次数: 3)
我现在有两个新的文件每个query有25行,一共10个query,我把之前的代码改成n=25了,为何会出现

awk: division by zero
input record number 250, file TF_IDF_4.res
source line number 1
   
求解~

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
67 [报告]
发表于 2014-04-26 16:46 |只看该作者
回复 66# wlyqiqi
你算P R时候,当A+B或者A+C为0的
时候,就会出现分母为0的异常。


   

论坛徽章:
0
68 [报告]
发表于 2014-04-26 16:46 |只看该作者
回复 65# Herowinter
是根据TF_IDF的实际行数来计算,因为可能出现每个query的数量不同的情况。
额。。只能用公司的电脑吗?我明天晚上必须完成。。。

   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
69 [报告]
发表于 2014-04-26 16:48 |只看该作者
回复 68# wlyqiqi
说了现在帮你目测,我把代码打出来,
你试一下,有问题跟我说,我家里没环境的。

   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
70 [报告]
发表于 2014-04-26 16:54 |只看该作者
本帖最后由 Herowinter 于 2014-04-26 16:56 编辑

回复 68# wlyqiqi
我觉得改成这样你试试吧,彻底抓瞎,
你上传的文本文件Win8打不开。
  1. 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怎么算,我把代码加上就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP