我想在Objective-C中制作一个Tag Cloud,我正在努力寻找一个好的算法。我尝试了几个,起初看起来效果很好,但它们都有一个缺陷:如果出现次数最少的单词出现频率最高的单词,那么整个过程就有缺陷。
示例(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);
所以我的问题是,是否有任何标记云算法将此考虑在内,并且能够计算每个单词的字体大小,即使最大频率等于最小频率?
答案 0 :(得分:1)
尝试以下方法:
var multiplier = (maxPercent-minPercent)/(max-min+1);
var size = minPercent + ((max-(max-(count-min)))*multiplier);
据我所知,它解决了你的问题就好了;同时,只要频率可以区分,+1
就不会改变很多东西。