2016-10-27 14 views
-1

私はテキストのベクトル化にword2vecを使用し、次にscikit-learnを使用してテキストのクラスタリングにk-meansを使用しています。クラスタリングの後、各クラスタの重心に最も近い上位5または10ワードを取得するにはどうすればよいですか?私はクラスター内のすべての単語を取得することができますが、最も近い単語を取得することはできません。私は言葉にTF-IDFマップ内の各機能として、TF-IDFベクトライザーを使用していたとき、それは単純明快だったが、それはword2veck-meansはword2vecを使用することを意味します:centroidの最も近い単語を見つける

とそうではありませんここで私はK-手段

ためword2vecを使用しています方法です
model = gensim.models.Word2Vec.load('w2v.mdel') 
word_vectors = vecTransform(input) #Convert input text to word vectors 
km = KMeans(n_clusters=5) 
idx = km.fit_predict(word_vectors) 
+0

実際にword2vecを使ってテキストをベクトル化する方法に依存します。あなたは詳しく説明できますか? – geompalik

+0

@geompalik今すぐ自分のコードを追加しました – Shamy

答えて

0

実際には、問題はvecTransformです。与えられたテキスト文書について、それが含まれている単語のw2v表現を平均して文書表現を得るなら、あなたはまだ最初のw2vベクトルと同じ次元の空間にいます。したがって、k-meansアルゴリズムの重心(sklearnの実装を使用していると思われるkm.cluster_centers_)を考えると、これらの重心に最も近い単語を見つけることができます。ただし、特に文書にいくつかの単語とあなたは、平均化プロセスのすべてを使用します。

+0

はい。私は文書内のすべての単語のすべてのw2vを平均しています。より良いアプローチをお勧めしますか? – Shamy

+0

先験的に、これは別の質問でしょう。私の意見では埋め込みの合成性は解決された問題ではありません。私はあなたが達成しようとしていることをまだ理解していません。 – geompalik

関連する問題