支持1词频的标签云算法



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

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

尝试如下:

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

在我看来,它很好地解决了你的问题;同时,只要频率是可区分的,+1不会改变太多。

相关内容

  • 没有找到相关文章

最新更新