2016-11-20 66 views
0

我有以下問題。我應該使用哪種算法來根據集合對詞進行聚類

我有一個包含單詞行的大數據集。 所以即

apple,door,wood 
window,door,house 
boot,pie,dessert 

我想創建4個類別出所有這些單詞,然後字的一個新行匹配到4個類別中的一個。單行中的單詞之間有某種聯繫,但我沒有任何關於如何獲得單詞的信息。

scikit-learn或其他python包中有一個算法,我可以使用它嗎?

編輯:

我看到我給了很少的信息。

單詞可以是一個網頁中的關鍵詞,然後我想根據這些關鍵詞選擇一個類別,這樣我可以對下一篇文章的內容提出建議。

但是,我不想創建到很多類別,所以我想結合類別。也就是說,如果結果'狗'與'house'在同一行很多次,那麼如果'dog'存在於關鍵字中,我可以建議'house'。

我不想在前面設置分類,我想首先獲取分組,然後創建一個與最佳詞相匹配的分類。

+0

就目前而言,您的問題非常不清楚和廣泛。什麼是類別?你想分類行還是單詞?你試過什麼了? scikit-learn爲許多不同的機器學習算法提供了實現。 –

+0

數據集中的單詞是否有所不同?或者你是否發現任何「模式」,比如說經常重複自己的單詞?你能計算你擁有的不同單詞的數量嗎? –

+0

@EliKorvigo我增加了更多信息。我只是從scikit開始,所以還不知道算法。但我想到了kmeans或minibatch,但不知道如何用多個集合來做到這一點。 – user3605780

回答

1

您想生成文字表示嗎?如果是這樣,你可以通過使用gensims word2vec創建單詞向量。你可以做的是用每一行作爲句子並刪除逗號,然後你會學到什麼詞彙彙集在一起​​,並且具有相似語境的詞彙將會有相似的詞彙嵌入。然後,您可以對單詞向量本身運行k-means,並根據表示形式獲得更好的集羣。

從你的問題,如果你知道具體的詞總是聚集在一起,並希望創建類似的一步,但在這一點上,我不認爲你會需要使用k-means,除非當然這不是這種情況你可以有任何字的組合,並想弄清楚哪些組合是類似的,在這種情況下,你可以將每個字設置爲一個整數ID,所以apple1door2,wood3等等和等等。然後像第一個例子那樣的矢量看起來像[1,1,1,0,....0]。這裏的問題在於K-means對於這些向量不會很好,如果你只是不知道單詞的模式,那麼你更好地構建單詞嵌入。

+0

謝謝我會試試這個。 – user3605780

相關問題