簡體   English   中英

聚類python中的單詞列表

[英]clustering list of words in python

我是文本挖掘的新手,這是我的情況。 假設我有一個單詞列表['car','dog','puppy','vehicle'],我想將單詞分成k組,我希望輸出為[['car','vehicle' ],['狗','小狗']]。 我首先計算每個成對詞的相似性得分以獲得4×4矩陣(在這種情況下)M,其中Mij是詞i和j的相似性得分。 在將單詞轉換為數字數據之后,我利用不同的聚類庫(例如sklearn)或者自己實現它來獲得單詞簇。

我想知道這種方法有意義嗎? 此外,我如何確定k的值? 更重要的是,我知道存在不同的聚類技術,我在想是否應該使用k-means或k-medoids進行單詞聚類?

跟隨Brian O'Donnell的回答,一旦你用word2vec (或FastTextGLoVE ,...)計算了語義相似度,你就可以使用sklearn.clustering對矩陣進行sklearn.clustering 我發現對於小矩陣,譜聚類可以得到最好的結果。

值得注意的是,單詞向量通常嵌入在高維球體上。 具有歐幾里德距離矩陣的K均值無法捕獲這一點,並且可能導致不是直接鄰居的單詞的相似性的差的結果。

如果你想通過它們的“語義相似性”(即它們的含義相似)來聚類單詞,請看一下Word2Vec和GloVe。 Gensim有Word2Vec的實現。 Radim Rehurek撰寫的這個網頁“Word2Vec Tutorial”提供了使用Word2Vec來確定相似單詞的教程。

除了已經說過的關於相似性得分的內容之外,在聚類應用中找到k通常是通過scree圖 (也稱為“肘曲線”)來輔助的。 在這些圖中,您通常會測量y軸上的簇之間的分散度,以及x軸上的簇的數量。 在scree圖中找到曲線的最小值(二階導數)可以更加客觀地衡量聚類的“唯一性”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM