【问题标题】:Tag Cloud Algorithm that Supports 1 Word Frequency支持1词频的标签云算法
【发布时间】:2011-12-15 01:12:17
【问题描述】:

我正在寻找在 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);

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

【问题讨论】:

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


    【解决方案1】:

    尝试以下方法:

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

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

    【讨论】:

    • 你是对的,因为它现在可以工作了,但问题是,现在每个单词都有可能的最小字体大小;你认为有可能以某种方式使它们都达到平均水平吗?
    • 嗯,一个规范会很有帮助:) 所有的词都有尽可能低的频率,不是吗?无论如何,如果您通过使用例如从“最低可能频率”切换到“最大可能频率”。 maxPercent - (max-count)*multiplier,你会得到它们的最大字体大小。达到平均水平并不难——我想你会在五分钟内完成。
    • 哇,我不知道我是怎么错过的!...无论如何,对于任何感兴趣的人,我的最终解决方案是在最大值和最小值相等的情况下平均 maxPercent 和 minPercent。
    猜你喜欢
    • 2016-11-19
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多