我有一个单词列表,我想在网页中显示为标签云。每个单词都有一个相应的“权重”,用于确定单词在标签云中应显示的大小。
假设这个数组包含每个单词用于标记文档的次数,我想使用这些值作为每个单词的权重:
int [] ints = new int[] { 1, 2, 4, 3, 2, 1, 4, 2, 1000};
我希望权重范围在指定的范围内,以便渲染代码具有可预测的数字集来处理,但是我不想简单地将这些整数归一化,因为除了最后一个之外的所有数据基本上都是零
如果发生这种情况,那么标签云中的单个项目将会非常大,而其他所有标签都会很小。我正在寻找一种方法,将所有整数压缩到有限的范围内,同时保持一定程度的多样性。
那么我怎样才能改变这个集合,使得最终的大值不会使其他值无关紧要?
答案 0 :(得分:2)
使用对数预处理数据并降低数字的比例。根据数据值选择对数的基数。出于标签云的目的,在我看来,使用log to base 2将是最理想的。找到日志后,将生成的数字标准化。