類似ドキュメントを見つけるためのベクトル空間モデルコサインtf-idf


10

100万を超えるドキュメントのコーパスを持っている

特定のドキュメントについて、ベクトル空間モデルのように余弦を使用して類似のドキュメントを検索したい

d1d2/(||d1||||d2||)

このtf-idfのように、より長いドキュメントへのバイアスを防ぐために、すべてのtfは拡張周波数を使用して正規化されています。

tf(t,d)=0.5+0.5f(t,d)max{f(t,d):td}

すべて事前計算済み 分母の値が事前に計算されている ので、特定のd 1に対して100万を超えるスコアが必要d 2 類似性の0.6コサインのしきい値がある ||d||

d1d2

特定の状況でそれを観察できます|の範囲はかなり狭いです | d 2 | | 余弦のための 0.6 の余弦のための同様のためのつの検索で例えば 0.6と| | d 1 | | の7.7631 | | d 2 | | 7.0867から8.8339の範囲 コサイン0.6のしきい値の外側| | d 2 | | 0.7223〜89.3395の範囲||d1||||d2||
||d1||||d2||
||d2||
これは、標準のtfドキュメントの正規化による
ものでしたコサイン0.6の一致になる可能性がない ||d2||

最後に質問:
ギブについてそして、の範囲を決定する方法> = 0.6の余弦| | d 2 | | チャンスがある? どの| | d 2 | | 安全に削除できますか? ||d1||||d2||
||d2||

用語カウント範囲がある場合、d 2の用語の数も知っています。d1d2

実験による
| | d 2 | | < | | d 1 | | / .8 は安全に見えますが、うまくいけば、安全であることが証明されている範囲があります ||d2||>.8||d1||||d2||<||d1||/.8

非常にいくつかの固有の用語、それほど固有ではない用語、および一般的な用語を使用して、いくつかのテストケースを作成しました。案の定、最もユニークな用語を使用して、比較の頻度を増やすことができます。分子(ドット積)が上がり、||比較|| そして、1に非常に近い余弦を取得します。

関連する種類の質問ではありません。
また、tf-idfを使用してドキュメントをグループにグループ化しています。私が販売している顧客ベースは、dupグループの近くに慣れています。そこでは、関連するアプローチを採用して、最小の用語数と見なし、最大3倍の用語数に対して評価しています。したがって、10の用語カウントは10から30を調べます(4-9はすでに10でショットを持っています)。ここで私はそれを別のもので拾ったのを見逃す余裕があります。私は10%完了し、最大の比率は1.8です。

この分析の欠陥を識別してください
AN6U5によって尖ったアウトは、この分析に欠陥があるとして
文書が加重に正規化されている場合、それはもはや余弦である
とマシューが指し示すアウトとしてもd1⋅d2≤d1⋅d1結論づけることができない
私はまだ私のハードバウンドを与えるために何かを期待していますが、このようなものを知っているようだ人はいない私に言っている
私は、質問を変更したくないので、ちょうどこれを無視し
、私はいくつかの分析を行うと、おそらく文書の正規化に別の質問を投稿します
に関してこの質問の目的は、文書を想定して、生のTFに正規化されて
申し訳ありませんが、私が今までマークアップの方程式を作るために使用されるものとちょうど良いではないよ
だから私の表記で
|| || D1 = sqrt(sum(w1 x w1))
d1 dot d2 = sum(w1 X w2)
d1が短いドキュメントであると想定し
ます。達成可能な最高のd1 dot d2はd1 dot d1です
。d1が100ポール20であり
、d2が100ポール20である場合1
正規化された
d1は結婚です1ポール1/5
d2は結婚します1ポール1/5ピーター1/100
明らかに結婚し、ポールは両方のドキュメントで同じidfを持ってい
ます可能な限り最高のd1ドットd2はd1ドットd1 d1へ
の可能な最大一致はd1
cos = d1ドットですd1 / || d1 || || d2 ||
正方形両側
cos X cos =(d1ドットd1)X(d1ドットd1)/((d1ドットd1)X(d2ドットd2))cos X cos =(d1ドットd1)/(d2ドットd2)
正方形を取る両側
cosのルート= || d1 || / || d2 ||
|| d2 || cosに囲まれていませんか?
|| d2 ||だけを使用する場合 > = cos || d1 || そして|| d2 || <= || d1 || / cos必要な計算速度を得る


c o s = |によって決定される範囲で終了する引数 | d 1 | |「達成できる最高のd1ドットd2はd1ドットd1」が正しくないため、機能しません。しばらくD1D2cos=||d1||||d2||、その場合ではないD1D2D1D1。この特定のクラスのベクトルの場合、それは十分な近似であるほど十分に機能する可能性がありますが、常にそうであることを確立するのはかなり困難です。d1d2||d1|| ||d2||d1d1||d1|| ||d1||d1d2d1d1
Matthew Graves

@MatthewGraves私はあなたに同意すると思います。私の専門知識ではありませんが、それでもハッキングしています。
パパラッツォ2015年

回答:


4

残念ながら、数学は単純化して、ベクトルの長さに基づいてベクトルのコサイン類似性比較を制限することを厳密に正当化できないことを示しています。

重要な点は、コサイン類似度メトリックが長さに基づいて正規化されるため、単位ベクトルのみが考慮されることです。これが必ずしもあなたが望んだ答えではないことは知っていますが、数学はコサイン類似度メトリックがベクトル長に依存しないことを明確に示しています。

数学をさらに詳しく見てみましょう:

コサイン類似度メトリックを適用していて、そのメトリックが0.6より大きいことを要求しています。

