TrustRank in Java(using WebGraph)
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:
If you hava any question, please just put a review, or contact me by e-mail./** 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)));}}
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。
浙公网安备 33010602011771号