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 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述