ある文章を任意に作ってほしいというときに、それが本当にその人自身が作成したものなのかを確認する作業が生じました。
簡単に言えば、「作成した文章がコピーされていないかどうかをチェック」するツールです。
イメージとしてはこのツールを使えば、Excelに入力されている文字(文章)を自動的にチェックして、
コピーしている文字があれば、それを強調表示して色を変えるものでしたが、「検証範囲はカバーできた」という目的は達成できたものの、結果としては100%発見は不可能でした。
当初から難しいと思っていた点ですが、この部分のチェック方法が非常に難しいのです。簡単な例で言えば、コピーしようとしている人間がバレないようにと単語と単語の間に句読点を挟んだり、全角と半角を切り替えていたり、ほんの一部の単語を前後入れ替えるパターンです。
実際問題としてこれらの対応は幅が広すぎて対応しきれません。ここがExcel VBAでの構築で困難な部分でした。
上記の困難な部分に対しては、ある程度の処理を間に入れることで回避できました。そもそも文章全体を検索するわけではなく、文章を適当に区切って細切れの状態にしてチェックをかけます。
ちなみに「似たような文章を探す」と言う意味(処理)では、形態素解析的な処理が必要になると思いますが、今回は「同じ文章」を探すという点で相対的に難易度が低いと思います。
いずれにしても、ここで意識したのは文章(センテンス)の中で一致した文字数をパーセンテージ化にします。こうすることで1つの文章で何文字一致しているかで数値化できます。
そしてこの数値の高低を元に
・コピーしている
・コピーしているかもしれない
・コピーしている可能性なし
などのように判断できます。
実際にはもう少し高い精度の処理を組み込んでで行いましたが、基本ロジックとしてはこのような形で作りました。
冒頭にもお話しした通り、今回のツールの紹介はなじみがないようなツールだと思いますが、Excel(多分Accessも)VBA ではこのようなことができるということで紹介しました。