Mercurial > hg > Members > nobuyasu > TPPageRank
view src/pagerank/TPReadWikiLink.java @ 9:9787663edb54 draft
delete if expression in computePageRank method.
author | one |
---|---|
date | Wed, 05 Sep 2012 18:44:03 +0900 |
parents | 4d1885a2fa36 |
children | c7a7c53702dd |
line wrap: on
line source
package pagerank; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedList; import com.tinkerpop.blueprints.Graph; import com.tinkerpop.blueprints.Vertex; import com.tinkerpop.blueprints.impls.tg.TinkerGraph; import com.tinkerpop.blueprints.util.io.graphml.GraphMLReader; import com.tinkerpop.blueprints.util.io.graphml.GraphMLWriter; import pagerank.WikiPage; public class TPReadWikiLink { public static void main(String[] args) { final String fileDB = "./resources/tinkerpopDB"; try { Graph graph = new TinkerGraph(); FileInputStream in = new FileInputStream(new File(fileDB)); GraphMLReader.inputGraph(graph, in); in.close(); LinkToVertex ltv = new LinkToVertex(graph); // ltv.initPageRankAllVertex(); final long AllVertexNumber = ltv.searchAllVertices(); HashMap<String, WikiPage> wikiHash = ltv.getWikiPageHash(); System.out.println("AllVertexNumber = "+AllVertexNumber); /* String nodeIds[] = {"80", "290", "21", "164"}; writeComputeTransition(ltv, nodeIds, 50); */ FileOutputStream fos = new FileOutputStream(new File("./resources/wikiPageRank.log")); descendingOrder(wikiHash, fos); FileOutputStream out = new FileOutputStream(new File(fileDB)); GraphMLWriter.outputGraph(graph, out); out.close(); // loop(ltv); } catch (NumberFormatException e){ System.out.println("Program exit"); } catch (Exception e) { e.printStackTrace(); } finally { } } public static void loop(LinkToVertex ltv) throws IOException { BufferedReader r = new BufferedReader( new InputStreamReader(System.in), 1); System.out.print("\nPlease enter Node Id...>"); System.out.flush(); String s; while ((s = r.readLine()) != null ) { int nodeId = Integer.parseInt(s); ltv.printVertexInfo(nodeId); System.out.print("\nPlease enter Node Id...>"); System.out.flush(); } } public static void writeComputeTransition(LinkToVertex ltv,final String nodeIds[], int count) throws IOException { LinkedList<FileOutputStream> fosList = new LinkedList<FileOutputStream>(); for (String id: nodeIds) { String filename = "./resources/NodeId_"+id+".dat"; FileOutputStream fos = null; fos = new FileOutputStream(filename); Vertex v = ltv.getVertexById(id); fos.write( ("# Node ID "+id+" "+ ltv.getPageTitle(v)+"\n").getBytes()); fosList.add(fos); } for (int i=0; i<count; i++) { for (Vertex v : ltv.getAllVertices() ) { ltv.computePageRank(v); } for (int index=0; index<nodeIds.length; index++){ FileOutputStream fos = fosList.get(index); printPageRankLog(fos, ltv, nodeIds[index], i); } } for (FileOutputStream fos: fosList) { fos.close(); } } // Write PageRank in descending order to fos. public static void descendingOrder(HashMap<String, WikiPage> wikiHash , FileOutputStream fos) throws IOException { ArrayList<WikiPage> list = new ArrayList<WikiPage>(); for (String title : wikiHash.keySet()) { WikiPage w = wikiHash.get(title); list.add(w); } Collections.sort(list, new Comparator<WikiPage>(){ public int compare(WikiPage w1, WikiPage w2) { return (int)(w2.getRank()*Math.pow(10, 10)) - (int)(w1.getRank()*Math.pow(10,10)); } }); for (WikiPage w : list) { w.printInfo(fos); } fos.close(); } public static void printPageRankLog(FileOutputStream fos, int x, double rank) throws IOException { fos.write( (x+" "+ rank+"\n").getBytes() ); fos.flush(); } public static void printPageRankLog(FileOutputStream fos, LinkToVertex ltv, String id, int x) throws IOException { double rank = ltv.getPageRank(ltv.getVertexById(id)); fos.write( (x+" "+ rank+"\n").getBytes() ); fos.flush(); } }