当前位置: 首页 > 工具软件 > WebGraph > 使用案例 >

TrustRank in Java(using WebGraph)

羊舌富
2023-12-01

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:

 
 
/*
* TrustRank implement
*/
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. 

转载于:https://www.cnblogs.com/youwang/archive/2010/04/09/2310673.html

 类似资料:

相关阅读

相关文章

相关问答