`
lzj0470
  • 浏览: 1282179 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

作热排名算法(hot ranking)的工作原理

阅读更多

重点描述上面两个公式:
Ts  =  A – B 

相当于
A的发布时间 – 设定时间(默认时间为1970-01-01就可以)

X = U – D

相当于
支持率 – 反对率


来个JAVA实现方式。

	private double U = 100;
	private double D = 2;


获取默认时间(1970-01-01)
	private double getDefaultTime() {
        java.text.DateFormat format2 = new java.text.SimpleDateFormat(  
                "yyyyMMddhhmmss");  
        String s = format2.format(new Date(0L));
        return Double.parseDouble(s);
	}


获取某篇文章的发布时间
	private double getPostPublish(Date date) {
		java.text.DateFormat format2 = new java.text.SimpleDateFormat(  
        "yyyyMMddhhmmss");  
		String s = format2.format(date);
		return Double.parseDouble(s);
	}


获取秒时间差
	private double getSecondsDifference(Date date) {
		return getPostPublish(date) - getDefaultTime();
	}


获取X
	public double getX() {
		return U - D;
	}


获取Y
	public double getY(double x) {
		if(x > 0) 
			return 1;
		if(x == 0) 
			return 0;
		return -1;
	}


获取Z
	public double getZ(double x) {
		if(Math.abs(x) >=1) {
			return Math.abs(x);
		}
		return 1;
	}


获取作热排名
	public double hotRanking() {
		double x = getX();
		return Math.log10(getZ(x)) + getY(x) * getSecondsDifference(new Date())/45000;
	}


到这里,算法算是实现啦。

发表时间的影响
发表时间和话题排名的影响可以被概括如下:

发表时间对排名有很大影响,该算法使得新的话题比旧的话题排名靠前
话题的得分不会因为时间的流失而减少,但是新的话题会比旧的话题得分高。这与 Hacker New 的算法不同 (随着时间的发展降低话题的得分)

下图展示了话题得分在好评和差评的数量不变时,随着时间而变化的情况:



对数关系

Reddit 的热排序算法使用了对数函数来衡量前面的投票与其他投票的差距:

前十个好评和之后的100个,1000个投票有相同的权重。

参见下面的图:



去掉对数函数之后(译注:采用线性函数)的效果



反对票的影响

Reddit 是为数不多的几个可以投反对票的网站。正如上边代码所述,一个话题的得分被定义成:好评数 - 差评数

下边的图可以帮助我们理解:


这一点对那些同时有大量赞成和反对票的话题(比如说一些有争议的话题)有显著影响。这种话题的排名会比只有赞成票的话题低一些,这也就解释了为什么 kittens 和其他一些没有争议的话题排名如此靠前。

话题排名算法的结论

发表时间是一个非常重要的参数,通常,新的话题要比旧的话题排名靠前
前10个好评跟接下来的100个有着同样的权重。比如一个有着10个好评的话题,跟有50个好评的话题有着相似的排名
有争议的话题(支持票和反对票的数量相近)要比支持票占大多数的话题排名靠后

参考资料:
http://www.iteye.com/news/28228
http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue6/how-reddit-ranking-algorithms-work.html
  • 大小: 19 KB
  • 大小: 11 KB
  • 大小: 10.1 KB
  • 大小: 10.1 KB
  • 大小: 6.9 KB
分享到:
评论

相关推荐

    论文研究-HotRank:热度敏感的非结构化数据检索排名算法.pdf

    为满足用户对非结构化数据检索的需求, 分析用户对数据的操作行为, 提出一种新型的数据热度敏感的非结构化数据检索排名算法HotRank。通过对数据操作情况(任务、访问次数、编辑时长等)进行日志记录, 形成非结构化...

    hot-ranking:Reddit 热门排名算法

    Reddit 热门排名算法 基于 reddit 热门排名算法计算和 item 的分数。 对于科学背后的阅读 安装 npm install hot-ranking 用法 hot(upvotes, downvotes, date) // Load library var hot = require("hot-ranking"); ...

    测量给定数据集相关性的算法类似于Reddit

    文件名“pretty-hot-ranking-algorithm-master”可能表示一个关于实现这种热度排名算法的项目。在这个项目中,你可能找到以下内容: - `README.md`:介绍项目的背景、目的和使用方法。 - `src`目录:包含源代码,...

    go-rate:Reddit使用的简单评分算法

    Hot ( upvotes , downvotes , createdAt )}按Wilson-Score间隔排序Reddit评论排名使用Wilson-Score区间Wilson-Score时间间隔公式显示如下: p-hat是赞成票占总数的分数n是赞成和反对的总数这是用go编写的算法的示例...

    Efficient Diverse Ranking of Hot-topics-discussion on Social Network

    标题《Efficient Diverse Ranking of Hot-topics-discussion on Social Network》表明,这篇文章主要探讨的是在社交媒体上如何高效地对热门话题讨论的帖子进行多样化排序。随着社交媒体用户的激增,其已成为人们交换...

    简单搜索引擎源码

    4. **热词推荐(Hotword Recommendation)**:此功能可能是通过分析用户的搜索历史或实时的搜索趋势来确定热门词汇。这可能涉及到统计分析和机器学习算法,例如TF-IDF(词频-逆文档频率)或者LDA(主题模型)。 5. ...

    Basic-BPR-Demo.zip

    在本实践项目中,我们关注的是“Basic-BPR-Demo.zip”,它是一个包含推荐算法实现的压缩包,特别提到了TensorFlow这一深度学习框架。这个项目的核心是利用TensorFlow来构建一个基本的矩阵分解模型—— Bayesian ...

Global site tag (gtag.js) - Google Analytics