Package ciir.umass.edu.eval
Class Evaluator
- java.lang.Object
-
- ciir.umass.edu.eval.Evaluator
-
public class Evaluator extends java.lang.Object- Author:
- vdang This class is meant to provide the interface to run and compare different ranking algorithms. It lets users specify general parameters (e.g. what algorithm to run, training/testing/validating data, etc.) as well as algorithm-specific parameters. Type "java -jar bin/RankLib.jar" at the command-line to see all the options.
-
-
Field Summary
Fields Modifier and Type Field Description static booleankeepOrigFeaturesprotected MetricScorerFactorymFactstatic java.lang.StringmodelFilestatic booleanmustHaveRelDocstatic java.lang.StringnewFeatureFilestatic Normalizernmlstatic booleannormalizestatic java.lang.StringqrelFileprotected RankerFactoryrFactprotected MetricScorertestScorerstatic inttopNewprotected MetricScorertrainScorerprotected RANKER_TYPEtypestatic booleanuseSparseRepresentation
-
Constructor Summary
Constructors Constructor Description Evaluator(RANKER_TYPE rType, METRIC metric, int k)Evaluator(RANKER_TYPE rType, METRIC trainMetric, int trainK, METRIC testMetric, int testK)Evaluator(RANKER_TYPE rType, METRIC trainMetric, METRIC testMetric)Evaluator(RANKER_TYPE rType, METRIC trainMetric, METRIC testMetric, int k)Evaluator(RANKER_TYPE rType, java.lang.String trainMetric, java.lang.String testMetric)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description doubleevaluate(Ranker ranker, java.util.List<RankList> rl)voidevaluate(java.lang.String trainFile, double percentTrain, java.lang.String testFile, java.lang.String featureDefFile)Evaluate the currently selected ranking algorithm using percenTrain% of the training samples for training the rest as validation data.voidevaluate(java.lang.String sampleFile, java.lang.String featureDefFile, int nFold, float tvs, java.lang.String modelDir, java.lang.String modelFile)Evaluate the currently selected ranking algorithm using with k-fold cross validation.voidevaluate(java.lang.String sampleFile, java.lang.String featureDefFile, int nFold, java.lang.String modelDir, java.lang.String modelFile)Evaluate the currently selected ranking algorithm using with k-fold cross validation.voidevaluate(java.lang.String sampleFile, java.lang.String validationFile, java.lang.String featureDefFile, double percentTrain)Evaluate the currently selected ranking algorithm using percenTrain% of the samples for training the rest for testing.voidevaluate(java.lang.String trainFile, java.lang.String validationFile, java.lang.String testFile, java.lang.String featureDefFile)Evaluate the currently selected ranking algorithm using. static voidmain(java.lang.String[] args)voidnormalize(java.util.List<RankList> samples)voidnormalize(java.util.List<RankList> samples, int[] fids)voidnormalizeAll(java.util.List<java.util.List<RankList>> samples, int[] fids)voidrank(java.lang.String testFile, java.lang.String indriRanking)Generate a ranking in Indri's format from the input rankingvoidrank(java.lang.String modelFile, java.lang.String testFile, java.lang.String indriRanking)Use a pre-trained model to re-rank the test rankings.voidrank(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String indriRanking)Use k pre-trained models to re-rank the test rankings.voidrank(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String indriRanking)Similar to the above, except data has already been splitted.int[]readFeature(java.lang.String featureDefFile)java.util.List<RankList>readInput(java.lang.String inputFile)voidsavePerRankListPerformanceFile(java.util.List<java.lang.String> ids, java.util.List<java.lang.Double> scores, java.lang.String prpFile)Save systems' performance to filevoidscore(java.lang.String modelFile, java.lang.String testFile, java.lang.String outputFile)Write the model's score for each of the documents in a test rankings.voidscore(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String outputFile)Write the models' score for each of the documents in a test rankings.voidscore(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String outputFile)Similar to the above, except data has already been split.voidtest(java.lang.String testFile)Evaluate the performance (in -metric2T) of the input rankingsvoidtest(java.lang.String testFile, java.lang.String prpFile)voidtest(java.lang.String modelFile, java.lang.String testFile, java.lang.String prpFile)Evaluate the performance (in -metric2T) of a pre-trained model.voidtest(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String prpFile)Evaluate the performance (in -metric2T) of k pre-trained models.voidtest(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String prpFile)Similar to the above, except data has already been splitted.voidtestWithScoreFile(java.lang.String testFile, java.lang.String scoreFile)Re-order the input rankings and measure their effectiveness (in -metric2T)
-
-
-
Field Detail
-
mustHaveRelDoc
public static boolean mustHaveRelDoc
-
useSparseRepresentation
public static boolean useSparseRepresentation
-
normalize
public static boolean normalize
-
nml
public static Normalizer nml
-
modelFile
public static java.lang.String modelFile
-
qrelFile
public static java.lang.String qrelFile
-
newFeatureFile
public static java.lang.String newFeatureFile
-
keepOrigFeatures
public static boolean keepOrigFeatures
-
topNew
public static int topNew
-
rFact
protected RankerFactory rFact
-
mFact
protected MetricScorerFactory mFact
-
trainScorer
protected MetricScorer trainScorer
-
testScorer
protected MetricScorer testScorer
-
type
protected RANKER_TYPE type
-
-
Constructor Detail
-
Evaluator
public Evaluator(RANKER_TYPE rType, METRIC trainMetric, METRIC testMetric)
-
Evaluator
public Evaluator(RANKER_TYPE rType, METRIC trainMetric, int trainK, METRIC testMetric, int testK)
-
Evaluator
public Evaluator(RANKER_TYPE rType, METRIC trainMetric, METRIC testMetric, int k)
-
Evaluator
public Evaluator(RANKER_TYPE rType, METRIC metric, int k)
-
Evaluator
public Evaluator(RANKER_TYPE rType, java.lang.String trainMetric, java.lang.String testMetric)
-
-
Method Detail
-
main
public static void main(java.lang.String[] args)
- Parameters:
args-
-
readInput
public java.util.List<RankList> readInput(java.lang.String inputFile)
-
normalize
public void normalize(java.util.List<RankList> samples)
-
normalize
public void normalize(java.util.List<RankList> samples, int[] fids)
-
normalizeAll
public void normalizeAll(java.util.List<java.util.List<RankList>> samples, int[] fids)
-
readFeature
public int[] readFeature(java.lang.String featureDefFile)
-
evaluate
public void evaluate(java.lang.String trainFile, java.lang.String validationFile, java.lang.String testFile, java.lang.String featureDefFile)Evaluate the currently selected ranking algorithm using. - Parameters:
trainFile-validationFile-testFile-featureDefFile-
-
evaluate
public void evaluate(java.lang.String sampleFile, java.lang.String validationFile, java.lang.String featureDefFile, double percentTrain)Evaluate the currently selected ranking algorithm using percenTrain% of the samples for training the rest for testing.- Parameters:
sampleFile-validationFile- Empty string for "no validation data"featureDefFile-percentTrain-
-
evaluate
public void evaluate(java.lang.String trainFile, double percentTrain, java.lang.String testFile, java.lang.String featureDefFile)Evaluate the currently selected ranking algorithm using percenTrain% of the training samples for training the rest as validation data. Test data is specified separately.- Parameters:
trainFile-percentTrain-testFile- Empty string for "no test data"featureDefFile-
-
evaluate
public void evaluate(java.lang.String sampleFile, java.lang.String featureDefFile, int nFold, java.lang.String modelDir, java.lang.String modelFile)Evaluate the currently selected ranking algorithm using with k-fold cross validation.- Parameters:
sampleFile-featureDefFile-nFold-modelDir-modelFile-
-
evaluate
public void evaluate(java.lang.String sampleFile, java.lang.String featureDefFile, int nFold, float tvs, java.lang.String modelDir, java.lang.String modelFile)Evaluate the currently selected ranking algorithm using with k-fold cross validation.- Parameters:
sampleFile-featureDefFile-nFold-tvs- Train-validation split ratio.modelDir-modelFile-
-
test
public void test(java.lang.String testFile)
Evaluate the performance (in -metric2T) of the input rankings- Parameters:
testFile- Input rankings
-
test
public void test(java.lang.String testFile, java.lang.String prpFile)
-
test
public void test(java.lang.String modelFile, java.lang.String testFile, java.lang.String prpFile)Evaluate the performance (in -metric2T) of a pre-trained model. Save its performance on each of the ranked list if this is specified.- Parameters:
modelFile- Pre-trained modeltestFile- Test dataprpFile- Per-ranked list performance file: Model's performance on each of the ranked list. These won't be saved if prpFile="".
-
test
public void test(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String prpFile)Evaluate the performance (in -metric2T) of k pre-trained models. Data in the test file will be splitted into k fold, where k=|models|. Each model will be evaluated on the data from the corresponding fold.- Parameters:
modelFiles- Pre-trained modelstestFile- Test dataprpFile- Per-ranked list performance file: Model's performance on each of the ranked list. These won't be saved if prpFile="".
-
test
public void test(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String prpFile)Similar to the above, except data has already been splitted. The k-th model will be applied on the k-th test file.- Parameters:
modelFiles-testFiles-prpFile-
-
testWithScoreFile
public void testWithScoreFile(java.lang.String testFile, java.lang.String scoreFile)Re-order the input rankings and measure their effectiveness (in -metric2T)- Parameters:
testFile- Input rankingsscoreFile- The model score file on each of the documents
-
score
public void score(java.lang.String modelFile, java.lang.String testFile, java.lang.String outputFile)Write the model's score for each of the documents in a test rankings.- Parameters:
modelFile- Pre-trained modeltestFile- Test dataoutputFile- Output file
-
score
public void score(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String outputFile)Write the models' score for each of the documents in a test rankings. These test rankings are splitted into k chunks where k=|models|. Each model is applied on the data from the corresponding fold.- Parameters:
modelFiles-testFile-outputFile-
-
score
public void score(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String outputFile)Similar to the above, except data has already been split. The k-th model will be applied on the k-th test file.- Parameters:
modelFiles-testFiles-outputFile-
-
rank
public void rank(java.lang.String modelFile, java.lang.String testFile, java.lang.String indriRanking)Use a pre-trained model to re-rank the test rankings. Save the output ranking in indri's run format- Parameters:
modelFile-testFile-indriRanking-
-
rank
public void rank(java.lang.String testFile, java.lang.String indriRanking)Generate a ranking in Indri's format from the input ranking- Parameters:
testFile-indriRanking-
-
rank
public void rank(java.util.List<java.lang.String> modelFiles, java.lang.String testFile, java.lang.String indriRanking)Use k pre-trained models to re-rank the test rankings. Test rankings will be splitted into k fold, where k=|models|. Each model will be used to rank the data from the corresponding fold. Save the output ranking in indri's run format.- Parameters:
modelFiles-testFile-indriRanking-
-
rank
public void rank(java.util.List<java.lang.String> modelFiles, java.util.List<java.lang.String> testFiles, java.lang.String indriRanking)Similar to the above, except data has already been splitted. The k-th model will be applied on the k-th test file.- Parameters:
modelFiles-testFiles-indriRanking-
-
savePerRankListPerformanceFile
public void savePerRankListPerformanceFile(java.util.List<java.lang.String> ids, java.util.List<java.lang.Double> scores, java.lang.String prpFile)Save systems' performance to file- Parameters:
ids- Ranked list IDs.scores- Evaluation score (in whatever measure specified/calculated upstream such as NDCG@k, ERR@k, etc.)prpFile- Output filename.
-
-