38

TF-IDFコサイン類似性についての次のコメントに混乱しています。

私は両方を読んでいて、ウィキのコサイン類似性の下でこの文を見つけました。「情報検索の場合、2つのドキュメントのコサイン類似性は0から1の範囲になります。これは、用語の頻度(tf-idfの重み)が負。2つの項の頻度ベクトル間の角度は90を超えることはできません。」

今、私は疑問に思っています....彼らは2つの異なるものではありませんか?

tf-idfはすでにコサイン類似性の中にありますか?もしそうなら、一体何なのか-私は内側の内積とユークリッドの長さしか見ることができません。

tf-idfは、テキストでコサイン類似性を実行する前にできることだと思いました。私は何か見落としてますか?

4

6 に答える 6

42

Tf-idfは、2つの実数値ベクトルを取得するためにテキストに適用する変換です。次に、ドット積を取り、それをノルムの積で割ることにより、ベクトルの任意のペアの余弦類似度を取得できます。これにより、ベクトル間の角度の正弦が得られます。

d 2qがtf-idfベクトルの場合、

ここに画像の説明を入力してください

ここで、θはベクトル間の角度です。θの範囲は0〜90度であるため、cosθの範囲は1〜0です。tf-idfベクトルは負ではないため、θの範囲は0〜90度のみです

tf-idfとコサイン類似度/ベクトル空間モデルの間に特に深い関係はありません。tf-idfは、ドキュメント用語の行列で非常にうまく機能します。ただし、そのドメイン外での使用があり、原則として、VSMで別の変換を置き換えることができます。

ウィキペディアから取得した式、したがってd 2。

于 2011-06-06T17:48:20.283 に答える
42

TF-IDFは、テキスト内のトークンの重要性を測定するための単なる方法です。これは、ドキュメントを数値のリスト(コサインを取得する角度の1つのエッジを提供するベクトルという用語)に変換するための非常に一般的な方法です。

コサイン類似度を計算するには、2つのドキュメントベクトルが必要です。ベクトルは、インデックスを使用して各一意の用語を表します。そのインデックスの値は、その用語がドキュメントおよび一般的なドキュメントの類似性の一般的な概念にとってどれほど重要であるかを示す尺度です。

ドキュメント内で各用語が発生した回数(T erm F requency)を単純にカウントし、その整数の結果をベクトルの用語スコアに使用できますが、結果はあまり良くありません。非常に一般的な用語(「is」、「and」、「the」など)を使用すると、多くのドキュメントが互いに類似しているように見えます。(これらの特定の例はストップワードリストを使用して処理できますが、ストップワードと見なされるほど一般的ではない他の一般的な用語も同じ種類の問題を引き起こします。Stackoverflowでは、「質問」という単語がこのカテゴリに分類される場合があります。料理のレシピを分析していたとしたら、おそらく「卵」という言葉で問題が発生するでしょう。)

TF - IDFは、各用語が一般的に発生する頻度(ドキュメントFの頻度)を考慮して、生の用語の頻度を調整します。I nverse D ocument F requencyは通常、ドキュメント数をその用語が出現するドキュメント数で割ったログです(ウィキペディアの画像)。

IDF、ウィキペディアへのクレジット

「ログ」は、長期的にはうまくいくのに役立つマイナーなニュアンスと考えてください。引数が大きくなると大きくなるため、用語がまれな場合は、IDFが高くなります(多くのドキュメントをごく少数のドキュメントで割ったもの)。 、用語が一般的である場合、IDFは低くなります(多くのドキュメントを多くのドキュメントで割った値〜= 1)。

100個のレシピがあり、1つを除いてすべて卵が必要だとします。これで、最初のドキュメントに1回、2番目のドキュメントに2回、3番目のドキュメントに1回、すべて「egg」という単語を含む3つのドキュメントができました。各ドキュメントの「egg」の頻度という用語は1または2であり、ドキュメントの頻度は99です(または、新しいドキュメントを数える場合は、おそらく102です。99を使い続けましょう)。

'egg'のTF-IDFは次のとおりです。

1 * log (100/99) = 0.01    # document 1
2 * log (100/99) = 0.02    # document 2
1 * log (100/99) = 0.01    # document 3

これらはすべてかなり小さい数です。対照的に、100のレシピコーパスのうち9つにのみ出現する別の単語「ルッコラ」を見てみましょう。これは、最初のドキュメントで2回、2番目のドキュメントで3回発生し、3番目のドキュメントでは発生しません。

'arugula'のTF-IDFは次のとおりです。

1 * log (100/9) = 2.40  # document 1
2 * log (100/9) = 4.81  # document 2
0 * log (100/9) = 0     # document 3

「ルッコラ」は少なくとも「卵」と比較して、ドキュメント2にとって非常に重要です。卵が何回発生するかは誰が気にしますか?すべてに卵が含まれています!これらの用語ベクトルは、単純なカウントよりもはるかに有益であり、単純な用語カウントが使用された場合よりも、ドキュメント1と2が(ドキュメント3に関して)非常に接近する結果になります。この場合、おそらく同じ結果が発生しますが(ここでは、2つの用語しかありません)、違いは小さくなります。

ここでの持ち帰りは、TF-IDFがドキュメント内の用語のより有用な測定値を生成するため、実際に一般的な用語(ストップワード、「卵」)に焦点を当てず、重要な用語(「ルッコラ」)を見失うことです。 )。

于 2013-10-26T22:05:46.497 に答える
7

サイン類似性の完全な数学的手順は、これらのチュートリアルで説明されています

2つのドキュメント間の余弦類似度を計算する場合、最初のステップは2つのドキュメントのtf-idfベクトルを計算することです。次に、これら2つのベクトルの内積を求めます。それらのチュートリアルはあなたを助けます:)

于 2014-12-03T05:41:59.657 に答える
-1

tf / idfの重み付けは、計算中に失敗し、コードでNaNエラーを生成する場合があります。これを読むことは非常に重要です: http ://www.p-value.info/2013/02/when-tfidf-and-cosine-similarity-fail.html

于 2013-06-07T22:43:18.160 に答える
-1

Tf-idfは、tf(用語の頻度)に基づいてドキュメントからベクトルを検索するために使用されます。これは、ドキュメント内で用語が出現する回数を検出するために使用され、逆のドキュメントの頻度は、用語が出現する回数の測定値を提供します。コレクション全体で。

次に、ドキュメント間の余弦の類似性を見つけることができます。

于 2016-06-20T11:29:51.553 に答える
-1

TFIDFは逆ドキュメント頻度マトリックスであり、ドキュメントマトリックスに対してコサイン類似性を見つけると、同様のリストが返されます。

于 2020-11-13T19:00:23.573 に答える