2012-06-22 38 views
2

我需要一個用於文本流聚類的輕量級工具。輕量級,因爲它沒有內存,因此它可以記住以前的文本條目。這裏的文本流意味着連續輸入字母數字和半結構化句子/短語,例如:任何應用程序的日誌。基於相似性的聚類意味着該算法應該將具有模式相似性的組中的文本聚類。例如:text1 ='aaababac'和text2 ='aaaaabac'應該組合在一起,因爲它們之間只有一個字符不同。情景是:首先text1出現算法應該給它一個索引。那麼text2現在出現了,該算法使用相同的方法給它一個索引。但條件是兩個索引應該彼此靠近,並且在處理text2時,該算法不知道早期文本中出現了什麼。 這是一種基於模式相似度的哈希。基於相似度的文本流聚類算法是否有新的突破?

現在我找不到任何有用的東西。我發現的最佳解決方案是simhash。 http://matpalm.com/resemblance/simhash/

回答

1

這個問題有點低估。如果你不記得以前的條目,你將如何記住你所看到的集羣? 尤其是,一旦您看到大量「類似」項目,通常情況下只會將事物視爲羣集。沒有至少一些「記憶」什麼是頻繁的,什麼不是,你不能做到這一點。因此,沒有合理的聚類算法,它確實沒有任何內存。它可能不會記住文字對象,但記憶摘要並非如此。散列意味着至少記憶以前看到的數據的一部分。但是記住一個統計上顯而易見的隨機部分數據,這對記住它的好處很多嗎?

發生的事情大部分是假裝不記憶的事情,但事實上,他們只是記住不同的數據。但只要它被髮布,它就被認爲是成功的。即使它在實踐中不起作用。

+0

感謝.....實際上關於'聚類'我們可以這樣說,它可以是一種散列算法,它根據它們遵循的模式獲取輸入文本聚類。關於爲什麼要記住一個散列而不是輸入文本本身的問題,我們可以使用:如果我們可以將文本(不是定量的)散列成一種索引(定量),我們可以有一個動態分析我們可以從中提取文本簇,也就是說,相似度較高的較小簇或簇成員之間相似度較低的較大簇。 –

+0

哈希值的計算距離通常不能很好地工作。哈希被設計爲保持身份,而不是相似性;而附近的值被「加擾」到非常不同的位置,以均勻分佈在輸出範圍上。 (LSH先接近距離,使物體相同;然後甚至通過一個小的散列值範圍碰撞它們,它不計算散列鍵的距離,但認爲相同的鍵候選物!) –

+0

這些詞可以作爲候選鍵嗎?但是,由於我們只有一個可用的通行證,並且我們在這裏處理智能代理(代理指的是算法)而不是專家代理,因此對於我們的情況,所有的單詞都可以是候選。請注意,專家意味着學習和優化類型的代理,而我們的例子,即智能代理不能有學習階段。這可以幫助嗎? –

0

我想你所描述的叫做incremental clusteringdata stream clustering

+0

其實我誤導你提到聚類。它實際上只應該是散列/索引算法。我需要更多的連續縮放索引/散列,這也代表了文本之間的模式相似性。如果問題只屬於聚類,那麼您提供的參考資料將是一個解決方案。但是,它不是可以將輸入視爲可變長度文本,而是輸出是連續縮放索引的維度降低。 –