2013-07-08 32 views
16

我在嘗試對Twitter流進行聚類。我想將每條推文放到討論同一主題的羣集中。我嘗試使用tf/idf和餘弦相似度的在線聚類算法對流進行聚類,但是我發現結果非常糟糕。更好的文本文件聚類比tf/idf和餘弦相似?

使用tf/idf的主要缺點是,它將與關鍵字相似的文檔聚類在一起,因此只需識別幾乎相同的文檔即可。例如考慮以下句子:

1-網站Stackoverflow是一個不錯的地方。 012-2- Stackoverflow是一個網站。

預先使用的兩個句子可能會與一個合理的閾值聚集在一起,因爲它們共享了很多關鍵字。但現在考慮以下兩句話:

1-網站Stackoverflow是一個不錯的地方。我定期訪問Stackoverflow。

現在通過使用tf/idf,聚類算法將失敗,因爲他們只共享一個關鍵字,即使他們都談論同一主題。

我的問題:是否有更好的技術來聚類文件?

+4

@ThomasJungblut好吧,TF-IDF應該是一個加權計劃,已經給相關關鍵字更多的權重。如果認爲問題在於推文只是如此細小的文本片段,那麼除了「近身份」之外,你不能指望它們的相似性能夠很好地發揮作用。大多數推文甚至不是完整的句子,所以NLP很可能也會失敗。 –

+1

有關LSI/LDA/NMF等的一件事就是話題漂移。如果管道未正確完成,在已知數據集上訓練模型將產生良好結果。如果您將模型應用於完全不可見的數據集,則由於擬合了原始訓練數據,您可能會看到性能顯着下降。由於Twitter文本太短,因此表示法需要一點小竅門,因爲可能沒有足夠的文本來正確地訓練模型。 – Steve

+0

@steve是否有解決方案? –

回答

2

龍答:

TfxIdf是目前國際上最有名的搜索方法之一。你需要的是來自Natural Langage Processing(NLP)的一些預處理。有很多資源可以幫助你解決英文問題(例如python中的lib'nltk')。

在編制索引之前,您必須在查詢(問題)和您的文檔中使用NLP分析。

問題是:雖然tfxidf(或lucene中的tfxidf^2)很好,但您應該在具有元語言學信息的註釋資源上使用它。這可能很難,需要有關核心搜索引擎,語法分析(語法)和文檔域的廣泛知識。

簡短回答:更好的方法是使用TFxIDF輕語法NLP註釋,並重寫和查詢索引。

9

根據我的經驗,latent semantic analysis(LSA/LSI)向量的餘弦相似性比原始tf-idf對文本聚類的效果要好得多,儘管我承認我沒有在Twitter數據上嘗試它。特別是,它傾向於處理您遇到的稀疏性問題,文檔中不包含足夠的常用術語。

主題模型(如LDA)可能會更好。

+0

是主題模型聚類技術?或功能表示? –

+0

@guckogucko:特徵表示。 –

6

正如其他評論和答案中所述。使用LDA可以提供良好的推文 - >主題權重。

如果這些權重不足以滿足您的需求,您可以使用聚類算法對這些主題分佈進行聚類。

雖然它依賴於訓練集LDA可以輕鬆地將tweets與stackoverflow,堆棧溢出和堆棧溢出捆綁到同一主題中。然而,「我的一疊盒子即將溢出」可能會轉而談論盒子的另一個話題。

另一個例子:蘋果這個詞的推文可能會涉及許多不同的主題(公司,水果,紐約和其他)。 LDA會查看推文中的其他詞語來確定適用的主題。

  1. 「史蒂夫·喬布斯是在蘋果首席執行官」顯然是對公司
  2. 「我吃最美味的蘋果」顯然是對水果
  3. 「我要去大蘋果當我前往美國「最有可能訪問紐約