2011-10-25 6 views
2

私はObjective-Cでタグクラウドを作ろうとしていますが、良いアルゴリズムを見つけようとしています。私はいくつか試してみましたが、最初はかなりうまくいっていましたが、すべてに1つの欠点がありました。最も頻度の低い単語ほど出現頻度が低い単語が頻繁に出現すると、プロセス全体に欠陥がありました。1ワード周波数をサポートするタグクラウドアルゴリズム

例(グーグルの最初のアルゴリズム):

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

ここで、分= 5、最大= 5場合、5 = maxPercent = 300、minPercent = 75、およびカウント、あなたは持っている:

var multiplier = (300-75)/(5-5) ----- division by 0, impossible 
var size = 75 + ((5-(5-(5-5)))*multiplier); 

私の質問は、これを考慮に入れたタグクラウドアルゴリズムがあり、最大頻度が最小頻度に等しい場合でも各単語のフォントサイズを計算できるかどうかです。

答えて

1

は、以下のことを試してみてください。

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

は、私の知る限り見ることができるように、それがうまくあなたの問題を解決します。同時に、周波数が区別できる限り、+1は物事をあまり変えない。

+0

今のところうまくいきますが、問題は、すべての単語のフォントサイズが一番小さくなっていることです。何とかそれらを平均化することは可能だと思いますか? – elliottbolzan

+0

まあ、仕様が役立つだろう:)すべての単語は、可能な限り低い周波数を持っていないか?とにかく、あなたが "可能な限り低い周波数"から "可能な最大周波数"に切り替えると、 'maxPercent - (max-count)* multiplier'とすると、可能な限り最大のフォントサイズが得られます。平均に達することは難しくない - 私はあなたが5分で完了すると思います。 – alf

+0

どのように私がそれを逃したのか分かりません...とにかく、興味のある人は、最大と最小が等しい場合には、maxPercentとminPercentを平均することでした。 – elliottbolzan