2

我正在寻找在 Objective-C 中制作标签云,并且正在尝试找到一个好的算法。我尝试了几个,起初似乎效果很好,但它们都有一个缺陷:如果出现次数最少的单词和出现频率最高的单词一样频繁,那么整个过程就有缺陷。

示例(Google 中的第一个算法):

var multiplier = (maxPercent-minPercent)/(max-min);
var size = minPercent + ((max-(max-(count-min)))*multiplier);

在这里,如果 min = 5、max = 5、maxPercent = 300、minPercent = 75 和 count = 5,那么您有:

var multiplier = (300-75)/(5-5) ----- division by 0, impossible
var size = 75 + ((5-(5-(5-5)))*multiplier);

所以我的问题是,是否有任何标签云算法考虑到这一点,并且能够计算每个单词的字体大小,即使最大频率等于最小频率?

4

1 回答 1

1

尝试以下操作:

var multiplier = (maxPercent-minPercent)/(max-min+1);
var size = minPercent + ((max-(max-(count-min)))*multiplier);

据我所知,它可以很好地解决您的问题;同时,只要频率是可区分的,+1就不会改变太多。

于 2011-10-25T15:29:25.747 回答