Как Вы кодировали бы анти-сайт плагиата?

sed -n '16224,16482 p' orig-data-file > new-file

, Где 16224,16482 номер строки запуска и заканчивает номер строки, включительно. Это 1-индексируемо. -n подавляет повторение входа, как произведено, который Вы ясно не хотите; числа указывают на диапазон строк, чтобы заставить следующую команду воздействовать на; команда p распечатывает соответствующие строки.

22
задан Majid Fouladpour 6 December 2013 в 01:35
поделиться

5 ответов

Хорошее обнаружение плагиата будет применять эвристику в зависимости от типа документа (например, эссе или программный код на определенном языке).

Однако вы также можете применить общее решение. Взгляните на Нормализованное расстояние сжатия (NCD). Очевидно, вы не можете точно рассчитать колмогоровскую сложность текста , но вы можете подойти к этому, просто сжав текст.

Меньшее значение NCD указывает на то, что два текста более похожи. Некоторое сжатие алгоритмы дадут лучшие результаты, чем другие. К счастью, PHP поддерживает для несколько алгоритмов сжатия , так что вы можете иметь свой плагиат, связанный с НИЗ код обнаружения запускается в кратчайшие сроки. Ниже я приведу пример кода, который использует Zlib :

PHP:

function ncd($x, $y) { 
  $cx = strlen(gzcompress($x));
  $cy = strlen(gzcompress($y));
  return (strlen(gzcompress($x . $y)) - min($cx, $cy)) / max($cx, $cy);
}   

print(ncd('this is a test', 'this was a test'));
print(ncd('this is a test', 'this text is completely different'));

Python:

>>> from zlib import compress as c
>>> def ncd(x, y): 
...     cx, cy = len(c(x)), len(c(y))
...     return (len(c(x + y)) - min(cx, cy)) / max(cx, cy) 
... 
>>> ncd('this is a test', 'this was a test')
0.30434782608695654
>>> ncd('this is a test', 'this text is completely different')
0.74358974358974361

Обратите внимание, что для больших текстов (читай: реальных файлов) результаты будут намного больше произносится. Попробуйте и поделитесь своим опытом!

31
ответ дан 29 November 2019 в 04:17
поделиться

Я думаю, что это сложная проблема, и для нее нет лучшего решения. Вы можете обнаружить точное дублирование слов на уровне всего документа (т. Е. Кто-то загружает целое эссе из Интернета) вплоть до уровня фразы. Сделать это на уровне документа довольно просто - самое простое решение - взять контрольную сумму каждого отправленного документа и сравнить ее со списком контрольных сумм известных документов. После этого вы можете попытаться обнаружить плагиат идей или найти предложения, которые были скопированы напрямую, а затем слегка изменены, чтобы отказаться от подобного программного обеспечения.

Чтобы получить что-то, что работает на уровне фраз, вам может потребоваться более сложный, если хочу любой уровень эффективности. Например, вы можете искать различия в стиле письма между абзацами и сосредоточить свое внимание на абзацах, которые кажутся «неуместными» по сравнению с остальной частью статьи.

На эту тему есть много статей, поэтому я подозреваю, что пока нет идеального решения. Например, в этих двух статьях описаны некоторые общие проблемы, связанные с подобным программным обеспечением, и есть много ссылок, в которых вы могли бы копнуть глубже, если хотите.

http://ir.shef.ac. uk / cloughie / paper / pas_plagiarism.pdf

http://proceedings.informingscience.org/InSITE2007/IISITv4p601-614Dreh383.pdf

5
ответ дан 29 November 2019 в 04:17
поделиться

Это действительно зависит от того, «откуда плагируют». Если вы говорите в контексте одного сайта, это сильно отличается от всего Интернета, или библиотеки собраний, или ...

http://www.copyscape.com/ в значительной степени доказывает это можно сделать.

Похоже, что основная концепция

  • - поиск в Google каких-то необычных последовательности слов
  • Для каждого результата выполните подробный анализ

