Ejemplo n.º 1
0
  public static void readData(File f) {
    Scanner sc = null;
    try {
      sc = new Scanner(f);
      while (sc.hasNextLine()) {
        String line = sc.nextLine();
        // Split the line by space
        String[] links = line.trim().split("\\s+");
        Link currentLink = linkMap.get(links[0]);
        if (currentLink == null) {
          currentLink = new Link(links[0]);
          linkMap.put(links[0], currentLink);
        }

        for (int idx = 1; idx < links.length; idx++) {
          Link inLink = linkMap.get(links[idx]);
          if (inLink == null) {
            inLink = new Link(links[idx]);
            linkMap.put(links[idx], inLink);
          }
          currentLink.getInLinks().add(inLink);
          inLink.getOutLinks().add(currentLink);
        }
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } finally {
      if (sc != null) {
        sc.close();
      }
    }
  }
Ejemplo n.º 2
0
  private static void process() {
    double nLinks = linkMap.size();
    int iteration = 1;
    do {
      double sinkPR = 0;

      double perplexity = getPerplexity(getEntropyAndResetRank());
      // System.out.println("Perplexity at iteration " + iteration + " = " + perplexity );

      for (Link sink : sinks) {
        sinkPR += sink.getOldPageRank();
      }
      for (Link link : linkMap.values()) {
        double newPageRank = (1 - DAMPING_FACTOR) / nLinks;
        newPageRank += DAMPING_FACTOR * sinkPR / nLinks;
        for (Link inLink : link.getInLinks()) {
          newPageRank += DAMPING_FACTOR * inLink.getOldPageRank() / inLink.getOutLinks().size();
        }
        link.setNewPageRank(newPageRank);
      }

      if (iteration == 1 || iteration == 10 || iteration == 100) {
        System.out.println("Iteration : " + iteration);
        System.out.println("Perplexity : " + perplexity);
        for (Link link : linkMap.values()) {
          System.out.println(link);
        }
      }
    } while (++iteration <= 100);
  }
Ejemplo n.º 3
0
 private static void preProcess() {
   double nLinks = linkMap.size();
   double initialPgRank = Double.valueOf(1) / nLinks;
   // First lets find out which are the sinks
   for (Link currentLink : linkMap.values()) {
     if (currentLink.getOutLinks().isEmpty()) {
       sinks.add(currentLink);
     }
     currentLink.setNewPageRank(initialPgRank);
   }
 }