2012-04-18 7 views
2

tf-idf行列に基づいてピアソン相関係数を計算して、どの項が他の項と組み合わされているかを調べることは意味がありますか?それは数学的に正しいのですか?tf-idf値に基づいて相関を計算しますか?

私の出力は、各タームの各セルに相関係数を持つ相関行列です。

  • ------- TERM1 TERM2 TERM3
  • TERM2
  • TERM2
  • TERM2

答えて

3

それは他の用語との組み合わせで発生する "のあなたの定義に依存します。これをさらに明確にするために、

ピアソン平均相関を行うときはidfは無関係です。同じ項のすべてのtf値には、同じidf値が乗算され、最終のtf-idfが生成されます。 PMCは入力のスケーリングに関して不変であるため、idfはここで取り消されます。したがって、提案されたアイデアの中で重要なのはすべてtfです。あなたはidfを計算していない場合でも、いくつかの計算を保存するかもしれませんが、もしあなたがそうした場合、それは傷つきません。

今、tfの使用についてです。

TermAは、Document1によく現れ、少しでもDocument2に表示されます。一方、TermBは、Document1に少しでも非常に頻繁にDocument2に表示されます。これらの2つの用語が一緒に出現するかどうかは言うでしょうか?それらは同じ文書内ではあるが、異なる頻度で発生する。 tf-idfのPMCを使用すると、(周波数差のために)共起しないという結果になります。

この時点で、PMCは値が-1から1になることにも注意してください。私。独立した(PMC = 0)と反対の単語(PMC = -1)の共起する単語(PMC = 1)を持つことができます。これはモデリングしているドメインに合っていますか?そうでない場合は、PMCに1を追加します。

もう1つの方法は、PMCと非常に似ていますが、いくつかの異なる特性を持つコサイン類似性を使用することです。また、他のいくつかのケースでは、実際の同時発生に関心があり、頻度については気にしません。

すべてのこれらのメソッドはそう言って「正しい」です。より重要な問題は、これらの方法のどれがあなたがモデリングしている問題に最も適しているかです。多くの場合、これは理論的に決定することはできませんが、異なる選択肢を試し、どちらが問題のドメインに最も適しているかをテストするだけです。

EDIT(以下のコメントについてのいくつかの発言)

は、コサイン類似度は、実際に役立つんが、その場合には違った考えなければなりません。もちろん、文書内の用語の用語 - 周波数ベクトルを生成し、次にこれらの文書用語 - 周波数ベクトルのコサイン類似度を計算することができます。あなたは、これがあなたに互いの投稿の類似性を与えることを正しく指摘しました。しかし、これは私が意味するものではありません。完全な用語 - 頻度行列がある場合は、ベクトルを生成することもできます。ベクトルは、各単語にどのくらいの頻度で出現するかを1つの単語で表します。これらのベクトルのコサイン類似度を計算することもできます。これは、文書の共同出現に基づく用語の類似性を与えるでしょう。

(ただし最初の我々はいくつかの表記が必要になります)それについてこのように考える:

f_{i,j}用語iが文書jに登場した回数は、(それだけになるので、私は、ここにIDFを無視していますのでご注意表してみましょう文書の代わりに用語を扱うときに取り消す)。また、F=(f_{i,j})_{i=1...N,j=1...M}を文書用語行列全体を表すようにします(用語は列と文書を行に入れます)。最後に|F|_cという行列をFと呼びます。各列は、l^2のノルムと|F|_rの行列Fの正規化に従って正規化されます。各行は、l^2ノルムに従って正規化されます。もちろん、通常のようにA^Tは、転位をAとしています。その場合、あなたはこれがあなたの文書の類似性を説明MxM行列を与えるだろう

(|F|_r)*(|F|_r)^T 

として条件に基づいて、すべての文書間の通常のコサイン距離を持っています。

あなたの代わりに用語の類似性を計算したい場合は、単にあなたのドキュメントで共同発生箇所に基づいて用語の類似性を説明NxN行列を与える

(|F|_c)^T*(|F|_c) 

を計算します。

PMCの計算は基本的に同じで、各行列乗算の行と列に適用される正規化のタイプが異なります。

他の投稿には、文書にtermAが表示されている場合、その文書に同じtermBも表示されている可能性があります。または形式的に話すp(termB | termA)ここで、p(termX)は、文書に出現する確率がtermXであることを示します。それは、再び計算することは非常に簡単で全く異なる獣ですが、:

1. Count the number of documents in which `termA` appears (call it num_termA) 
2. Count the number of documents in which both `termA` and `termB` appear (call it num_termA_termB) 

then p(termB | termA)=num_termA_termB/num_termA 

これは共同occurenctの可能性のactuall統計的尺度です。ほとんどの場合、関係p(termB | termA) == p(termA | termB)は保持されない可能性があります。したがって、この共起の測定は、MDSを介したクラスタリングにはまったく使用できません。これはほとんどの場合(無意味なインテンテッドではありません)。

PMCとコサイン類似性の両方を試してみましょう(上記のように正規化が異なるので、両方を実装するのが速いはずです)、クラスタリング後にどちらが良いかを確認することをお勧めします。

一連のドキュメントに基づいてトピックをクラスタ化するための高度な手法がいくつかあります。用語文書マトリックスの主成分分析(PCA)または非負行列因子分解も頻繁に使用されます(潜在意味解析またはLSAの詳細を参照)。しかし、これはあなたのユースケースには過剰なものかもしれません。これらのテクニックははるかに難しいです。 PMCとコサイン類似点は実装が簡単ではないという絶対的なメリットがあります(コサイン類似度は正規化が容易なため少し単純です)、間違ってしまうのは難しいです。

+0

私は、最も注目されているトピックと、その特定のブランドについてのそれらの関係(一緒に発生する)の2次元マップを作成しようとしています。私は約2500のソーシャルメディア/ネットワークの投稿(facebook、twitter、boardsなどから)を持っています。私はトークン化し、filtern(ストップワード)し、ポストを打ち砕いた。次に、すべての文書(投稿)/用語のtf-idf値を計算しました。この値を使って相関行列を計算しました。相関行列を用いて多次元スケーリングを行った。出力は、すべてのトピック(用語)の「マップ」です。一緒に出現するトピックは、一緒に出現しないトピックよりも近い。 – user1341610

+0

私の考えによれば、コサイン類似度は、ポスト/ドキュメント全体の類似度を計算するため、私のアプローチには適合しません。私が必要とするのは、用語が互いに関連しているかどうかを測定することです。誰かがポストXYで書いたように、彼はXZも書いた可能性が高いです。 – user1341610

+0

@ user1341610:私の編集を参照してください、私は少しこれをクリアできることを願っています。 – LiKao

関連する問題