Часть подробного анализа, безусловно, может быть аналогичной, поскольку это сравнение 1 к 1, но поиск и получение исходных документов является ключевым фактором.

4
ответ дан 29 November 2019 в 04:17
поделиться

Для получения лучших результатов на не очень больших строках:

Есть проблемы с прямым использованием формулы NCD для строк или небольших текстов. NCD (X, X) не равно нулю (!). Чтобы удалить этот артефакт, вычтите само сравнение.

См. Демонстрацию Similar_NCD_gzip () на http://leis.saocarlos.sp.gov.br/SIMILAR.php

function similar_NCD_gzip($sx, $sy, $prec=0, $MAXLEN=90000) {
# NCD with gzip artifact correctoin and percentual return.
# sx,sy = strings to compare. 
# Use $prec=-1 for result range [0-1], $pres=0 for percentual,
#     $pres=1 or =2,3... for better precision (not a reliable)  
# Use MAXLEN=-1 or a aprox. compress lenght. 
# For NCD definition see http://arxiv.org/abs/0809.2553
# (c) Krauss (2010).
  $x = $min = strlen(gzcompress($sx));
  $y = $max = strlen(gzcompress($sy));
  $xy= strlen(gzcompress($sx.$sy));
  $a = $sx;
  if ($x>$y) { # swap min/max
    $min = $y;
    $max = $x;
    $a = $sy;
  }
  $res = ($xy-$min)/$max; # NCD definition.

  # Optional correction (for little strings):
  if ($MAXLEN<0 || $xy<$MAXLEN) {
    $aa= strlen(gzcompress($a.$a));
    $ref = ($aa-$min)/$min;
    $res = $res - $ref; # correction
  }
  return ($prec<0)? $res: 100*round($res,2+$prec);
}
4
ответ дан 29 November 2019 в 04:17
поделиться

Что ж, в первую очередь нужно понять, с чем вы сталкиваетесь.

Дословный плагиат должен быть до смешного легко обнаружен. Самый наивный подход - взять кортежи слов достаточной длины и сравнить их с вашим корпусом. Достаточная длина может быть невероятно низкой. Сравните результаты Google:

"I think" => 454,000,000
"I think this" => 329,000,000
"I think this is" => 227,000,000
"I think this is plagiarism" => 5

Так что даже при таком подходе у вас очень высока вероятность найти пару хороших совпадений (забавный факт: большинство преступников действительно тупицы).

Если плагиатор использовал синонимы, изменил порядок слов и т. Д., Очевидно, что это стало немного сложнее. Вам также придется хранить синонимы и попытаться немного нормализовать грамматическую структуру, чтобы тот же подход работал. То же самое, конечно, касается орфографии (т.е. попробуйте сопоставить с помощью нормализации или попытайтесь учесть отклонения в вашем сопоставлении, как в подходах к НИЗ, опубликованных в других ответах).

Однако самая большая проблема - это концептуальный плагиат. Это действительно сложно, и нет очевидных решений без разбора семантики каждого предложения (т.е. достаточно сложного ИИ).

Правда в том, что вам нужно найти только НЕКОТОРЫЕ совпадения. Вам не нужно искать точное совпадение, чтобы найти релевантный текст в вашем корпусе. Окончательную оценку в любом случае должен делать человек, так что ничего страшного, если вы обнаружите неточное совпадение.

Плагиаторы в большинстве своем глупы и ленивы, поэтому их копии тоже будут тупыми и ленивыми. Некоторые вкладывают невероятные усилия в свою работу, но эти работы часто в первую очередь являются неочевидным плагиатом, поэтому их сложно отследить программно (т.е.если у человека есть проблемы с распознаванием плагиата с обоими текстами, представленными рядом, компьютер, скорее всего, тоже это сделает). Для всех остальных 80% или около того тупой подход достаточно хорош.

5
ответ дан 29 November 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: