支持1个字频率的标签云算法

时间:2011-10-25 15:20:04

标签: objective-c algorithm tag-cloud word-frequency

我想在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);

所以我的问题是,是否有任何标记云算法将此考虑在内,并且能够计算每个单词的字体大小,即使最大频率等于最小频率?

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

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

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