similarity=cos(θ)=AB||A||||B||0.6

ただし、下部のスカラー長は、上のクロス積(分布特性)に分散できます。

AB||A||||B||=A||A||B||B||=A^B^

A^B^AB

そのため:

similarity=cos(θ)=d1d2||d1||||d2||=d1^d2^0.6

ベクトルの向きのみに依存し、大きさ(長さ)には依存しません。

これをあなたがしていることと調和させる:

0.6||d2||>.8||d1||||d2||<||d1||/.8

ユークリッド距離も考慮することで、距離メトリックで行ってきたことを調整できる可能性があります。コサイン類似度は2つのベクトル間の角度に基づいて-1と1の間の値のみを返すのに対し、ユークリッド距離は2つのベクトルの長さに依存する値を返します。ある意味では、ユークリッド距離の側面と余弦の類似性を組み合わせています。

これは、ユークリッド距離のアスペクトを組み合わせてグループ化キャノピーを作成するという意味で、相対長が互いの25%以内であることを要求するのはかなり適切です。最終的な決定要因。

1 / .8 = 1.25なので、d2> =。8d1はd2 <= d1 / .8よりも厳しい制限であることに注意してください。これは対称なので、d2> =。75d1とd2 <= 1.25d1を使用することをお勧めします。

お役に立てれば!


彼が使用しているtf正規化スキームのため、ベクトルの長さは主に共有されたidfの重みに由来するという事実を利用しているのではないと思います。ドキュメントのノルムが非常に低い場合、それは希少な単語が含まれていない(または非常に低い分数頻度で含まれている)ことを意味します。つまり、希少な単語のみを含むドキュメントと同様に除外される可能性があります。しかし、この制約が一般にどれほど厳しいかは、私には不明瞭に思われます。観察された経験的限界と比較して、理論的限界が非常に広い場合はおそらくそうです。
Matthew Graves

@マシュー・グレイブス、私が言っているのは、コサインの類似性はベクトルの長さに依存しないということです。彼は、ベクトルの長さの違いが結果の余弦の類似性にどのように影響するかを尋ねていますが、答えは次のとおりです。
AN6U5

1
経験的な相関関係は無視できません。コーパスの無作為性を相関させる方法がありますが、統計的である場合に限ります。このサイトには、賛成票を登録するのに十分な担当者がいません。
パパラッツォ

ここで私は同意しません。長さに基づいて正規化しません。最も一般的な1つの用語で正規化されます。長いドキュメントは希釈することしかできません。私がサポートできる範囲を取得するために、正規化の実行方法を調整したいと思っています。
パパラッツォ

質問を修正していただきありがとうございます。達成しようとしていることをより明確にします。これは厳密に定義されているため、変更された正規化により、実際にコサイン類似性はなくなります。これを説明するために、いくつかの追加編集を提案します。気をつけて頑張ってください。
AN6U5

3

||di||||di||||di||

代数を処理するために、さらにいくつかの用語を紹介します(そして、いくつかをより短い用語に名前変更します)。

d1[t1,t2,...][w1,w2,...][d1,d2,...]0.5ti10wi6D1=||d1||

d1xd1+xX

X=iwi2(ti+xi)2

0.6D1Xiwi2ti(ti+xi)

0.5ti+xi1

xxi=0 idi+xi=1

xX2XX>0XXPP

00.36D12iwi2(ti+xi)2i,jwi4titj(ti+xi)(tj+xj)

0xTPx+qTx+rPi,j=0.36D12wi2titji=jwi2titj

Pd1X

XwxX


|| d ||に同意しません とは珍しい手段として役立つようです。正規化されています。「メアリーは少し子羊を持っていました」はより小さくなります|| 「マリーは白い小さな子羊を持っていました」より。そして、「oddxxA oddxxB oddxxC」はより小さくなります|| 「oddxxA oddxxB oddxxC oddxxD」とほぼ同じ比率で。そして、これらの2つの比較は同様のcosになります。
パパラッツォ

@フリスビー、あなたはその比較について確信していますか?idfsが「a」の場合は0、「had」と「Mary」の場合は0.5、「little」と「white」の場合は1、「lamb」の場合は2とすると、「Maryは小さな子羊」の2.4と2.55を計算します。 「メアリーは白い子羊を持っていた」のに対して、「メアリーは小さな子羊を持っていた」の1.83。つまり、ノルムを下げる唯一の方法は、新しい単語を追加するのではなく、最も頻度の高い用語の頻度を増やすことです。または、同じ式を使用していませんか?
Matthew Graves

文書を生の頻度ではなく加重(IDF付き)で正規化したと思っていました。それは状況を変えるでしょう。加重で正規化するほうが理にかなっています。ドキュメントを大幅に変更する|| 「a」を最も一般的な用語で混乱させることによって。
パパラッツォ

dt=wt(0.5+0.5wtf(t,d)max{wtf(t,d):td})wt=logN|{dD:td}|ddid

0

回答を投稿しますが、明らかに他の人にボーナスを与えます

ドキュメントtfが正規化されている場合、最大分子があると思います

d1⋅d2/(|| d1 |||| d2 ||)

d1は(以下の用語を用いてDを取るだけOR)同じ以下の用語を持っていると仮定
可能な最大の正規化TFが1である
最大の可能な分子の和(TF1、I * IDF、I * 1 * IDF、I)だから

|| d2 || = sum(tf1、i * idf、i * 1 * idf、i)/ || d1 || / .6

最低限に関しては私はそれに取り組んでいますが、明らかに最低限があります。
あなたが一致するつもりなら、あなたは|| d ||を持っているでしょう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.