问题标签 [popularity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
92 浏览

keyword - 创建有关关键字流行度的小/大尺寸文本

如果这是一个愚蠢的问题,我很抱歉。

我有一个关键字列表,并想创建一个文本,其中的关键字是用与其受欢迎程度相关的字体大小编写的。我应该用哪个词搜索论坛,例如:

最不受欢迎的关键字

最受欢迎的关键词

热门关键词

0 投票
3 回答
215 浏览

java - Java:来自最流行类别的随机元素

我需要找到最有效的方法来从最流行的类别中找到随机元素

我想要要么Cheese要么。如果有多个顶级类别,我不在乎我会从哪个类别中获得我的物品。HamSalad

在输入上我有Iterator<Foo>whereFoo实现

我当前的代码如下所示:

0 投票
4 回答
5414 浏览

python - 在 Django 中决定和实现一个趋势算法

我有一个 Django 应用程序,我需要在其中实现一个简单的趋势/排名算法。我很迷茫:

我有两个模型,BookReader。每天晚上,新书都会添加到我的数据库中。每本书的读者数量也在每晚更新,即一本书将有多个读者统计记录(每天一条记录)。

在给定的时间段内(过去一周、过去一个月或过去一年),我想列出最受欢迎的书籍,我应该使用什么算法?

流行度不需要以任何方式实时,因为每本书的读者人数仅每天更新。

我发现一篇文章在另一篇 SO帖子中被引用,该文章显示了他们如何计算热门 Wikipedia 文章,但该帖子仅显示了当前趋势是如何计算的。

正如有人在 SO 上指出的那样,这是一个非常简单的基线趋势算法,只计算两个数据点之间的斜率,所以我猜它显示了昨天和今天之间的趋势。

我不是在寻找像 Hacker News、Reddit 等上使用的超级复杂的趋势算法。

我只有两个数据轴,读者人数和日期。

关于我应该实施什么以及如何实施的任何想法。对于从未使用过任何与统计/算法相关的东西的人来说,这似乎是一项非常艰巨的任务。

提前谢谢大家。

0 投票
1 回答
446 浏览

algorithm - 威尔逊分数区间可能的结果范围

这个问题是关于威尔逊分数置信区间的(见这里解释)。

我不完全理解评分公式:( 来源:evanmiller.org等式

但是..我只需要知道可能结果的范围是多少。

我需要根据费率向用户提供 3 枚奖牌中的 1 枚。

(我有用户创建的菜谱,可以点赞,然后我计算菜谱的费率。用户费率是根据他的菜谱费率计算的。)

谢谢约阿夫

0 投票
4 回答
510 浏览

c# - 基于流行度的缓存解决方案

我有一个处理大约 10.000 个不可变对象的 C# 应用程序,每个对象的大小为 50KB - 1MB。该应用程序为每个操作挑选大约 10-100 个对象。选择哪些对象取决于环境和用户选择,但有一些是非常常用的。

将所有对象一直保存在内存中是太多了,但是磁盘访问时间很紧迫。我想使用基于流行度的缓存来减少磁盘活动。缓存将包含最大值。300 个对象。我希望在使用模式期间决定应该缓存哪一个。我可以轻松地为每个对象添加访问计数器。更受欢迎的进入,不太受欢迎的必须离开缓存。有没有一种简单、巧妙的方法来做到这一点,而无需编码我的屁股?

0 投票
5 回答
11102 浏览

algorithm - 简单的流行度算法

概括

正如 Ted Jaspers 明智地指出的那样,我在 2012 年最初提案中描述的方法实际上是指数移动平均线的一个特例。这种方法的美妙之处在于它可以递归计算,这意味着您只需为每个对象存储一个流行度值,然后您可以在事件发生时递归地调整该值。无需记录每个事件。

这个单一的流行度值代表所有过去的事件(在所使用的数据类型的限制内),但随着新事件的考虑,旧事件的重要性开始呈指数级降低。该算法将适应不同的时间尺度并响应不同的流量. 每次发生事件时,可以使用以下公式计算新的流行度值:

(a * t) + ((1 - a) * p)

  • a— 介于 0 和 1 之间的系数(值越高,旧事件的折扣越快)
  • t— 当前时间戳
  • p— 当前流行度值(例如存储在数据库中)

的合理值a将取决于您的应用程序。一个好的起点是,应该显着影响结果的事件数量a=2/(N+1)在哪里。N例如,在事件是页面浏览的低流量网站上,您可能会期望在几天内有数百次页面浏览。选择N=100( a≈0.02) 将是一个合理的选择。对于一个高流量的网站,您可能期望在几天内有数百万的页面浏览量,在这种情况下N=1000000( a≈0.000002) 会更合理。的值a可能需要随着时间的推移逐渐调整。

为了说明这个流行度算法是多么简单,这里有一个例子,它可以在 Craft CMS 中用 2 行 Twig 标记来实现:

请注意,无需创建新的数据库表或存储无休止的事件记录来计算流行度。

需要记住的一个警告是指数移动平均线有一个旋转间隔,因此需要一些递归才能认为该值是准确的。这意味着初始条件很重要。例如,如果使用当前时间戳初始化新项目的流行度,则该项目立即成为整个集合中最流行的项目,然后最终稳定到更准确的位置。如果您想推广新内容,这可能是可取的。或者,您可能希望内容从底部向上运行,在这种情况下,您可以使用应用程序首次启动时的时间戳对其进行初始化。您还可以通过使用数据库中所有流行度值的平均值初始化该值来找到一个快乐的媒介,因此它从中间开始。


原始提案

有很多建议的算法可以根据项目的年龄和项目收到的投票、点击或购买次数来计算受欢迎程度。但是,我见过的更强大的方法通常需要过于复杂的计算和多个存储值,这会使数据库变得混乱。我一直在考虑一种非常简单的算法,它不需要存储任何变量(除了流行度值本身)并且只需要一个简单的计算。这非常简单:

p = (p + t) / 2

这里,p 是存储在数据库中的流行度值t 是当前时间戳。首次创建项目时,必须初始化p 。有两种可能的初始化方法:

  1. 用当前时间戳t初始化p
  2. 用数据库中所有p值的平均值初始化p

请注意,初始化方法 (1) 使最近添加的项目相对于历史项目具有明显的优势,因此添加了相关性元素。另一方面,初始化方法 (2) 在与历史项目相比时将新项目视为平等。

假设您使用初始化方法 (1) 并使用当前时间戳初始化p 。当项目收到第一次投票时,p成为创建时间和投票时间的平均值。因此,流行度值p仍然代表一个有效的时间戳(假设您四舍五入到最接近的整数),但它代表的实际时间是抽象的。

使用这种方法,只需要一个简单的计算,并且只需要将一个值存储在数据库中(p)。此方法还可以防止值失控,因为给定项目的流行度永远不会超过当前时间。

在 1 天内工作的算法示例:http: //jsfiddle.net/q2UCn/
在 1 年内工作的算法示例:http: //jsfiddle.net/tWU9y/

如果您希望投票以亚秒级的间隔稳定流入,那么您将需要使用微秒时间戳,例如 PHPmicrotime()函数。否则,标准 UNIX 时间戳将起作用,例如 PHPtime()函数。

现在我的问题是:您认为这种方法有什么重大缺陷吗?

0 投票
4 回答
12497 浏览

assembly - 汇编是唯一的低级编程语言,如果不是,它是最广泛使用的吗?

我最近开始学习汇编,当我浏览互联网时,我看到越来越多的人说汇编不是无用的,但与需要这么多时间和精力的语言相比,也不值得花时间去编写程序。高级语言。高级语言程序和低级语言程序之间的效率现在真的不够引人注目吗?还有另一种像汇编这样使用更广泛的低级语言吗?

0 投票
3 回答
235 浏览

c++ - 在我的朋友网络中找到最受欢迎的赞

我正在努力寻找在我的朋友网络中最受欢迎的点赞。“在我的朋友网络中最受欢迎”被定义为“被我的朋友点赞最多的人”。

假设每个朋友都有一个唯一的 id 并且有许多喜欢的页面。所以,给定一组这样的朋友,我想找到最多的朋友点赞的,以及喜欢这个东西的朋友。本质上,我想展示“你的朋友 X、Y 和 Z 喜欢这个”之类的内容。

我的第一个解决方案是使用 Map(用于存储反向映射:like->set)和 Priority Queue(用于查找前 N 个)。这是我的算法(使用 C++ STL):

由于 STL 内部使用红黑树来实现优先级队列的映射和最小/最大堆,这种方法对我来说似乎很快。但是如果我有 100 个朋友,每个人都有 100 个喜欢,那么内存使用量会很大。当然,我应该使用朋友 id 和点赞 id 来进行所有计算,而不是存储整个对象,这会大大减少内存使用量。

还有哪些算法或数据结构可以用来提高效率(提高速度,减少内存)?出于某种原因,我无法针对每个喜欢存储朋友列表,它必须在运行时计算。我正在使用 C++ 开发它,因此使用 STL 或 boost 的解决方案会更好。

0 投票
1 回答
321 浏览

php - 将“流行”因素与 zend-search lucene 正确集成的最佳方法是什么?

我已经阅读了这篇文章,但我仍然对如何去做这件事有些困惑。

我有一个未编入索引的字段,它正在计算一组正在搜索的播放列表的投票数。主搜索工作正常,但我也想将投票字段作为算法的一部分包含在内,我不确定如何将非索引字段包含在其中。任何人都可以提供任何指导或示例吗?

0 投票
2 回答
2304 浏览

algorithm - 如何根据一些已知因素计算人气

我有一个电影列表,其中每个已知以下因素:

  • 未来想看电影的人数
  • 看过电影的人数
  • 喜欢这部电影的人数
  • 观看和不喜欢这部电影的人数
  • 电影评论数
  • 电影页面的页面点击数(直接或来自搜索引擎)

所以基于上述因素,我正在寻找一种方法来计算每部电影的受欢迎程度。在这种情况下,是否有任何已知的公式或算法来计算流行度值?首选算法是那些提供更有效方式来更新先前计算的每个项目的流行度值的算法。