3

古い問題用紙から問題のデータバンクを作成するアプリに取り組んでいます。挿入された同様の質問をリンクする表を維持したかったのです。(私が念頭に置いていたテーブルは、修正済みの事前注文トラバーサル ツリーでした)。

私が持っている要件は次のとおりです。

  1. 数字が変わった単語の問題は、一緒にリンクする必要があります
  2. 固有名詞・固有名詞が異なる単語問題は、相互にリンクする必要があります。
  3. XYZ、ABC、PQR、MNO は同等です (例: 三角形の命名法)
  4. 句読点や接続詞、「小さな言葉」は無視してください。
  5. タグ!各質問に件名のタグを付けています。数学の問題が歴史の問題に似ている可能性はまれです。しかし、化学の熱力学の問題は、物理学の熱力学の問題に似ている可能性があります。

物事のアルゴリズム側でどのように進めるかについてのアイデアは非常に高く評価されます.

また、数学表記を含む画像も扱います。すべての画像の 'ALT' 属性に LaTeX が含まれていることを確認して、このアルゴリズムで処理しすぎないようにする必要がありますか、それとももっと良い方法がありますか?

4

2 に答える 2

2

異なると予想される構文パターンの長いリストを取り除いた後、2 つの質問が同じ文構造を持っている場合、類似していると見なしたいようです。そのため、この問題は、コーパス内の重複に近いドキュメントを検出する問題に似ています。

これを行う 1 つの方法は、「simhashing」と呼ばれる手法です。1 つは (前処理された) ドキュメントを取得し、simhash フィンガープリントを計算します。典型的なハッシュのように、フィンガープリントはサイズが固定されており、意味不明なバイナリのように見えます。 典型的なハッシュとは異なり、テキストが類似しているドキュメントは類似したフィンガープリントも持ちます。フィンガープリントが異なる可能性がある最大 (ハミング) 距離を選択することで、「類似」と見なすドキュメント (質問) のクラスターを定義できます。

新しい質問をインデックス化するプロセスは、次のようになります。

  1. 質問文を正規化します。これは標準的な情報検索タスクであり、人によって意味が少し異なりますが、空白を折りたたむ、すべてを小文字にする、句読点を削除するなどの変換は一般的です。また、すべての数字または適切な名前のホワイト リストをプレース ホルダー ("NUMBER"、"NAME" など) にすることもできます。
  2. 結果のテキストを simhash 実装にフィードして、フィンガープリントを取得します。
  3. コーパスを検索して、新しいフィンガープリントの十分近くにあるフィンガープリントを探します。これは実際には、効率的に行うと考えるよりもトリッキーです。 Google は合理的なアプローチを思いつきました。これは、いくつかの人工的な指紋を追加したソートされた指紋のテーブルに要約されます。
  4. 挿入された質問が類似していると見なされるべき質問を見つけたら、重複する質問を自由に破棄し、それに固執して簿記などを行います.

このは、一般的な情報検索に関する優れた入門書です。これがシムハッシュ紙です。これは、simhash を計算するための簡単なプログラムのマンページです。アルゴリズムを自分で実装したくない場合は、これが良い出発点になるかもしれません。

于 2012-07-20T07:18:56.387 に答える
2

特徴抽出を行い、これを読む必要があります。

データマイニングの鍵は前処理です。ハードディスクをそこに放り込んで何か有用なものが見つかると期待することはできませんが、データを適切に前処理して検索を指示する必要があります。これで作業の 90% を終えることができます。特徴抽出についてよく読んでください。

于 2012-07-20T06:41:55.400 に答える