tf-idf 行列に基づいてピアソン相関係数を計算して、どの用語が他の用語と組み合わせて発生するかを確認することは理にかなっていますか? 数学的に正しいですか?
私の出力は、各項の各セルに相関係数を持つ相関行列です。
- -------term1 term2 term3
- ターム2
- ターム2
- ターム2
tf-idf 行列に基づいてピアソン相関係数を計算して、どの用語が他の用語と組み合わせて発生するかを確認することは理にかなっていますか? 数学的に正しいですか?
私の出力は、各項の各セルに相関係数を持つ相関行列です。
「他の用語と組み合わせて発生する」の定義によって異なります。これを明確にするために、さらにいくつかの点を説明します。
ピアソン平均相関を行う場合、idf は無関係です。同じ用語のすべての tf 値に同じ idf 値が乗算され、最終的な tf-idf が得られます。PMC は入力のスケーリングに関して不変であるため、idf はここでキャンセルされます。したがって、提案されたアイデアで重要なのは tf だけです。idf を計算しなくても計算を節約できるかもしれませんが、計算してもそれほど問題はありません。
次に、tf の使用方法について説明します。何が必要かを理解するための例を作ってみましょう:
TermA
に非常に頻繁に登場し、Document1
に少ししか登場しないとしましょうDocument2
。TermB
一方で、 にDocument1
は少し、非常に頻繁に現れますDocument2
。この 2 つの用語は一緒に現れると思いますか? それらは同じドキュメント内で発生しますが、頻度が異なります。tf-idf の PMC を使用すると、(周波数の違いにより) それらが共起しないという結果になります。
この時点で、PMC の値が -1 から 1 になることにも注意してください。つまり、共起する (PMC=1) 独立した単語 (PMC=0) と、反対の単語 (PMC=-1) を持つことができます。これは、モデリングしているドメインに適合しますか? そうでない場合は、PMC に 1 を追加します。
もう 1 つの方法は、コサイン類似度を使用することです。これは、PMC に非常に似ていますが、いくつかの異なる特性があります。また、実際の同時発生のみに関心があり、頻度は気にしない場合もあります。
これらの方法はすべて、いわば「正しい」ものです。より重要な問題は、モデル化している問題にこれらの方法のどれが最も適しているかということです。多くの場合、これは理論的に決定することはできませんが、さまざまな代替案を試して、どれが問題のドメインに最も適しているかをテストすることによってのみ決定できます。
編集(以下のコメントに関するいくつかのコメント):
コサインの類似性は実際に役立ちますが、その場合は別の考え方をする必要があります。もちろん、ドキュメント内の用語の用語頻度ベクトルを生成し、これらのドキュメント用語頻度ベクトルのコサイン類似度を計算できます。あなたは正しく指摘しました。これにより、投稿同士の類似性が得られます。しかし、これは私が意図したものではありません。完全な用語-頻度マトリックスがある場合は、ベクトルを作成することもできます。これは、単一の用語について、その用語が各ドキュメントに出現する頻度を表します。これらのベクトルの余弦類似度を計算することもできます。これにより、ドキュメントの共起に基づいて用語の類似性が得られます。
このように考えてみてください (ただし、最初にいくつかの表記が必要になります)。
letは、用語がドキュメントに出現しf_{i,j}
た回数を示します(ドキュメントの代わりに用語を処理する場合、単にキャンセルされるため、ここでは idf を無視していることに注意してください)。また、ドキュメントと用語のマトリックス全体を表すようにします (用語は列に、ドキュメントは行に配置されます)。最後に、各列がノルムに従って正規化された行列と、各行がノルムに従って正規化された行列を呼び出します。もちろん、いつものように の転置を表します。その場合、次の用語に基づくすべてのドキュメント間の通常の余弦距離があります。i
j
F=(f_{i,j})_{i=1...N,j=1...M}
|F|_c
F
l^2
|F|_r
F
l^2
A^T
A
(|F|_r)*(|F|_r)^T
これMxM
により、ドキュメントの類似性を説明するマトリックスが得られます。
代わりに用語の類似性を計算したい場合は、単に計算します
(|F|_c)^T*(|F|_c)
これによりNxN
、ドキュメント内の共起に基づく用語の類似性を説明するマトリックスが得られます。
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
これは、共起の可能性の実際の統計的尺度です。ただし、関係p(termB | termA ) == p(termA | termB)
が成り立たない可能性が高いため、この共起の尺度は MDS を介したクラスタリングにはまったく使用できず、これはほとんどの場合 (しゃれの意図なし) であることに注意してください。
私の提案は、PMC と余弦類似度の両方を試して (上記でわかるように、正規化のみが異なるため、両方を実装するのが速いはずです)、クラスタリング後にどちらが優れているかを確認することです。
ドキュメントのセットに基づいてトピックをクラスタリングするための、より高度な手法がいくつかあります。主成分分析 (PCA) または文書行列という用語の非負行列因数分解も頻繁に使用されます (詳細については、潜在意味分析または LSA を参照してください)。ただし、これはユースケースではやり過ぎかもしれません。これらの手法を実行するのははるかに困難です。PMC と余弦類似度には、実装が非常に簡単であるという絶対的な利点があり (正規化が容易なため、余弦類似度は少し単純です)、間違いが起こりにくいです。