package ivory.regression.sigir2011; import ivory.cascade.retrieval.CascadeBatchQueryRunner; import ivory.core.eval.GradedQrels; import ivory.regression.GroundTruth; import ivory.regression.GroundTruth.Metric; import ivory.smrf.retrieval.Accumulator; import java.util.Map; import junit.framework.JUnit4TestAdapter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.log4j.Logger; import org.junit.Test; import com.google.common.collect.Maps; public class Gov2_VaryingTradeoff_FeaturePrune { private static final Logger LOG = Logger.getLogger(Gov2_VaryingTradeoff_FeaturePrune.class); private static String[] p1 = new String[] { "776", "0.2680", "777", "0.1257", "778", "0.4791", "779", "0.9087", "780", "0.4601", "781", "0.5673", "782", "0.5214", "783", "0.4787", "784", "0.7574", "785", "0.8446", "786", "0.2088", "787", "0.8758", "788", "0.7909", "789", "0.3502", "790", "0.8563", "791", "0.6110", "792", "0.2369", "793", "0.5467", "794", "0.4725", "795", "0.0000", "796", "0.3535", "797", "0.2122", "798", "0.1414", "799", "0.3632", "800", "0.1413", "801", "0.5867", "802", "0.9572", "803", "0.0000", "804", "0.4972", "805", "0.1564", "806", "0.5721", "807", "0.9393", "808", "0.9549", "809", "0.3055", "810", "0.4375", "811", "0.5875", "812", "0.7242", "813", "0.7551", "814", "0.7059", "815", "0.1877", "816", "0.5724", "817", "0.9046", "818", "0.4776", "819", "0.9239", "820", "0.7114", "821", "0.2575", "822", "0.1366", "823", "0.6292", "824", "0.3156", "825", "0.1378", "826", "0.4913", "827", "0.5058", "828", "0.5376", "829", "0.4397", "830", "0.3218", "831", "0.7272", "832", "0.5761", "833", "0.3533", "834", "0.5356", "835", "0.7072", "836", "0.1959", "837", "0.0000", "838", "0.6889", "839", "0.6344", "840", "0.1744", "841", "0.5466", "842", "0.1061", "843", "0.6907", "844", "0.1686", "845", "0.2825", "846", "0.4780", "847", "0.0472", "848", "0.1480", "849", "0.6821", "850", "0.3229" }; private static String[] p3 = new String[] { "776", "0.2503", "777", "0.1257", "778", "0.4791", "779", "0.9087", "780", "0.4430", "781", "0.5673", "782", "0.5214", "783", "0.4787", "784", "0.7574", "785", "0.8446", "786", "0.2088", "787", "0.8758", "788", "0.7909", "789", "0.3502", "790", "0.7095", "791", "0.6110", "792", "0.2088", "793", "0.5467", "794", "0.4725", "795", "0.0000", "796", "0.3535", "797", "0.2122", "798", "0.1414", "799", "0.3632", "800", "0.1413", "801", "0.5867", "802", "0.9627", "803", "0.0000", "804", "0.5225", "805", "0.1564", "806", "0.5721", "807", "0.9393", "808", "0.9393", "809", "0.3055", "810", "0.4375", "811", "0.5875", "812", "0.7242", "813", "0.7525", "814", "0.7059", "815", "0.1877", "816", "0.5724", "817", "0.9046", "818", "0.4776", "819", "0.9239", "820", "0.7114", "821", "0.2575", "822", "0.1366", "823", "0.6743", "824", "0.3156", "825", "0.1378", "826", "0.4913", "827", "0.5058", "828", "0.5376", "829", "0.4397", "830", "0.3218", "831", "0.4402", "832", "0.5761", "833", "0.3533", "834", "0.5356", "835", "0.7072", "836", "0.2155", "837", "0.0000", "838", "0.6889", "839", "0.6344", "840", "0.1744", "841", "0.5466", "842", "0.1061", "843", "0.6907", "844", "0.1686", "845", "0.2825", "846", "0.4780", "847", "0.0472", "848", "0.1480", "849", "0.6821", "850", "0.3289" }; private static String[] p5 = new String[] { "776", "0.2503", "777", "0.1257", "778", "0.4791", "779", "0.9087", "780", "0.4430", "781", "0.5673", "782", "0.5214", "783", "0.4787", "784", "0.7574", "785", "0.8446", "786", "0.2088", "787", "0.8758", "788", "0.7522", "789", "0.3502", "790", "0.7095", "791", "0.6110", "792", "0.2088", "793", "0.5467", "794", "0.4725", "795", "0.0000", "796", "0.3535", "797", "0.2122", "798", "0.1414", "799", "0.3632", "800", "0.1413", "801", "0.5867", "802", "0.9627", "803", "0.0000", "804", "0.5225", "805", "0.1564", "806", "0.5721", "807", "0.9393", "808", "0.9393", "809", "0.3055", "810", "0.4375", "811", "0.5875", "812", "0.7242", "813", "0.7525", "814", "0.7059", "815", "0.1877", "816", "0.5724", "817", "0.9046", "818", "0.4776", "819", "0.9239", "820", "0.7309", "821", "0.2575", "822", "0.1366", "823", "0.6743", "824", "0.3156", "825", "0.1378", "826", "0.4913", "827", "0.5058", "828", "0.5376", "829", "0.4397", "830", "0.3218", "831", "0.4402", "832", "0.5761", "833", "0.3533", "834", "0.5356", "835", "0.7072", "836", "0.2155", "837", "0.0000", "838", "0.6889", "839", "0.6344", "840", "0.1744", "841", "0.5466", "842", "0.1061", "843", "0.6907", "844", "0.1686", "845", "0.2825", "846", "0.4780", "847", "0.0472", "848", "0.2901", "849", "0.6821", "850", "0.3289" }; private static String[] p7 = new String[] { "776", "0.2503", "777", "0.2199", "778", "0.4465", "779", "0.9087", "780", "0.4430", "781", "0.1535", "782", "0.4378", "783", "0.5223", "784", "0.7574", "785", "0.6816", "786", "0.4783", "787", "0.8758", "788", "0.7522", "789", "0.3502", "790", "0.7095", "791", "0.5934", "792", "0.2088", "793", "0.5467", "794", "0.1336", "795", "0.0000", "796", "0.4703", "797", "0.2828", "798", "0.1414", "799", "0.3934", "800", "0.1413", "801", "0.5912", "802", "0.9677", "803", "0.0000", "804", "0.5225", "805", "0.1564", "806", "0.5721", "807", "0.8917", "808", "0.9393", "809", "0.2694", "810", "0.4375", "811", "0.5726", "812", "0.8090", "813", "0.8975", "814", "0.7010", "815", "0.1250", "816", "0.5724", "817", "0.7799", "818", "0.4596", "819", "0.9821", "820", "0.7109", "821", "0.3232", "822", "0.2268", "823", "0.6743", "824", "0.3156", "825", "0.1389", "826", "0.4360", "827", "0.6028", "828", "0.4339", "829", "0.2159", "830", "0.2912", "831", "0.7033", "832", "0.5761", "833", "0.5925", "834", "0.5989", "835", "0.0334", "836", "0.2155", "837", "0.0000", "838", "0.6889", "839", "0.5399", "840", "0.1744", "841", "0.5466", "842", "0.1059", "843", "0.6511", "844", "0.0610", "845", "0.3358", "846", "0.4780", "847", "0.0472", "848", "0.2901", "849", "0.5620", "850", "0.3289" }; private static String[] p9 = new String[] { "776", "0.2297", "777", "0.2168", "778", "0.4434", "779", "0.8263", "780", "0.4392", "781", "0.4249", "782", "0.4546", "783", "0.4763", "784", "0.7317", "785", "0.6622", "786", "0.4232", "787", "0.7718", "788", "0.7537", "789", "0.3516", "790", "0.8054", "791", "0.6629", "792", "0.2104", "793", "0.3758", "794", "0.1348", "795", "0.0000", "796", "0.3863", "797", "0.4616", "798", "0.2733", "799", "0.2142", "800", "0.1414", "801", "0.5912", "802", "0.7735", "803", "0.0000", "804", "0.3930", "805", "0.0844", "806", "0.1293", "807", "0.8668", "808", "0.9990", "809", "0.2584", "810", "0.3086", "811", "0.4901", "812", "0.8090", "813", "0.8941", "814", "0.7003", "815", "0.1236", "816", "0.7040", "817", "0.8519", "818", "0.3939", "819", "0.9821", "820", "0.7109", "821", "0.2099", "822", "0.2279", "823", "0.6743", "824", "0.3156", "825", "0.1251", "826", "0.4355", "827", "0.6512", "828", "0.4171", "829", "0.2689", "830", "0.1837", "831", "0.8051", "832", "0.5456", "833", "0.6858", "834", "0.5333", "835", "0.0652", "836", "0.1825", "837", "0.0306", "838", "0.6537", "839", "0.5113", "840", "0.1744", "841", "0.5707", "842", "0.1059", "843", "0.6511", "844", "0.0619", "845", "0.3234", "846", "0.5646", "847", "0.4759", "848", "0.2927", "849", "0.5632", "850", "0.3406" }; @Test public void runRegression() throws Exception { Map<String, GroundTruth> g = Maps.newHashMap(); g.put("Gov2-FeaturePrune-0.9", new GroundTruth("Gov2-FeaturePrune-0.9", Metric.NDCG20, 75, p9, 0.4478f)); g.put("Gov2-FeaturePrune-0.7", new GroundTruth("Gov2-FeaturePrune-0.7", Metric.NDCG20, 75, p7, 0.4539f)); g.put("Gov2-FeaturePrune-0.5", new GroundTruth("Gov2-FeaturePrune-0.5", Metric.NDCG20, 75, p5, 0.4677f)); g.put("Gov2-FeaturePrune-0.3", new GroundTruth("Gov2-FeaturePrune-0.3", Metric.NDCG20, 75, p3, 0.4661f)); g.put("Gov2-FeaturePrune-0.1", new GroundTruth("Gov2-FeaturePrune-0.1", Metric.NDCG20, 75, p1, 0.4716f)); GradedQrels qrels = new GradedQrels("data/gov2/qrels.gov2.all"); String[] params = new String[] { "data/gov2/run.gov2.SIGIR2011.varying.tradeoff.featureprune.xml", "data/gov2/queries.gov2.title.776-850.xml" }; FileSystem fs = FileSystem.getLocal(new Configuration()); CascadeBatchQueryRunner qr = new CascadeBatchQueryRunner(params, fs); long start = System.currentTimeMillis(); qr.runQueries(); long end = System.currentTimeMillis(); LOG.info("Total query time: " + (end - start) + "ms"); for (String model : qr.getModels()) { LOG.info("Verifying results of model \"" + model + "\""); Map<String, Accumulator[]> results = qr.getResults(model); g.get(model).verify(results, qr.getDocnoMapping(), qrels); LOG.info("Done!"); } } public static junit.framework.Test suite() { return new JUnit4TestAdapter(Gov2_VaryingTradeoff_FeaturePrune.class); } }