Excel VBA > ツール・システム紹介 > 作成した文章がコピーされていないかチェックするExcel VBA(マクロ)の感想
このエントリーをはてなブックマークに追加

作成した文章がコピーされていないかチェックするExcel VBA(マクロ)の感想

文章のコピーがされていないかをチェックするマクロ

Excel VBAでは実に色々なことができますが、これもその一例だと思います。
Excelライクな使い方とは言えないかもしれませんが、APIを使わず標準に持っているVBA機能と一部参照設定だけで作成しており、それなりに強力なツールになります。

文章のコピーをチェックするとは

ある文章を任意に作ってほしいというときに、それが本当にその人自身が作成したものなのかを確認する作業が生じました。
簡単に言えば、「作成した文章がコピーされていないかどうかをチェック」するツールです。
イメージとしてはこのツールを使えば、Excelに入力されている文字(文章)を自動的にチェックして、
コピーしている文字があれば、それを強調表示して色を変えるものでしたが、「検証範囲はカバーできた」という目的は達成できたものの、結果としては100%発見は不可能でした。

文章コピーチェックツール作成時の感想

今回想定していたのは主に2種類です。
作業のお題目として、とある文献(テキスト文字ベース)を見ての感想文作成だったので、引用を含めその文献のコピーをしていないかどうかをチェックするのものと、サイトからの引用がないかチェックするものです。
「探し元」がテキストベースのファイルなのか、Webサイトなのかと言う違いです。
結論から言うと、どちらも面倒です。特にWebサイトはとある検索エンジンからやろうとするとSPAM扱いされることがあるようで、いちいち該当するサイトを開いてチェックしないといけない為、ここの自動化も手間取りました。

チェック達成が困難な箇所

当初から難しいと思っていた点ですが、この部分のチェック方法が非常に難しいのです。簡単な例で言えば、コピーしようとしている人間がバレないようにと単語と単語の間に句読点を挟んだり、全角と半角を切り替えていたり、ほんの一部の単語を前後入れ替えるパターンです。
実際問題としてこれらの対応は幅が広すぎて対応しきれません。ここがExcel VBAでの構築で困難な部分でした。

定量化させることである程度回避

上記の困難な部分に対しては、ある程度の処理を間に入れることで回避できました。そもそも文章全体を検索するわけではなく、文章を適当に区切って細切れの状態にしてチェックをかけます。
ちなみに「似たような文章を探す」と言う意味(処理)では、形態素解析的な処理が必要になると思いますが、今回は「同じ文章」を探すという点で相対的に難易度が低いと思います。
いずれにしても、ここで意識したのは文章(センテンス)の中で一致した文字数をパーセンテージ化にします。こうすることで1つの文章で何文字一致しているかで数値化できます。
そしてこの数値の高低を元に
・コピーしている
・コピーしているかもしれない
・コピーしている可能性なし
などのように判断できます。
実際にはもう少し高い精度の処理を組み込んでで行いましたが、基本ロジックとしてはこのような形で作りました。

Excel VBAでこんなこともできる例として

冒頭にもお話しした通り、今回のツールの紹介はなじみがないようなツールだと思いますが、Excel(多分Accessも)VBA ではこのようなことができるということで紹介しました。

カテゴリ:ツール・システム紹介