
io.anserini.eval.RelevanceJudgments Maven / Gradle / Ivy
/*
* Anserini: A Lucene toolkit for reproducible information retrieval research
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.anserini.eval;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class RelevanceJudgments {
final private Map> qrels;
public static RelevanceJudgments fromQrels(Qrels qrels) {
return new RelevanceJudgments("src/main/resources/" + qrels.path);
}
public RelevanceJudgments(String file) {
qrels = new HashMap<>();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
String[] arr;
while ((line = br.readLine()) != null) {
arr = line.split("[\\s\\t]+");
String qid = arr[0];
String docno = arr[2];
int grade = Integer.parseInt(arr[3]);
//System.out.println(qid + " " + docno + " " + grade);
if (qrels.containsKey(qid)) {
qrels.get(qid).put(docno, grade);
} else {
Map t = new HashMap<>();
t.put(docno, grade);
qrels.put(qid, t);
}
}
} catch (IOException e) {
}
}
/**
* Method will return whether this docId for this qid is judged or not
* Note that if qid is invalid this will always return false
* @param qid qid
* @param docid docid
* @return true if docId is judged against qid false otherwise
*/
public boolean isDocJudged(String qid, String docid) {
if (!qrels.containsKey(qid)) {
return false;
}
if (!qrels.get(qid).containsKey(docid)) {
return false;
} else {
return true;
}
}
public int getRelevanceGrade(K qid, String docid) {
if (!qrels.containsKey(qid)) {
return 0;
}
if (!qrels.get(qid).containsKey(docid)) {
return 0;
}
if ( qrels.get(qid).get(docid) <= 0 ) return 0;
return qrels.get(qid).get(docid);
}
public Set getQids() {
return this.qrels.keySet();
}
public Map getDocMap(String qid) {
if (this.qrels.containsKey(qid)) {
return this.qrels.get(qid);
} else {
return null;
}
}
public static String getQrelsResource(Qrels qrels) throws IOException {
InputStream inputStream = RelevanceJudgments.class.getClassLoader().getResourceAsStream(qrels.path);
String raw = new String(inputStream.readAllBytes());
return raw;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy