コピペチェックツールの作り方 その1

さて、2018年の目標としてコピペチェックツールとライティングツールの開発を行う、ということで、まずはコピペチェックツールの作り方について考えてみる。
これはシリーズ化するつもり。

コピペチェックツールというと既にネット上でサービスが幾つか存在し、無料で試すことができる。

▼無料でも使える!コピペチェックツール&ソフト目的別9選【2017年版】
https://liskul.com/copy-check-tool-18405

ここで、コピペチェックツールの基本的な考え方を研究してみよう。
コピペチェックツールというのは、ネット上で剽窃したかどうかを調べるためのツールということで、当然のことながらGoogle検索を駆使する必要がある。
普通に考えて全文コピーするバカはいないから、全文をGoogleで検索するというわけには行かない。
やったとしても、改行もあるし、バカ長い検索クエリーとなるのでうまく行かない。

そこで、文章をうまく区切って、小分けにして検索する、という手法をとる。
区切る文章は短すぎてもダメだし、長過ぎてもダメ。適度な文節で区切ってGoogle検索をかける。

これだけ情報が溢れるネット社会だから、パクってなくてもたまたま偶然ヒットする言い回しとか、一節というのはあるし、有名人の言葉の引用、格言、金言の類は当然ヒットする。
しかし、細切れにした文章で検索をかけて、連続してヒットするのならば、それはそのページの文章をコピーした可能性は非常に高くなる。
これがコピペチェックツールの判定の仕組みだ。
この仕組みは複数のサイトからパクっても同じことだ。連続してネットでヒットするのはコピーした可能性は高い、ということになる。

あるいは、コピーはしていなくても、既に誰かが思いつくようなコンテンツだ、ということでSEOとして公開するには適さないことが分かる。
理論的にはネットのコンテンツが雪のように消えない限りは、時間が経つに連れてなんでもかんでもコピペチェックに引っかかることになる。
ライターさんにとっては嫌な時代だよね。

で、まずやることは文章を適切に区切る処理を考えることだ。分かち書きという作業なんだけれど、これがまた日本語特有の問題があって難しい。
簡単なのは、句読点で区切ること。これなら簡単にできる。
コピーする、ということはある法則にのっとってコピーする必要があるわけで、参照する文章も意味が通じるように書かれているのならば、コピーした文章も当然類似することになる。

原文をリライトするコストが掛かるからコピーするのであって、コピーされた文章は類似するのは当然なんだよね。
これが、リライト文章から参考にした原文を探し当てる、となるとAIなんかが必要かもしれないが、「コピペ」を探すという目的であればそこまで求める必要はない。

次に、文章をまとまりで区切りGoogle検索をかけて表示されたページをスクレイピングする。
ここで技術的にネックになるのは、外部サイトにリモートでアクセスする技術と、スクレイピングする技術だ。
Googleは同一IPアドレスからリモートアクセスを頻繁にするとロックが掛かるようになっている。
ロックされずにリモートアクセスできるのは4~5回くらいかもしれない。
そのあとはしばらく時間をおかないとダメなんだよね。
だから、無料のコピペチェックツールは調べる文章の長さが決まっている。

次にスクレイピングする技術だ。検索エンジンが示すのはあくまでもURLであって、そのページの文章の場所ではない。
だから、そのページが分かったら、自力でHTMLを解析して文章を抽出する必要がある。

もう1つ技術的な問題があって、サーバータイムアウトをする前に処理を終わらせることだ。
普通のレンタルサーバーだとサーバータイムアウトが30秒程度に制限されている。無限ループ対策で、30秒以上経つと強制的に処理が中断されるようになっている。
Googleにリモートアクセスして、さらに検索結果のサイト10件程度に連続してアクセスしていくと30秒なんてあっと言う間に過ぎてしまう。
自分でサーバーをホスティングしているならサーバータイムアウトを引き伸ばせばいいだけなんだけれど、作ったツールを販売して一般的なレンタルサーバーでも使えるようにするにはサーバータイムアウトの壁はクリアしなければならないんだよね。

これがクリアできたら、次に文章と文章の類似度を測る必要がある。
これは英語であれば、PHPで類似を測るための=レーベンシュタイン距離を測れる関数があるんだけれど、日本語だと自作するしかない。コピーといっても語尾や単語、半角全角を微妙に変えているだろうから、完全一致ではヒットしない。
類似度を図らないとうまく行かないんだね。

この辺が課題なんだけれど、なんとかやってみよう。

続く。

コメント

記事に戻る

コメントを残す