如果这不是一个面向编程的问题,请原谅我。
假设我们有两句话
[1] =这是一个测试思路 [2] =这是一个实验性的想法
如果我混淆了[1]
[1] = a这个想法测试是
这会算作抄袭吗?我必须采用什么样的逻辑来检测抄袭。 我不是在制作一个复杂的抄袭服务,而是一个相当简单的服务,可以捕捉到明显的抄袭。
我的逻辑有点像这样
<?php
$str1= "This is a test idea.";
$str2= "This is an experimental idea.";
echo "$str1<br>$str2<br>";
$str1Array = explode(" ",$str1);
$str2Array = explode(" ",$str2);
if(count($str1Array) > count($str2Array))
$max=count($str1Array);
else
$max=count($str2Array);
$word_seq = array();
$word_seq_history = array();
$c=0;
$plag_count=0;
for ($i = 0; $i < $max; $i++) {
$lev = levenshtein($str1Array[$i], $str2Array[$i]); // check for an exact match
if ($lev == 0) {
$c+=1;// (exact match)
//echo "<br>$c";
$word = $str1Array[$i];
array_push($word_seq,$word);
}
else
{
if($lev != 0){
if($c>=2)
$plag_count+= count($word_seq);
$current_seq = implode(" ", $word_seq);
array_push($word_seq_history,$current_seq);
echo $current_seq;
$c=0;
$word_seq= array();
}
}
}
echo "plag_count:";
echo $plag_count;
echo "max:";
echo $max;
echo "<br>" ;
echo ($plag_count/$max)*100;
?>
输出:
字符串1:“这是一个测试想法。”
字符串2:“这是一个实验性的想法。”
Words_Same:2 max:5
抄袭:40%
我需要改变它还是它的方式很好?
答案 0 :(得分:1)
我会以一种非常基本的方式检测抄袭,首先要校准我的系统:即首先与你确定没有感染的文件进行大量的比较
1)将一堆文件相互比较,用你的函数检测抄袭率。找出最常用的词(让我们说你的速率降到XX%,试验和错误在这里),把这个词放在你的数据库中,并给它们一个权重为0.这样做再次没有这个词直到(小于XX%)(使用正则表达式,你可以过滤这些单词),并给它们权重为1.依此类推......直到你的剽窃率几乎为零。
2)按总和计算'新'百分比(数据中出现在文本中的单词的重量)/(所有单词的总重量)(并给出数据库中尚未出现的单词)权重10)=你的比率
3)用放置的东西测试它,如果不行,改变一些参数(重量)
答案 1 :(得分:0)
我认为这种方法,如果用于检查较长的段落,将会显示出高水平的相关性,因为常见的词汇,特别是文章,介词,“be”动词和其他常见/过度使用的词。如果你正在撰写关于各种主题的文章,无论是代码还是莎士比亚,你都可能遇到许多真正独特的论文常见的行话集。我想你可能需要考虑另一种方法。你有没有研究抄袭及其检测?