0

2 つのテキスト ドキュメントがあり、2 つのドキュメント間で一致する単語を取得したいと考えています。単語はどこでも一致できます。たとえば、doc1 の単語 #5 は、doc2 の単語 #3 および単語 #67 と一致できます。そして、doc1 の word#23 は再び doc2 の word#3 と word#67 に一致するので、すべての一致が必要です。また、1 単語の一致とは別に、2 つのドキュメント間で連続する複数 (2 単語、3 単語 ....15 単語など) の単語の一致も同様に取得したいと考えています。Javaでこれにどのようにアプローチすればよいですか? 私は正規表現を見てきましたが、正確なアプローチについてはまだ確信が持てません。

4

2 に答える 2

1

まず、ドキュメントを n 単語 (1 単語、2 単語、3 単語、...、n 単語) の束に分割する必要があります。これらの束は n グラムと呼ばれます。こちらを参照してください。

次に、ドキュメント A から n-gram のセットを作成します。次に、ドキュメント B の各 n-gram について、それがセット内にあるかどうかを確認します。

于 2012-10-03T13:51:46.250 に答える
0

ドキュメントごとに単一の単語のツリーセットを維持し、最初のツリーセットをループして、2 番目のツリーセットとの一致をチェックすることをお勧めします。

複数の単語の部分については、同じトリックを使用して、2 つの単語グループのみを取得します。

word1 word2 word3 yay!

それを取っword1 word2てツリーセットに入れ、次に取っword2 word3て同じことをします。正規表現を使用して句読点を削除できるため、アルゴリズムは次の 3 つのステップで構成される必要があります。

  1. 句読点から文書をきれいにする
  2. 単語と連続する単語のグループの「索引付け」
  3. 比較フェーズ

ポイント1については、たとえばこれらのフレーズが同じであるため、注意してください。

私は食べた、猫は食べなかった、私は食べた

私は猫を食べましたよね?やりました!

于 2012-10-03T13:52:34.923 に答える