|
2010/11/29(Mon) 17:46:05 編集(投稿者)
既にこの手の差分を表示してくれるツールは色々ありますが、 やっている事は両方のテキストをひたすら比べて違いを検出しているだけです。 但し、言われているような事を人が文章を見て判断するのと同じレベルで 行なうのは結構骨になります。
ご自分で書かれている文章を例に考えて見てください。 ああ、プログラムで処理するイメージで考えて見てくださいね。 一文字ずつ比較して行くと考えて違う部分を検出しました。 では、何処までは違うのかを探す必要がありますね。 そうやって考えて行くと一つの違いの検出する為に実際には 先の方まで見て行く必要がある事に気がつくと思います。 短いテキストなら比較的短時間で検索できますが、 文章が長くなってくると違いを見つける度に文章の最後まで先読みして 状況判断をすると言う事を繰り返すと時間が掛かり過ぎてしまいます。 特に同じようなフレーズが繰り返し出てくるようなケースでは、 途中で見つかったからといって止められないケースも有ったりするので より意図にあった判断をするには結局最後まで見る必要があったりします。 スピードを重視すると毎回それはやってられないので結局ある程度までで 打ち切るわけですが、そうすると判断がうまく行かないケースが出てきます。 まあ、うまく行かないケースに関してはレアケースとしてあきらめると言う 選択肢も有りますけれど。
と言うわけで何か関数を一発呼べば何とかなるというような物では無いので 自分でゴリゴリプログラムを書くしか無いのではないかと思います。 この手の文書比較のアルゴリズムも調べれば出てくるかもしれませんが、 私は自分でゴリゴリ書いてある程度の結果までであきらめました。 今はおとなしくWinMergeというプログラムを使っています。
あまり参考になってませんが、 結構泥臭い処理をしないと期待した結果を出すのは難しいと思います。
ちなみにゴリゴリロジックを書くのであれば、 VBでもVC++でもVC#でも実現する事は可能だと思います。
|