1

簡単な研究論文マネージャーを書こうと思っています。アイデアは、各論文のメタデータを含むリポジトリを持つことです

paper_id -> [title, authors, journal, comments...]

友人の紙のダンプをインポートする可能性があるといいので、私は紙の paper_id を生成する方法を考えています: 私見は pdf のテキストによって生成され、2 つの異なるコレクションが持っていることを保証する必要があります同じ論文にのみ同じ ID を使用します。現時点では、iText ライブラリを使用して最初のページのテキストを抽出し (可能な注釈を削除します)、テキストから simhash フットプリントを計算します。主な問題は、テキストが少し異なる場合があることです (はい、それは起こります! たとえば、 thisthis )。simhash を使用すると、元のドキュメントとどれだけ似ているかを計算できるため、フットプリントがレポにない場合は、「近い」フットプリントを探してコレクションを反復処理する必要があります。

私はこの方法に納得できません。この種の文書の署名 (短い、数字、または英数字) を生成するためのより良い方法を提案できますか?

更新私はこの考えを持っていました:最初のページを8つ(多かれ少なかれ)重複しない正方形に分割し、すべてのページをカバーし、次に各正方形のテキストを考慮してsimhash署名を生成します。最後に、8x64=512 ビットの署名が得られ、simhash 署名セット間の差の合計が特定のしきい値を下回っている場合、2 つの論文を同じと見なすことができます。

4

1 に答える 1

1

2 つのテキストを入力し、それらの類似度を返す関数が実際にある場合、リポジトリ全体を反復処理する必要はありません。リポジトリにない記事がある場合、ほぼ同じ長さの記事のみを繰り返すことができます。たとえば、1000 文字の記事がある場合、それを 950 ~ 1050 文字の記事と比較します。このためには、範囲を記事にマップするデータ構造が必要であり、範囲のサイズを微調整する必要があります。範囲が大きすぎます - 各範囲内の項目が多すぎます。範囲が小さすぎる - ミスの可能性が高い。

もちろん、これはいくつかのエッジケースでは失敗します。たとえば、2 番目のドキュメントが最初のドキュメントを 2 回コピーペーストしただけの 2 つのドキュメントがある場合、おそらくそれらは等しいと見なされますが、長さが離れすぎているため、それらを比較することさえできません。それに対処する方法もありますが、おそらく「必要ない」でしょう。

于 2012-10-07T17:46:44.233 に答える