私は約20 ASCIIテキストファイルを持っているが、各サイズを持つ未満10^9バイト .AnotherのASCIIテキストファイル(たとえばFOO)が与えられています。プログラムは、FOOの内容と指定された20のファイルを戦略的に一致させ、CLOSESTの一致するファイルの名前を出力することです。 FOOの内容は部分的にしか一致しないかもしれません。
ファイルのサイズが大きすぎるので、私は思ったんだけど:
1.Howを(私はIRについてあまり知らないので)情報検索を使用するように
2.whichデータ構造私が使用する必要がありますそのような情報を保存する
3.それを実装するための最良のアルゴリズムは何でしょうか。
私はあまりにも多くを求めていることを知っているしかし、実際に私はこの問題に立ち往生し、アプローチする方法を見つけることができません。どんな助けもありがたいです。ありがとう!
の方法についてのスキャンすべてのファイルと、各テキストファイルの単語の次元のベクトルを作成し、その後、あなたはdocumetsとの間の角度を計算して選択することができます一番近いもの? –
より簡単な方法はJaccard Index http://en.wikipedia.org/wiki/Jaccard_indexを使用することですが、コサインの類似性と同じ精度を提供しない可能性があります。この手法は正規化された単語数で動作することに注意してください。 – decden
あなたは本当に "最も近い"を定義する必要があります。テストファイルがファイル#1のすべての単語と同じであるが逆の順序の単語(すなわち "クイックレッドキツネ"と "キツネレッドクイックザ")と一致する場合、それはファイル#2に正確に一致する場合よりも "近い"最初の30%を順番にしていますが、後で類似性はほとんどありませんか?大文字小文字は重要ですかホワイトスペース?「最も近い」という定義がなければ、あなたは何を比較するか決定するのに苦労するでしょう。 –