一般に、離散変数のコレクションを比較する、単語のバッグとドキュメント(カウント)ベクトルの4つの最も一般的な類似性メトリックについて説明することで、これに対処します。
一般にコサイン類似度が最も頻繁に使用されますが、常に最初に測定し、他の類似度が問題に対してより良い結果を生み出さないことを確認して、より複雑な測定のいくつかを使用できるかどうかを評価します。Jaccardのセットの類似性を除いて、これらのメジャーを使用する前に、ドキュメントカウント/ベクトルに何らかの形式のTF-IDF再重み付け(ff)を適用することができます(実際に必要な場合があります)。TF重み付け用語はOkapi-BM25である可能性が あり、IDF用語はコーパスエントロピーで置き換えられますが、結局、手元にある元の質問(BoW類似度)とはほとんど関係がありません。
最初の指標であるJaccardの類似性には、重大なマイナス面があります。これは、ドキュメント間の長さの違いの影響が最も大きく、単語の出現頻度も考慮されていません。コサイン類似性とχ2- ベクトルを単位長に正規化することで(つまり、TF-IDFの再重み付けに加えて)ベクトルを調整できる(またはそうすべき)距離。しかし、それでも、明確な理由により、短いドキュメントは長いドキュメントと比較してスパースカウントが多くなります(つまり、ベクトルのゼロが多くなります)。(そのスパース差の周りに一つの方法は、可能性だけ動的カットオフ値を使用して、いくつかの最小カットオフ上記の単語を含むようにすることを文書の長さが増加します。)
メジャーを説明する前に、この説明は対称メジャーのみに焦点を当てていることに言及する必要がありますが、非対称メジャーも存在します(特に、KLダイバージェンス)。
これは最も単純なメトリックです。両方のドキュメント(ツイート、文など)のすべての単語のセットを収集します。 あ そして B、2つのセットに共通する単語の割合を測定します。
JA,B=|A∩B||A∪B|
このメジャーは、文字(または単語)のセットを収集することにより、単語(およびドキュメント)にも機能します。 n-グラム、場所 nただし、Jaccardの類似性には限界があることに注意してください。のシーケンスA されていた (x,y,z,x,y,z,x,y,z) との B ただだった (x,y,z)、それでもJaccardの類似性は完璧です(つまり、 1.0)、今説明したn-gramの「トリック」を使用しない限り。
最後に、ダイス係数はD はJaccard類似性のやや複雑なバージョンですが、単語数も考慮されていません。 J なので: D=2J1+J。
コサインの類似性は、おそらく最も一般的なメトリックです。両方のドキュメント(ツイート、文章など)からすべての単語数の順序付けられたセットを収集します。A そして B、つまり、事実上、2つの「ドキュメント ベクトル」a⃗ そして b⃗ 、2つのベクトル間のコサイン角度を測定します。
αA,B=a⃗ ⋅b⃗ |a⃗ ||b⃗ |=∑aibi∑a2i−−−−√∑b2i−−−−√
これで、ベクトルを単位ベクトルに正規化できるため(つまり、 |z⃗ |一部)この計算を行う前に、実際には2つのベクトル間の内積を計算するだけで類似性を計算できます。これは、すべてのペアの積の合計にすぎません。最近のCPUでは、ドット積を特に効率的に計算できます。
各単語のカウントを使用する代わりに、各ドキュメントの単語をそれらのカウントで順序付け、それにより、いずれかのドキュメントの各単語にランクを割り当てます。A そして B。そのため、ドキュメントベクトルを長さ正規化する必要がなくなります。ウィキペディアの命名法を使用して、ランク生成関数を呼び出しましょう(与えられた単語のランクを見つけます)i (word、count)タプルリストから X、またはドキュメントベクトル x⃗ ) rg。第二に、その距離を定義しましょうd 同じ言葉の間 i 2つのドキュメントの中で di=rg(A,i)−rg(B,i)。あれは、d2つのランクの差。等しい場合はゼロ、それ以外の場合はゼロ以外。これにより、係数は整数から次のように計算できます。
ρA,B=1−6−∑d2in(n2−1)
この定式化には強い要件があることに注意してください。すべてのランクは異なる必要があるため、同順位の場合(2つの単語が同じドキュメントで同じ数である場合)でも、異なるランクを割り当てる必要があります。その場合は、英数字の順序を使用することをお勧めします。また、1つのドキュメントにのみ出現する単語については、他のドキュメントの最後の位置に配置します(ここでも同じ英数字順を使用します)。この類似度を計算する前にTF-IDFでカウントを再重み付けすることで、カウントがゼロでない単語間のつながりをはるかに少なくできることに注意してください。
タイを維持したい場合(つまり、すべてのランクを「人工的に」区別したくない場合)、または(単語、カウント)タプルの一部を削除するためにカットオフを使用している場合、または最上位のみを選択している場合 n 最も頻度の高い単語ですが、標準的な式を使用する必要があります ρ (そして定義する rgドキュメントのすべての英数字順に並べられた(単語、カウント)タプルの完全なランクベクトルを生成する関数としてX内の文書ベクトルx⃗ ):
ρA,B=cov(rg(a⃗ ),rg(b⃗ ))σrgAσrgB
どこ cov2つのドキュメントのランク間の共分散です。σrgX (カットオフの可能性がある)ランクの標準偏差 rg (ネクタイ付き)資料の X。
簡単に言うと、このアプローチは、Jaccardの類似性とCosineの類似性の中間にあると見ることができます。特に、ドキュメント全体の単語の頻度を考慮しながら、ドキュメント間の単語数の分布の違いに対して(もう少し-次の指標を参照)堅牢です。ただし、ほとんどの作品では、コサイン類似度はスピアマンのランク補正よりも優れているように見えますが、これをテストする必要があります。TF-IDFとスピアマンで良い結果が得られる可能性があります。あなたのドキュメントのベクトルの。
これまでのところ、すべての類似性測定は単語頻度の均一性を前提としています。つまり、コレクション(「コーパス」)のすべてのドキュメント間で単語数の分散が等しいと想定しています。ケース。つまり、以前、Kilgarriff(1997)は、χ2上記の測定値よりも単語数を比較するのに適しています。ただし、今日のコーパス比較(機能選択を行うためなど)のために現在の調査を行っている場合は、おそらく、代わりにブートストラップテストを使用する必要があります。χ2。
キルガリフ χ2 比較はドキュメントにも同様に適用できます(2つの「クラス」、つまり2つのドキュメントしかないため、 d.f.=1)、およびその堅牢性により、これまでに示した類似性の測定よりも望ましい場合があります。このアプローチでは距離が得られるため、この値を類似度に変換するには、その逆数をとる必要があります(つまり、この距離が大きいほど、ドキュメントの類似度は小さくなります)。ドキュメント内のすべての単語の数を定義しましょうX なので nX=∑xi 両方のドキュメントの合計 A そして B なので n=nA+nB。次に、χ22つのドキュメント(ドキュメントベクトル)の統計ベースの距離は、ピアソンの基本公式から導出できます。∑(Oi−Ei)2Ei なので:
χ2A,B=n[∑a2inA(ai+bi)+∑b2inB(ai+bi)]−n
ただし、この計算は計算にはるかにコストがかかります。おそらくそれ自体で、ほとんどのアプローチがコサイン類似性に固執する理由を説明し、さらに、分類/取得/クラスタリングの結果がこの後者の距離測定から得られないことを確認できる場合はなおさらです。また、リンク先の論文で示されているように、この距離測定は、TF-IDFの再重み付けとコサインの類似性を打ち負かすようには見えません。ただし、リンクされた論文では、「生の」用語の頻度カウントを使用してこの距離測定値を計算し、それをTF-IDF再重み付けコサイン類似度と比較しています。すでに説明したように、通常、まずドキュメントのベクトルを単語数(つまり、長さ)で正規化して、良好な結果を得る、つまり変換することをお勧めします。X/nX 最初に(そして、その前にTF-IDFドキュメントベクトルの再重み付けを適用することもできます)。この場合、上記の式は(少し)単純化されます。
χ2A,B=2[∑a2iai+bi+∑b2iai+bi]−2