LINUX.ORG.RU

Программа анализа текстов


0

0

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

anonymous
Ответ на: комментарий от Obidos

Нужно

Нужно, чтобы сразу определялся текст созданный "копировать"-"вставить", и очень желательно, чтобы можно было определить "компиляцию" из двух текстов. Желательно определение скопированных абзацев. Соответственно нужно,чтобы выводились оригиналы текста (в случае их существования), чтобы преподаватель мог убедится в нечестности подопечного. В идеале должен вычисляться индекс уникальности.

anonymous
()
Ответ на: комментарий от anonymous

В английских университетах подобная программа используется, вот только не знаю, OpenSource ли она? Или нет...

anonymous
()
Ответ на: Нужно от anonymous

Примерно месяц назад не помню где была ссылка на отечественную разработку, реально работающую. Вкратце, суть (может, как-то поможет в поиске или кто вспомнит конкретно): есть база, в которую были забиты произведения автороы отечественной фантастики. Вы берете произвольный фрагмент текста (неважно, сочиненный вами или cut'n'paste откуда-то), скармливаете, на выходе имеете оценку вида "Автор такой-то, произведение такое-то, однозначно" либо то же "с вероятностью такой-то" либо "текст является оригинальным".

Obidos ★★★★★
()
Ответ на: комментарий от anonymous

>батенька, такая функциональность тянет на грант РФФИ :-)

Все гораздо проще IMHO. Достаточно оценить количество совпадающих "единиц" текста - например предложений - в проверяемом тексте и в ранее доступных. И если более <threshold>% строк встречается в 1м тексте БД - значит попали.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

IMHO, полноценное решение все-таки сложнее, чем предложенное вами. И опять же упирается в критерий "украденности". Предположим, что некто скачал пресловутый реферат и "литературно обработал": какие-то слова заменил синонимами, какие-то фразы или куски фраз выбросил, что-то (пусть немного) дописал от себя. Считать ли такой "реферат" плагиатом или нет? _По_стилю_ ведь он не отличается от оригинала.

В приведенной мной выше системе (насколько я понял) кроме простого анализа совпадений фрагментов использовался некий критерий "стилевой похожести". А как это делается -- я не лингвист. Но думается, тут можно как составную часть использовать какие-то статистические оценки -- частотный анализ слов, длины предложений, например.

Obidos ★★★★★
()
Ответ на: комментарий от Obidos

Несомненно, если говорить об художественном произведении. Но задача, ИМХО, предполагает не обнаружение использование доступных текстов, а использование их _только_ методом "крупноузловой" сборки. Цель написания рефератов не получение текста реферата, но получения знаний от потребовавшегося чтения. То есть если я переписал своими словами весь текст другого автора, я _получил_ таки оттуда требовавшиеся знания - то есть выполнил задание.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Цель написания рефератов не получение текста реферата, но получения знаний от потребовавшегося чтения.

Бесспорно.

> То есть если я переписал своими словами весь текст другого автора, я _получил_ таки оттуда требовавшиеся знания - то есть выполнил задание.

То же самое.

Но если некто провел тупую контекстную замену, скажем, "помидоров" на "некоторые овощи" и так далее? _Новых_ знаний получено -- ноль, текст реферата -- есть (как вы и говорили), причем подпадающий под "переписанный своими словами". Простой фрагментный анализ IMHO, такое не отловит.

Obidos ★★★★★
()
Ответ на: комментарий от Obidos

А тут этот самый "некто" столкнется с проблемой необходимости семантического анализа полученого в результате замены текста(-:везде ли "помидоры" используются в смысле "овощей":-), необходимостью соблюдать правила языка, согласовывать падежи, etc. Что в случае большинства естественных языков - задача нетривиальная. А такие ошибки читающим человеком обнаруживаются(-:если, конечно, результат кто-то читает:-).

Так что пока не станут приниматься рефераты на esperanto или gua\spi это не критично. Разумеется, стоит при анализе выбрасывать часть информации - (-:например оставлять только глаголы:-) - провести некоторые исследования все же стоит - но _приемлемый_ результат (именно для рефератов) может быть получен без помощи грантов больших контор:-)

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

Для Obidos: > Но если некто провел тупую контекстную замену, скажем, "помидоров" на "некоторые овощи" и так далее? _Новых_ знаний получено -- ноль, текст реферата -- есть (как вы и говорили), причем подпадающий под "переписанный своими словами". Простой фрагментный анализ IMHO, такое не отловит.

Но это, как правило, легко отловить. При замене тех же "помидоров" получается "В нашем саду много некоторые овощи" :). Как верно было подмечено задача просто заставить студента думать, пока это решается запретом на сдачу рефератов напечатанных на принтере, переписывая студент начинает хоть немного вчитываться в то, что пишет :)

Для DonkeyHot > А такие ошибки читающим человеком обнаруживаются(-:если, конечно, результат кто-то читает:-).

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

> Разумеется, стоит при анализе выбрасывать часть информации - (-:например оставлять только глаголы:-) - провести некоторые исследования все же стоит - но _приемлемый_ результат (именно для рефератов) может быть получен без помощи грантов больших контор:-)

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

anonymous
()
Ответ на: комментарий от anonymous

> Но это, как правило, легко отловить. При замене тех же "помидоров" получается "В нашем саду много некоторые овощи" :).

Я же утрированно привел пример. ;-)

> переписывая студент начинает хоть немного вчитываться в то, что пишет :)

Смотря какой студент. ;-) Мне попадались уникумы, которые после конспектирования лекции не могли сказать, а о чем же была данная лекция. Причем конспект был идеален.

> Подобный (или очень похожий) анализ используется в антиспамовских системах.

Байесовская оценка?

Хм, а не попробовать ли такое извращение (не знаю, насколько сработает): берем SpamAssassin, обучаем его по базе рефератов (пусть по его терминологии это будет "спам"). Далее проверяем анализируемый текст и смотрим на выводы, сделанные SpamAssassin'ом. Загвоздка тут в том, что SpamAssassin'у для полноценного обучения требуется еще одна база -- "хорошие" тексты, но что брать в их качестве?

P.S. Возможно, что я написал полный бред. Возможно, что можно написать требуемый инструмент, взяв за основу SpamAssassin и переделав его.

Obidos ★★★★★
()
Ответ на: комментарий от Obidos

>Байесовская оценка?

Если я правильно понимаю значение слова "реферат", а я его понимаю как нечто, ссылающееся в другие тексты, _большинство_ рефератов на заданную тему будут "близнецами" - и слишком умная система будет ругаться на совпадения, происходящие по причине одинаковости темы и набора доступных документов:-)

Ну, и раз тексты все равно читаются, предложение такое:

0. Разбиваем текст на предложения

1. Нормализуем - выбрасываем все пробелы, гласные, некоторые суффиксы, пунктуацию, отличия регистров - для того, чтобы уменьшить вероятность обхода проверки методом внесения незначительных грамматических и прочих ошибок.

2. Считаем хеш полученого.

3. Находим в БД тексты содержащие такое же значение хеша, ведем счетчик для каждого из найденых текстов.

4. Повторяем 1-3 для каждого предложения.

5. Сортируем БД в порядке убывания сосчитаного.

6. Осталось человеку прочитать 1-2 первых в списке реферата из базы - если значения подозрительны, сравнить с проверяемым и принять окончательное решение.

7. Повторяем 0-6 для каждого проверяемого реферата.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> DonkeyHot

Судя по всему придется реализовывать это в коде самостоятельно. Плохо, что нету хоть немного похожего OpenSource проекта (хотя действительно можно покопаться в SpamAssassin)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.