2013-02-06 65 views
-1

我有一個單詞列表,我想在網頁中顯示爲標籤雲。每個單詞都有一個對應的「權重」,它決定了單詞在標籤雲中應該出現的大小。爲標籤雲權重分配整數

比方說,這個數組包含的時間每個字已經被用於標記的文檔數量,我想用這些值作爲加權每個字:

int [] ints = new int[] { 1, 2, 4, 3, 2, 1, 4, 2, 1000}; 

我想權重範圍在一個指定的範圍內,這樣渲染代碼就有一組可預測的數字來處理,但是我不想簡單地對這些整數進行歸一化處理,因爲除了最後幾乎都是零。

如果發生這種情況,那麼標籤雲中會有一個單獨的項目,它會非常大,其他所有標籤都很小。我正在尋找一種將所有整數壓縮到有限範圍的方法,同時保持一定程度的多樣性。

那麼我該如何轉換這個集合,使得最終的大值不會使其他值不重要?

+4

這個不清楚。你想用這些值做什麼? –

+2

如果我正確理解你的問題,你可以考慮在規範化你的整數之前使用[Logarithmic scale](http://en.wikipedia.org/wiki/Logarithmic_scale)。 –

+2

這裏最有可能的方法是標準化日誌 –

回答

2

使用對數來預處理數據並降低數字的比例。根據數據值選擇基數爲對數。對於標籤雲來說,使用日誌到基數2對我來說是最理想的。找到日誌後,將結果數字標準化。

+0

我會試一試。 –

+0

似乎很難對它們進行標準化,因爲無論基數是多少,日誌都是零。 –

+0

@IanWarburton:是的,根據定義,對於任何基數,log 1總是0。爲了克服這個問題,你可以在記錄日誌後給所有數字加1,然後對它們進行標準化。 –