1

cでvsm検索のコードを書こうとしています。そのため、ドキュメントのコレクションを使用して、各スロットが df とともに単語を保持し、各スロットがドキュメントの名前を保持するリストへのポインターを保持するハッシュテーブル (逆インデックス) を構築しました (単語が少なくとも 1 回出現する) ) を tf (このドキュメントに何回登場したか) とともに。ユーザーは質問を書き(qqq.dddの重み付けと比較方法も選択しますが、それは私の質問には関係ありません)、それに関連するドキュメントを(最も関連性の高いものから最も関連性の低いものまで)印刷する必要があります。したがって、私が見た例は、たとえばドキュメントが 1 つしかないステップを示しています。1.000.000 ドキュメントのコレクションがあり (N=1.000.000)、比較したい

1 document: car insurance auto insurance
with the queston: best car insurance

したがって、この例では、次のような配列を作成します。

Term     | Query |   Document
         |  tf   |      tf
auto     |  0    |      1
best     |  1    |      0 
car      |  1    |      1
insurance|  1    |      2

この例では、各用語の df も示されているため、これらの手がかりと重み付けと比較の方法を使用すると、4 つの座標 (配列内の各単語に対して 1 つ) を見つけることでそれらをベクトルに変換して簡単に比較できます。したがって、この例では 1.000.000 のドキュメントがあり、クエリとドキュメントの関連性を確認するために、クエリとドキュメントに含まれる単語をそれぞれ 1 回 (4 単語) 使用します。したがって、4 つの座標を見つけて比較する必要があります。私がやろうとしているのは、それぞれが 3 から 50 の単語を持つ 8000 ほどのドキュメントです。では、クエリと各ドキュメントの関連性を比較するにはどうすればよいでしょうか? 私が持っている場合

a query: ping pong 
document 1: this is ping kong
document 2: i am ping tongue

query-document1 を比較するには、次の単語を使用します: this is ping kong pong (つまり 5 座標) および query-document2 を比較するには、次の単語を使用します:同じ比較方法で最もスコアが高いものが最も関連性が高いですか? または、両方の単語を使用する必要がありますか: これはピンコン アム タン コン (7 座標) ですか? だから私の質問は、これらすべての 8000 のドキュメントを質問と比較する正しい方法はどれですか? 私の質問を理解しやすくすることに成功することを願っています。お時間をいただきありがとうございます!

4

0 に答える 0