免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9119 | 回复: 75
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-22 02:33 |只看该作者 |倒序浏览
本帖最后由 wlyqiqi 于 2014-04-25 14:15 编辑

我现在有两个文件  terrier得出的TF.res和t.qrels


只对比每一行的第列和第三列, 忽略第三和第四列
求如何用awk输出相同的部分和数量



论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2014-04-22 08:52 |只看该作者
何为精度和召回率?

你还不如根据源文件给出期望的结果,然后解释结果是怎么得到的。

论坛徽章:
0
3 [报告]
发表于 2014-04-22 11:21 |只看该作者
回复 2# yestreenstars

我用 awk -F'[/,]' 'ARGIND==1{a[$0]}ARGIND>1{if ($2 in a)print $0}' TF_IDF_0.res t.qrels>c   为何得到的文件c是空白的》》??


   

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
4 [报告]
发表于 2014-04-22 11:24 |只看该作者
回复 1# wlyqiqi


    就你给出的示例,直接写出你要的结果是啥 ?

论坛徽章:
769
金牛座
日期: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
5 [报告]
发表于 2014-04-22 11:26 |只看该作者
回复 3# wlyqiqi
读第一个文件的时候,你用的是$0整行做的哈希;
读第二个文件的时候,你判断用的是$2 in a当然不成立啊。


   

论坛徽章:
0
6 [报告]
发表于 2014-04-22 11:40 |只看该作者
回复 4# liaosnet
我就是想对比每一行的第一项和第三项,输出完全相同的条目。。


   

论坛徽章:
769
金牛座
日期: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
7 [报告]
发表于 2014-04-22 11:51 |只看该作者
本帖最后由 Herowinter 于 2014-04-22 11:54 编辑

我来猜一个算了,省得大家这么辛苦,
其实难度都在理解楼主的真正意图上。
  1. awk 'ARGIND==1{a[$1" "$3]=$0} ARGIND>1{if ($1" "$3 in a){count++;print a[$1" "$3]}} END{print "total: "count}' TF_IDF_0.res t.qrels
  2. 001 Q0 367321 0 18.98621904482158 TF_IDF
  3. 001 Q0 366866 1 14.576663853270356 TF_IDF
  4. 002 Q0 172248 1 11.241745855896292 TF_IDF
  5. total: 3
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-04-22 12:00 |只看该作者
回复 5# Herowinter
能告诉我怎么写吗?输出完全相同的,只有一项相同的和完全不同的, 谢了~


   

论坛徽章:
0
9 [报告]
发表于 2014-04-22 13:10 |只看该作者
回复 7# Herowinter

我用了你的方法,为什么total是空白呢?   

TF_IDF_0.res文件一共57个query,开头分别是(001,002,...,057) ,每一个开头有50个值,这个文件是通过搜索引擎terrier得到的。
t.qrels是要找的目标文件.开头也是001,002,...,057,
对比第三项,得出每一个开头 t.qrel和TF_IDF_0.res完全匹配的条目数(计算TF_IDF_0的数目)和 完全不匹配的条目数(t.qrels的数目)。
终极目的是求召回率和准确率。。。
谢了~!





   

论坛徽章:
769
金牛座
日期: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
10 [报告]
发表于 2014-04-22 13:23 |只看该作者
回复 9# wlyqiqi
最简单的方法,先贴出你要处理的2个真实的文本,
然后把你期望的结果文本也贴出来,其他描述可以从简,
因为我们不关心你怎么得到这两个文本。
如果还要计算准确率和召回率,请给出计算公式。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP