@Override
  public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == backButton) {
      CardLayout cl = (CardLayout) (this.card.getLayout());
      cl.show(this.card, "Menu");
    }

    // browse for source folder in preprocessing
    else if (e.getSource() == selectFolder1) {
      int a = srcFolder.showOpenDialog(this);
      if (a == JFileChooser.APPROVE_OPTION) {
        File file = srcFolder.getSelectedFile();
        folder1.setText(file.getAbsolutePath());
      }
    }
    // browse for destination folder in preprocessing
    else if (e.getSource() == selectDest) {
      int a = destFolder.showOpenDialog(this);
      if (a == JFileChooser.APPROVE_OPTION) {
        File file = destFolder.getSelectedFile();
        destination.setText(file.getAbsolutePath());
      }
    }
    // browse for source folder in train/test
    else if (e.getSource() == selectFolder2) {
      int a = tFolder.showOpenDialog(this);
      if (a == JFileChooser.APPROVE_OPTION) {
        File file = tFolder.getSelectedFile();
        folder2.setText(file.getAbsolutePath());
      }
    }
    // run test/train
    else if (e.getSource() == run) {
      String path = folder2.getText();
      if (train.isSelected()) {

        // reset graph and summary table
        resetResults();
        TrainTask trainTask = new TrainTask(this, path);
        // task.addPropertyChangeListener(this);
        trainTask.execute();
        run.setEnabled(false);

      } else if (test.isSelected()) {
        TestTask testTask = new TestTask(this, path);
        testTask.execute();
        run.setEnabled(false);

      } else if (eval.isSelected()) {
        // read the images
        // p.getAllFeatures2(path, "cross_validation_data");
        task = new Task(this);
        // task.addPropertyChangeListener(this);
        task.execute();
        run.setEnabled(false);
      }
    }
    // crop datasets
    else if (e.getSource() == crop) {
      String sourcePath = folder1.getText().replace("\\", "/") + "/";
      String destinationPath = destination.getText().replace("\\", "/") + "/";
      p.cropImages(setList.getSelectedIndex() + 1, sourcePath, destinationPath);
    } else if (e.getSource() == viewResults) {
      resultsDialog.setVisible(true);
    } else if (e.getSource() == viewConfButton) {
      d.setVisible(true);
    }

    // show confusion matrix
    else if (e.getSource() == viewANN) {
      // change color of button
      viewANN.setColor("orange");
      viewSVM.setColor("blue");
      viewBN.setColor("blue");

      this.fillConfTable(evalANN.confusionMatrix());
    } else if (e.getSource() == viewSVM) {

      viewSVM.setColor("orange");
      viewBN.setColor("blue");
      viewANN.setColor("blue");
      this.fillConfTable(evalSVM.confusionMatrix());
    } else if (e.getSource() == viewBN) {
      viewBN.setColor("orange");
      viewANN.setColor("blue");
      viewSVM.setColor("blue");
      this.fillConfTable(evalNB.confusionMatrix());
    }
  }
Exemplo n.º 2
0
  // preprocessing of data, in other words, extracting useful data from XML and writing them to csv
  // file
  public dataSending preprocessing(String fileName, Map<String, ReverseRedirects> map) {
    String filePath = fileName;
    StringBuilder sb, redirectHelp;
    XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
    long i = 0,
        allRedirects = 0,
        allDisamb = 0,
        deadRedirects = 0,
        nameRedirects = 0,
        deadDisamb = 0,
        allDisambRedirects = 0;
    long start, end, time = 0;
    Preprocessing Current = new Preprocessing();
    ReverseRedirects help;

    start = System.currentTimeMillis();
    String pattern = "(\\[\\[[^\\]\\]]*\\]\\])";

    Pattern r = Pattern.compile(pattern);

    try {

      XMLEventReader xmlEventReader =
          xmlInputFactory.createXMLEventReader(new FileInputStream(filePath));
      while (xmlEventReader.hasNext()) {
        XMLEvent xmlEvent = xmlEventReader.nextEvent();

        if (xmlEvent.isStartElement()) {
          StartElement startElement = xmlEvent.asStartElement();
          /** **********FOUND NEW PAGE, insert data if there are any to csv********* */
          if (startElement.getName().getLocalPart().toLowerCase().equals("page")) {
            i++;

            if (i != 1) {
              sb = new StringBuilder();
              sb.append(i);
              if (Current.title != null) sb.append("," + Current.title);
              else sb.append(", ");
              if (Current.redirTitle != null) sb.append("," + Current.redirTitle);
              else sb.append(", ");
              if (Current.ambig) sb.append(",Y");
              else sb.append(",N");

              sb.append("," + Current.numberRedirects);
              for (int j = 0; j < Current.numberRedirects; j++) {
                //	sb.append(","+Current.redirects.get(j));
              }
              // if(Current.numberRedirects == 0 || Current.redirects!=null ||
              // Current.redirects.size() == 0) {
              sb.append(",no");
              // }
              fileSave.addLine(sb.toString());
            }

            Current.ambig = false;
            Current.ambigs = null;
            Current.ambigs = new ArrayList<String>();
            Current.id = 0;
            Current.redirects = null;
            Current.redirects = new ArrayList<String>();
            Current.redirTitle = null;
            Current.title = null;
            Current.numberRedirects = 0;
            Current.numberAmbigs = 0;
          }
          /** ********Tag title found, store its value to variable***** */
          else if (startElement.getName().getLocalPart().toLowerCase().equals("title")) {
            xmlEvent = xmlEventReader.nextEvent();

            Current.title = xmlEvent.asCharacters().getData();
          }
          /** **********set id of page variable if found ************** */
          else if (startElement.getName().getLocalPart().toLowerCase().equals("id")) {
            xmlEvent = xmlEventReader.nextEvent();

            if (Current.id == 0) {
              Current.id = Long.parseLong(xmlEvent.asCharacters().getData());
            }
          }
          /** *********set the redirect title variable if found ********** */
          else if (startElement.getName().getLocalPart().toLowerCase().equals("redirect")) {
            nameRedirects++;
            // System.out.println("-------------------------------------");
            Iterator<Attribute> attributes = startElement.getAttributes();
            while (attributes.hasNext()) {
              Attribute attribute = attributes.next();
              if (attribute.getName().toString().equals("title")) {
                // System.out.println("redirect title " + attribute.getValue());
                Current.redirTitle = attribute.getValue();
                help = map.get(Current.redirTitle);
                if (!map.containsKey(Current.redirTitle) || help == null) {
                  help = new ReverseRedirects(false);
                  help.count++;
                  help.reversers = new String(Current.title);
                  map.put(Current.redirTitle, help);
                  deadRedirects++;
                  // System.out.println("mrtvych "+deadRedirects);
                } else {
                  // System.out.println("redir "+ Current.redirTitle);
                  help.count++;
                  if (help.reversers == null) help.reversers = new String(Current.title);
                  else help.reversers += (", " + Current.title);
                }
              }
            }
          }
          /**
           * *****if text element is found, search it for disambigious pages, or search it for links
           * to another pages, then write results
           */
          else if (startElement.getName().getLocalPart().toLowerCase().equals("text")) {
            String line = xmlEventReader.getElementText();
            Matcher m = r.matcher(line);
            if (line.toLowerCase().contains("{{rozlišovacia stránka}}")) {
              Current.ambig = true;

              help = map.get(Current.title);
              help.isDis = true;
              while (m.find()) {
                Current.numberRedirects++;
                allRedirects++;
                allDisambRedirects++;
                Current.redirects.add(m.group(1));

                help.countDisam++;
                String[] hlp = m.group(1).split("[|]");

                redirectHelp = new StringBuilder(hlp[0].replace(',', ' '));
                if (hlp.length < 2)
                  redirectHelp =
                      redirectHelp.delete(redirectHelp.length() - 2, redirectHelp.length());
                redirectHelp = redirectHelp.delete(0, 2);

                if (!map.containsKey(redirectHelp)) {
                  deadDisamb++;
                  if (help.deadDisambigs == null)
                    help.deadDisambigs = new String(redirectHelp.toString());
                  else help.deadDisambigs += ", " + redirectHelp.toString();
                }

                // System.out.println("lalalala ++++++++++ "+redirectHelp.toString());
                if (help.disambgis == null) help.disambgis = new String(redirectHelp.toString());
                else help.disambgis += ", " + redirectHelp.toString();
              }
              allDisamb++;
            } else {
              while (m.find()) {

                allRedirects++;
                Current.numberRedirects++;
                Current.redirects.add(m.group(1).replace(',', ' '));
              }
            }
          }
        }
      }
      sb = new StringBuilder();
      sb.append(i);
      if (Current.title != null) sb.append("," + Current.title);
      else sb.append(", ");
      if (Current.redirTitle != null) sb.append("," + Current.redirTitle);
      else sb.append(", ");
      if (Current.ambig) sb.append(",Y");
      else sb.append(",N");

      sb.append("," + Current.numberRedirects);
      for (int j = 0; j < Current.numberRedirects; j++) {
        sb.append("," + Current.redirects.get(j));
      }
      fileSave.addLine(sb.toString());

      end = System.currentTimeMillis();
      time = end - start;

    } catch (Exception e) {
      System.out.println("error: " + e);
      e.printStackTrace();
    }
    fileSave.close();
    dataSending Result = new dataSending();
    Result.allDisamb = allDisamb;
    Result.allDisambRedi = allDisambRedirects;
    Result.allRedirects = allRedirects;
    Result.deadDisambRedir = deadDisamb;
    Result.time = time;
    Result.nameRedirects = nameRedirects;
    Result.deadRedirects = deadRedirects;
    return Result;
  }