2

私は、類似度に基づいて文をグループ化する必要があるプロジェクトに取り組んでいます。

たとえば、次の文は 1 つのクラスターにグループ化する必要があります。

  1. Apple の巨大な第 1 四半期の収益は、ウォール街ではまだ不足している
  2. Apple が 2013 年第 1 四半期の収益を発表: 記録的な 545 億ドルの収益。
  3. Apple は過去最高の収益と利益を記録しました。iPhoneの売上は30%近く跳ね上がる。

タイトルは続々と入ってくるので、クラスターをその場でアレンジして修正する必要があるかもしれません。現在、Monge-Elkan アルゴリズムを使用して 2 つの文字列がどの程度類似しているかを特定していますが、それらをクラスター化する方法がわかりません。

インターネットで検索すると、K-Means アルゴリズムを使用してコンテンツをグループ化する必要があると思われますが、自分が持っているものをどのように処理すればよいかわかりません。

少し複雑なのは、Google App Engine でホストしているため、ファイル システムを使用できないことです。

4

2 に答える 2

3

編集距離メトリックは、文章の意味の類似性を効果的にモデル化する可​​能性は低いです。文字列としてのテキストの低レベル表現についても同じことが言えます。

より良いアプローチは、ベクトル空間モデルなどの高レベルの表現を使用することです。ここでは、文のコレクション (コーパス) 内のすべての一意の単語を収集し、それぞれを番号にマップします。各文書 (文) はベクトルとして表されます。

[w1_count, w2_count, ..., wN_count]

ここで、N 番目の要素は、特定の文の N 番目の単語 (番号 N にマップされた単語) の数です。

これで、このデータセットで k-means を実行できますが、より良い方法は次のとおりです。

  1. 「Apple」などの重要な単語が「on」や「in」などの一般的な単語よりも重み付けされるようにデータを処理します。そのような手法の 1 つがTF-IDFです。次に、ユークリッド距離を使用して、これに対して標準の k-means を実行します。

  2. さらに良いことに、 Latent Semantic AnalysisLatent Dirichlet Allocationなどのさらに高レベルのツールを使用してください。

既存のアプローチを使用したい場合は、Simon G. の回答が正しい方向を示しており、この質問で距離カバーとの類似性が回答されています。

于 2013-01-24T13:59:16.853 に答える
2

まず、距離として考えられるように、類似点を非類似点に変更します

次に、多次元スケーリング ライブラリを使用して、距離を空間内のポイントに変更します。

3 番目に、空間内の点に対して通常の k-means を使用します。

于 2013-01-24T04:41:04.113 に答える