【问题标题】:Distribute integers for tag cloud weighting [closed]为标签云加权分配整数 [关闭]
【发布时间】:2013-01-21 18:29:42
【问题描述】:

我有一个想要在网页中显示为标签云的单词列表。每个词都有一个相应的“权重”,它决定了这个词在标签云中应该出现的大小。

假设这个数组包含每个单词被用来标记文档的次数,我想使用这些值作为每个单词的权重:

int [] ints = new int[] { 1, 2, 4, 3, 2, 1, 4, 2, 1000};

我希望权重范围在指定范围内,这样渲染代码就有一组可预测的数字来处理,但是我不想简单地对这些整数进行标准化,因为除了最后一个之外的所有整数都将基本上为零.

如果发生这种情况,那么标签云中的单个项目会非常大,而所有其他标签都会很小。我正在寻找一种将所有整数压缩到有限范围内同时保持一定程度的多样性的方法。

那么我怎样才能转换集合以使最终的大值不会使其他值变得无关紧要?

【问题讨论】:

  • 这不清楚。你想用这些值做什么?
  • 如果我正确理解您的问题,您可以考虑在标准化整数之前使用Logarithmic scale
  • 这里最有可能的方法是规范化日志
  • @OliCharlesworth 请看问题。

标签: c# algorithm distribution statistics


【解决方案1】:

使用对数对数据进行预处理并降低数字的比例。根据数据值选择对数的底。出于标签云的目的,我认为使用以 2 为底的 log 是最理想的。找到日志后,将结果数字标准化。

【讨论】:

  • 事后似乎很难将它们标准化,因为无论基数如何,1 的对数都是零。
  • @IanWarburton:是的,根据定义,对于任何基数,log 1 始终为 0。为了克服这个问题,您可以在记录日志后将所有数字加 1,然后对其进行规范化。
  • @IanWarburton 你也可以有小数基数,所以如果基数 2 不能给你一个满意的分布,那么试试 1 到 2 之间的小数作为基数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2013-08-12
相关资源
最近更新 更多