public static BufferedReader smartReader(final String inputFile) throws IOException { return smartReader(inputFile, "UTF-8"); }
public static List<String> readLine(final String filename, final String encoding) { final List<String> lines = new ArrayList<>(); try (final BufferedReader in = smartReader(filename, encoding)) { String content = null; while ((content = in.readLine()) != null) { content = content.trim(); if (content.length() == 0) { continue; } lines.add(content); } } catch (final Exception ex) { throw RankLibError.create(ex); } return lines; }
/** * Read the content of a file. * @param filename The file to read. * @param encoding The encoding of the file. * @return The content of the input file. */ public static String read(final String filename, final String encoding) { final StringBuilder content = new StringBuilder(1000); try (BufferedReader in = smartReader(filename, encoding)) { final char[] newContent = new char[40960]; int numRead = -1; while ((numRead = in.read(newContent)) != -1) { content.append(new String(newContent, 0, numRead)); } } catch (final Exception e) { throw RankLibError.create(e); } return content.toString(); }
@Override public void loadExternalRelevanceJudgment(final String qrelFile) { relDocCount = new HashMap<>(); try (BufferedReader in = FileUtils.smartReader(qrelFile)) { String content = ""; while ((content = in.readLine()) != null) { content = content.trim(); if (content.length() == 0) { continue; } final String[] s = content.split(" "); final String qid = s[0].trim(); final int label = (int) Math.rint(Double.parseDouble(s[3].trim())); if (label > 0) { final int prev = relDocCount.getOrDefault(qid, 0); relDocCount.put(qid, prev + 1); } } logger.info(() -> "Relevance judgment file loaded. [#q=" + relDocCount.size() + "]"); } catch (final IOException ex) { throw RankLibError.create("Error in APScorer::loadExternalRelevanceJudgment(): ", ex); } }
/** * Read features specified in an input feature file. Expecting one feature per line. * @param featureDefFile * @return */ public static int[] readFeature(final String featureDefFile) { int[] features = null; final List<String> fids = new ArrayList<>(); try (BufferedReader in = FileUtils.smartReader(featureDefFile)) { String content = null; while ((content = in.readLine()) != null) { content = content.trim(); if (content.length() == 0 || content.indexOf('#') == 0) { continue; } fids.add(content.split("\t")[0].trim()); } features = new int[fids.size()]; for (int i = 0; i < fids.size(); i++) { features[i] = Integer.parseInt(fids.get(i)); } } catch (final IOException ex) { throw RankLibError.create("Error in FeatureManager::readFeature(): ", ex); } return features; }
/** * Read performance (in some measure of effectiveness) file. Expecting: id [space]* metric-text [space]* performance * @param filename * @return Mapping from ranklist-id --> performance */ public Map<String, Double> read(final String filename) { final Map<String, Double> performance = new HashMap<>(); try (BufferedReader in = FileUtils.smartReader(filename)) { String content = null; while ((content = in.readLine()) != null) { content = content.trim(); if (content.length() == 0) { continue; } //expecting: id [space]* metric-text [space]* performance while (content.contains(" ")) { content = content.replace(" ", " "); } content = content.replace(" ", "\t"); final String[] s = content.split("\t"); final String id = s[1]; final double p = Double.parseDouble(s[2]); performance.put(id, p); } logger.info(() -> "Reading " + filename + "... " + performance.size() + " ranked lists"); } catch (final IOException ex) { throw RankLibError.create(ex); } return performance; }
@Override public void loadExternalRelevanceJudgment(final String qrelFile) { try (BufferedReader in = FileUtils.smartReader(qrelFile)) { String content = ""; String lastQID = "";
int countEntries = 0; try (final BufferedReader in = FileUtils.smartReader(inputFile)) { String content = null;
try (BufferedReader in = FileUtils.smartReader(scoreFile)) { final List<RankList> test = readInput(testFile); String content = "";