TrustRank in Java(using WebGraph)
2010-04-09 08:46
441 查看
TrustRank is a biased PageRank method, which starts from some good seeds to propagate trust. It is very easy to implement based on PageRank.
I implement it in Java using the WebGraph and LAW jar package, following is the code:
[/code]
I implement it in Java using the WebGraph and LAW jar package, following is the code:
/** TrustRank implement
[/code]
*/
package cn.edu.dlut.wisdom;
import it.unimi.dsi.law.rank.PageRank;
import it.unimi.dsi.law.rank.PageRankPowerMethod;
import it.unimi.dsi.law.rank.PageRank.IterationNumberStoppingCriterion;
import it.unimi.dsi.law.rank.PageRank.NormDeltaStoppingCriterion;
import it.unimi.dsi.webgraph.*;
import it.unimi.dsi.fastutil.doubles.*;
import it.unimi.dsi.fastutil.ints.IntSet;
/**
*
* @author You Wang
*/
public class TrustRank {
/**
* Graph on which TR will run
*/
private ImmutableGraph g;
/**
* PageRank implementation
*/
private PageRankPowerMethod pr;
/**
* to be used as stopping criterion
*/
private double threshold = PageRank.DEFAULT_THRESHOLD;
/**
* number of iteration
*/
private int numberOfIteration = PageRank.DEFAULT_MAX_ITER;
private double alpha = PageRank.DEFAULT_ALPHA;
/**
*
* @param g Graph on which TR will run
*/
public TrustRank(ImmutableGraph g) {
this.g = g;
pr = new PageRankPowerMethod(g);
}
public void setThreshold(double t) {
threshold = t;
}
public void setAlpha(double alpha) {
this.alpha = alpha;
}
public void setIteration(int n) {
numberOfIteration = n;
}
public double[] getRank() {
return pr.rank;
}
/**
* set the biased good seeds
* @param seeds
*/
public void setGoodSeeds(IntSet seeds) {
int numNodes = g.numNodes();
double[] arr = new double[numNodes];
int seedSize = seeds.size();
for (int i = 0; i < numNodes; i++)
if (seeds.contains(i))
arr[i] = 1/seedSize;
pr.start = DoubleArrayList.wrap(arr);
}
/**
* compute the TR scores
* @throws Exception
*/
public void compute() throws Exception {
pr.alpha = alpha;
pr.stepUntil(PageRank.or(new NormDeltaStoppingCriterion(threshold),
new IterationNumberStoppingCriterion(numberOfIteration)));
}
}If you hava any question, please just put a review, or contact me by e-mail.
相关文章推荐
- Introduction to using Java Persistence API in a web application in Java EE environment
- Beginning POJOs: Lightweight Java Web Development Using Plain Old Java Objects in Spring, Hibernate,
- Implementing Ajax in Java web application using JQuery
- Using Flot's Bar Graph in an Android WebView with Highlighting
- How to invoke Java web service in ASP.net using C#
- View PDF Online In Java Web
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
- Javaweb中 Uncaught SyntaxError: Unexpected token o in JSON at position 1
- Character Encoding in Java Web (TOMCAT)
- [Error] The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml ...
- Using MVC Pattern in Web Interactions
- Read / Write Excel file in Java using Apache POI
- using iscroll.js and iscroll jquery plugin in android webview to scroll div and ajax load data.
- How to install MySQL JDBC driver in Eclipse web project without java.lang.ClassNotFoundexception com
- Run Maven Java Web Application in Jetty Maven Plugin
- Tomcat8.0部署web发生Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> /*.do in servle
- JAVA WEB 工程 SSH框架在Jenkins中打包前使用IDFC Maven ProGuard Plug-in混淆的错误的解决
- Using OpenSceneGraph in Your Application读书笔记
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml...
- Using Java in Debian