2 つのテキスト ドキュメントがあり、2 つのドキュメント間で一致する単語を取得したいと考えています。単語はどこでも一致できます。たとえば、doc1 の単語 #5 は、doc2 の単語 #3 および単語 #67 と一致できます。そして、doc1 の word#23 は再び doc2 の word#3 と word#67 に一致するので、すべての一致が必要です。また、1 単語の一致とは別に、2 つのドキュメント間で連続する複数 (2 単語、3 単語 ....15 単語など) の単語の一致も同様に取得したいと考えています。Javaでこれにどのようにアプローチすればよいですか? 私は正規表現を見てきましたが、正確なアプローチについてはまだ確信が持てません。
質問する
407 次
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については、たとえばこれらのフレーズが同じであるため、注意してください。
私は食べた、猫は食べなかった、私は食べた
私は猫を食べましたよね?やりました!
于 2012-10-03T13:52:34.923 に答える