Алгоритм облака тегов, который поддерживает частоту 1 слово - PullRequest
2 голосов
/ 25 октября 2011

Я пытаюсь создать облако тегов в 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);

Итак, мой вопрос: существуют ли какие-либо алгоритмы Облака тегов, которые учитывают это и способны рассчитать размер шрифта каждого слова, даже если максимальная частота равна минимальной частоте?

1 Ответ

1 голос
/ 25 октября 2011

Попробуйте следующее:

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

Насколько я понимаю, это прекрасно решает вашу проблему; в то же время, пока частоты различимы, +1 ничего не меняет.

...