public static void main(String[] args) throws IOException { Parser p = new Parser(); p.parseAll(); PrintWriter pw = new PrintWriter(new File(fname)); AnswerPrinter ap = new AnswerPrinter(5, pw); int k = 0; ProgressTracker pt = new ProgressTracker(p.questions.size()); Thread t = new Thread(pt); t.start(); MLQuestionClassifier classify = new MLQuestionClassifier("train_5500.label.txt"); WikiFilter wikiFilter = new WikiFilter(); BaselineFilter baselineFilter = new BaselineFilter(); for (int i : p.questions.keySet()) { Question q = p.questions.get(i); System.out.println("******CLASSIFYING QUESTION********"); classify.classifyQuestion(q); // writes to q System.out.println("******RETRIEVING DOCUMENTS********"); DocumentSet d = (new BaselineDocumentRetriever(p.raw_documents, p.raw_word_counts, p.raw_stem_counts)) .getDocuments(q); System.out.println("******WIKI FILTER********"); ArrayList<Answer> as = wikiFilter.filter(q, d); System.out.println("******NER FILTER********"); ArrayList<Answer> nerFilter = baselineFilter.filter(as, q); System.out.println("******EXTRACTING ANSWERS********"); ArrayList<Answer> finals = (new BaselineAnswerExtractor()).extractAnswers(q, nerFilter); if (finals.size() < 1) continue; System.out.println("Question: " + q.getQuestion() + "\nAnswer: " + finals.get(0).answer); k++; pt.updateCompletion(k); ap.printAnswers(q, finals); if (k > 2) break; } pw.flush(); pw.close(); }
/** * Apply all the given filters and rules to this * * @return * @throws UnableToInitializeEntityException * @throws UnableToListBaselinesException */ public BaselineList apply() throws UnableToInitializeEntityException, UnableToListBaselinesException { /* Printing info for debug */ logger.fine(" --- Get baselines information --- "); logger.fine("Component: " + component.getNormalizedName()); logger.fine("Stream : " + stream.getNormalizedName()); logger.fine("Level : " + level); logger.fine("Limit : " + limit); logger.fine("Filters : " + filters); logger.fine("Multisite: " + multisitePolling); logger.finest("Requiring: " + required); if (stream.hasPostedDelivery()) { if (multisitePolling) { this.addAll(stream.getPostedBaselines(component, level)); } } else { this.addAll(_get()); } logger.fine("Pre filter steps"); for (BaselineFilter filter : filters) { filter.preFilter(this); } if (required.size() > 0) { for (Baseline b : required) { if (!this.contains(b)) { this.add(b); } } } /* Sort the baselines */ if (sorter != null) { Collections.sort(this, sorter); } logger.fine(" --- Bare retrieval --- "); logger.fine("Baselines: " + this); /* Do the filtering */ int pruned = 0; for (BaselineFilter filter : filters) { logger.fine("Filter: " + filter.getName()); pruned += filter.filter(this); logger.fine("Baselines: " + this); } /* Load em? */ if (load) { Iterator<Baseline> it = this.iterator(); while (it.hasNext()) { Baseline baseline = it.next(); try { baseline.load(); } catch (Exception e) { logger.warning( "[ClearCase] Unable to load " + baseline.getNormalizedName() + ": " + e.getMessage()); it.remove(); pruned++; continue; /* Just continue */ } } } if (pruned > 0) { logger.config("[ClearCase] Pruned " + pruned + " baselines"); } /* Limit? 0 = unlimited */ if (limit > 0 && this.size() > 0) { BaselineList n = new BaselineList(); n.addAll(this.subList(0, limit)); logger.fine("Final list of baselines: " + n); return n; } else { logger.fine("Final list of baselines: " + this); return this; } }
/** * Apply a single filter to the {@link BaselineList} after the list has been generated. * * @param filter * @return */ public BaselineList applyFilter(BaselineFilter filter) { logger.fine("Filter: " + filter.getName()); filter.filter(this); return this; }