完全に一文が一致してなくても長く連続する文字が一致する場合はコピペ文章とみなしていいのではないでしょうか? それから「あーでもない、こーでもない」と文章をイジっているうちに結局、元の文と対してかわらないものができてしまう場合があります。
そこで連続して一定の文字数分一致してしまう場合はコピペ文章と見なします。一見オリジナルにみえて別のサイトからパクってきたフレーズをいれると自分でもコピペコンテンツを作っていることに気づけなくなります。
例えば一カ所でも10文字以上同じ部分があったらコピペ判定できるものを作成してみることにします。
前回はトライグラム(3-gram)を利用しましたが、3文字ではなく10文字にすればいいですね。
今回は割合ではなく一致している部分を抜き出すことを考えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public partial class Form1 : Form { List<string> GetNgram(string str, int n) { int len = str.Length; List<string> trigrams = new List<string>(); for(int i = 0; i < len - n - 1; i++) trigrams.Add(str.Substring(i, n)); return trigrams; } List<string> SimilarRateFromNgram(string oldText, string newText, int n) { List<string> oldNgrams = GetNgram(oldText, n); List<string> newNgrams = GetNgram(newText, n); // newNgrams にあるもので oldNgramsnewTrigramsにあるものを調べる return newNgrams.Intersect(oldNgrams).ToList(); } private void button3_Click(object sender, EventArgs e) { int n = (int)numericUpDown1.Value; List<string> ret = SimilarRateFromNgram(richTextBox1.Text, richTextBox2.Text, n); string str = String.Join("\n", ret.ToArray()); richTextBox3.Text = str; } } |
さて、
元の文章
ウェブ上のコンテンツをそのまま自サイトに掲載すれば無断転載。当然やってはいけません。他のサイトに書かれていることは参考するにとどめて自分で文章を書きましょう。またリライト(書き換えた)つもりだったのに実は気がつかないうちにコピーしていた・・・なんてこともあります。
書き換えた文章①
自分で文章を書きましょう。他のサイトは参考するにとどめましょう。ウェブ上のコンテンツを自サイトにそのまま掲載すれば無断転載です。当然やってはいけません。また実は気がつかないうちにコピーしていた・・・なんてこともあります。リライト(書き換えた)つもりだったのに。
10文字連続でダブっている部分がかなりあります。
書き換えた文章②
文章を自分で書くのは面倒ですよね。だからといってウェブ上に掲載されている文章をそのままパクって自分のサイトに掲載するのは絶対にダメ。著作権法違反で処罰されるかもしれません。ネタになるものがない場合、他のサイトを見て参考するのはいいのですが、文章は自分で考えてかきましょう。きちんとリライトしたつもりでも、文章を編集しているあいだに元の文章と同じになってしまうことがあります。気がつかなかったでは良いわけになりません。最低限、コピペチェックはやっておきましょう。
10文字連続でダブっている部分はありません。7文字連続の部分として「サイトに掲載す」がありますが、これはいいんじゃないのかな。
リライトで文章を作成した場合、10文字連続で一致する部分がないことは確認しておきましょう。それから一致逃れのために漢字をひらがなにおきかえるとか「、」などを挿入してごまかすのは当然ダメです。