2017-01-31 3 views
1

私はテキストマイニングの初心者です、ここに私の状況です。 私は単語['car'、 'dog'、 'puppy'、 'vehicle']のリストを持っているとします。kグループに単語をクラスタリングしたいと思います。出力を[car '、' vehicle ']、[' dog '、' puppy ']]。 まず、各ペアワイズ語の類似度スコアを計算して、4x4行列(この場合)Mを得る。ここで、Mijは単語iとjの類似度スコアである。 単語を数値データに変換した後、別のクラスタリングライブラリ(sklearnなど)を使用するか、それを自分で実装して単語クラスタを取得します。Pythonでクラスタリングする単語のリスト

このアプローチは意味がありますか?また、kの値をどうやって決めるのですか?もっと重要なことに、私は別のクラスタリング手法が存在することを知っています。私は単語クラスタリングのためにk-meansかk-medoidsを使うべきかどうか考えていますか?

+1

どのような類似性を計算しようとしていますか?キャラクターの類似性(例えば「ロック」は「時計」に非常に似ている)、または単語の意味の類似性(例えば「犬」は「子犬」に非常に似ている)? –

+0

@Marcel Pおそらく単語の意味の類似性 –

+0

あなたはそれをどのように計算しますか? 「意味」の式はありません。 –

答えて

1

「意味的類似性」(言い換えれば意味の類似性)で単語をクラスタリングする場合は、Word2VecとGloVeを見てください。 GensimにはWord2Vecの実装があります。このWebページ"Word2Vec Tutorial"(Radim Rehurek著)は、Word2Vecを使用して同様の単語を決定する方法についてのチュートリアルを提供しています。あなたがword2vec(またはFastTextまたはGLoVE、...)との意味的な類似性を計算したら

0

Brian O'Donnellで答えをフォローアップ、あなたはその後、sklearn.clusteringを使用して行列をクラスタ化することができます。私は、小さな行列の場合、スペクトルクラスタリングが最良の結果をもたらすことを発見しました。

単語ベクトルは、しばしば高次元の球に埋め込まれることに留意する価値があります。ユークリッド距離行列を持つK-meansはこれを捕らえることができず、直近ではない単語の類似性のために結果が悪くなる可能性があります。

0

類似性スコアに関して既に述べたことに加えて、クラスタリングアプリケーションでkを見つけることは、一般にscree plots(「エルボーカーブ」としても知られる)によって支援される。これらのプロットでは、通常、y軸上のクラスター間の分散とx軸上のクラスターの数量を測定します。スクリープロットの曲線の最小値(2階微分値)を見つけることで、クラスタの "一意性"をより客観的に測定できます。

関連する問題