public String getNYTLaius() { StringBuilder sb = new StringBuilder(); sb.append("<div style=\"font-size:120%;\">"); sb.append("<b>"); sb.append("Media presence</b><br>"); sb.append("</div>"); if (!controllerBean.isNYTfound()) { sb.append("No media presence was detected for "); sb.append(controllerBean.getSearch().getFullname()); sb.append(" (experimental feature)."); } else { sb.append(controllerBean.getSearch().getFullname()); sb.append(" is mentioned in the following article(s) fron the New York Times:<br>"); for (Document element : controllerBean.getSetMediaDocs()) { if (!element.getPublication_outlet().equals("New York Times")) { continue; } sb.append(element.getYear()); sb.append(". \"<a href=\""); sb.append(element.getNyt_url()); sb.append("\">"); sb.append(element.getTitle()); sb.append("</a>.\""); sb.append("<br>"); } } sb.append("<p></p>"); return sb.toString(); }
public MainForm() { alfa.setValue(1); beta.setValue(1); gamma.setValue(1); loadDatabase.addActionListener( e -> { fileChooser.setCurrentDirectory(new File(database.getText())); int returnVal = fileChooser.showOpenDialog(panel1); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); database.setText(file.getPath()); } }); loadKeyword.addActionListener( e -> { fileChooser.setCurrentDirectory(new File(keywords.getText())); int returnVal = fileChooser.showOpenDialog(panel1); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); keywords.setText(file.getPath()); } }); search.addActionListener( e -> { isKeywordsEnabled = keywordsEnabled.getSelectedIndex() != 0; DatabaseCollection.clear(); if (isKeywordsEnabled) { new KeywordParser(keywords.getText()).parse(); } new DocumentParser(database.getText()).parse(); Method method1 = Method.valueOf((String) MainForm.this.method.getSelectedItem()); Document query1 = new Document(MainForm.this.query.getText(), "", false); showResults(method1, query1); }); oznacz.addActionListener( e -> { for (Result result : results.getSelectedValuesList()) { result.setMarkedAsGood(!result.isMarkedAsGood()); } results.repaint(); }); newQuestion.addActionListener( e -> { ResultModel model = (ResultModel) results.getModel(); Document query1 = model.getQuery(); calculateRelevance( model.getResultList(), query1, (Integer) alfa.getValue(), (Integer) beta.getValue(), (Integer) gamma.getValue()); queryHelp.setText(query1.getQueryText()); Method method1 = Method.valueOf((String) MainForm.this.method.getSelectedItem()); showResults(method1, query1); }); }
private double avg(Term term, List<Document> documents) { double count = 0; if (documents == null || documents.isEmpty()) { return 0; } for (Document document : documents) { count += document.getTermCount(term); } return count / documents.size(); }
private void calculateRelevance( List<Result> resultList, Document query, double alfa, double beta, double gama) { List<Document> goodDocuments = new ArrayList<>(); List<Document> badDocuments = new ArrayList<>(); for (Result result : resultList) { if (result.isMarkedAsGood()) { goodDocuments.add(result.getDocument()); } else { badDocuments.add(result.getDocument()); } } for (Term term : DatabaseCollection.getTermMap().values()) { double relevance = alfa * query.getTermRelevance(term) + (avg(term, goodDocuments)) * beta - avg(term, badDocuments) * gama; query.setTermRelevance(term, relevance); } }
public String getListDocs() { StringBuilder sb = new StringBuilder(); sb.append("<b>List of "); sb.append(controllerBean.getSearch().getFullname()); sb.append("'s publications</b>:<br>"); ArrayList<Document> listDocs = new ArrayList(); listDocs.addAll(controllerBean.getSetDocs()); Collections.sort(listDocs, new DocSortByYear()); for (Document doc : listDocs) { sb.append(doc.getAuthorsToString()); sb.append(" "); sb.append("(<b>").append(doc.getYear()).append("</b>)."); sb.append(" \"").append(doc.getTitle()).append("\". "); sb.append("<i>").append(doc.getPublication_outlet()).append("</i>."); sb.append("<p></p>"); } return sb.toString(); }
private List<Result> getQuerySimilarity(Method method, Document query) { List<Result> resultList = new ArrayList<>(); List<Result> list = new ArrayList<>(); for (Document document : DatabaseCollection.getDocumentList()) { double similarity = document.similarity(query, method); if (similarity != -1) { list.add(new Result(document, similarity)); } } list.stream() .sorted( (o1, o2) -> { double diff = o1.getSimilarity() - o2.getSimilarity(); if (diff < 0) { return 1; } else if (diff > 0) { return -1; } return 0; }) .limit(5) .forEach(resultList::add); return resultList; }
public int compare(Document d1, Document d2) { return -d1.getYear().compareTo(d2.getYear()); }