Наступил новый учебный год. Студенты получили расписание занятий и стали задумываться о пьянках-гулянках-девушках-гитарах будущей сессии. Написание курсовых, дипломов, статей и диссертаций не за горами. А значит, грядут и анализ текстов на наличие заимствований, и отчеты о проверке, и прочая головная студенческая и администраторская боль. И у сотен тысяч людей (без шуток – мы посчитали!) уже возникает закономерный вопрос – как же обмануть «Антиплагиат». В нашем случае практически все способы обмана так или иначе связаны с искажениями текста. Мы уже научили «Антиплагиат» обнаруживать текст, «искаженный » с помощью перевода с английского на русский (мы писали об этом в первой статье нашего корпоративного блога). Сегодня речь пойдет о том, как обнаруживать самый эффективный, хотя и трудоемкий способ искажения текста – парафраз.
![](https://habrastorage.org/r/w780q1/webt/xw/al/80/xwal80oombfigqr80s7tllxjpbg.jpeg)
С точки зрениянормального обычного человека, парафраз (перефразировка) – это переписывание текста другими (чаще всего своими) словами. При перефразировке стараются максимально сохранить смысл исходного текста, лишив при этом сам текст формального сходства с оригиналом. В целом все парафразы подчиняются определенным правилам, которые люди используют чаще всего, при этом даже не отдавая себе в этом отчета (см. например, статью Alberto Barrón-Cedeño).
Рассмотрим подробнее на примере всем известного рассказа «Муму» [ как и в названии статьи, в нем тоже фигурируют собака, люди и лодка :-) ], что же можно сделать с текстом, чтобы его смысл сохранился, а предложения выглядели по-другому.
1. Первое, что приходит в голову – это заменить большую часть слов синонимами. Это самое простое, что можно сделать с текстом. Смысл это не поменяет, а текст на первый взгляд изменится. Такой трюк и используют программы синонимайзеры. При этом они заменяют слова, не учитывая контекст, а просто выбирая слово из списка синонимов, поэтому обработанное такой программой предложение очень часто выглядит довольно несуразно. К этому способу парафраза относится и перИфраз – описательное обозначение объекта на основе выделения какого-либо его качества, признака, особенностей, например, «голубая планета» вместо «Земля», «однорукий бандит» вместо «игральный автомат» и т.п.
2. Замена одних частей речи другими тоже позволяет изменить структуру предложения. Например, очень часто заменяют глагол на существительное и наоборот.
3. Еще один простой способ изменить структуру текста – просто делить предложения на более простые, или же наоборот, объединять в длинные.
4. Существенно и весьма оригинально предложение изменяется при помощи страдательного залога.
Это только типовые приемы. Очевидно, что хороший парафраз обнаружить очень сложно. Иногда это под силу только специалистам с глубокими знаниями в предметной области текста. Но для задачи, которую мы решаем, это и не требуется. Ведь глубокая перефразировка требует значительных усилий, а значит, и больших затрат времени. Скорее всего, студенту будет проще написать свою работу, чем тратить время на серьезную перефразировку чужого текста, которая, несмотря на затраты, может быть обнаружена при проверке.
Поэтому наша цель – это относительно простой парафраз, который может быть выполнен «спинным мозгом», т.е. без больших затрат мыслительных усилий и времени.
По сути перефразировка – это «родная сестра» перевода на другой язык. Слова меняются, но смысл остается. Можно сказать, что парафраз русскоязычного текста – это фактически перевод с русского на русский.
Именно поэтому алгоритм детектирования парафраза получился «близким родственником» алгоритма детектирования переводных заимствований. Итак, как же происходит процесс детектирования заимствований в данном случае:
1. Русскоязычный проверяемый документ поступает на вход.
2.Выполняется машинный перевод русского текста на английский язык.
3. Происходит поиск кандидатов в источники заимствований по проиндексированной коллекциианглоязычных русскоязычных документов.
4. Производится сопоставление каждого найденного кандидата санглийской версией проверяемогоым документаом – определение границ заимствованных фрагментов.
5. Границы фрагментов переносятся в русскоязычную версию проверяемый документа. При завершении процесса формируется отчет о проверке.
Важное отличие – настройка параметров алгоритма производится на других данных и с учетом специфики русского языка. При этом мы сохраняем стратегию настройки с ориентацией на точность, жертвуя полнотой. Наша задача ̶ минимизировать количество ложноположительных срабатываний, пусть даже ценой пропуска «некоторых целей».
Парафраз – это, безусловно, трудоемкий способ искажения текста. При этом далеко не все способы переписывания одинаково полезны делают текст неузнаваемым. Пытаясь сократить затраты времени, автор использует самые простые способы модификации текста, которые детектируются алгоритмами системы и результата не приносят. Поэтому, после первой неудачной попытки завысить оригинальность, текст начинают «тюннинговать». Как это работает: используются различные комбинации способов, и после каждой такой комбинации модифицированный текст загружается в систему – для проверки того, насколько успешной была перефразировка и смог ли пользователь получить заветный процент оригинальности. В итоге получается цепочка текстов, каждый из которых был перефразирован с той или иной степенью тяжести. Извлечь такую цепочку – довольно простая инженерная задача. Наше исследование таких «цепочек» выявило (заодно подтвердив результаты того же Alberto Barrón-Cedeño) наиболее частые способы модификаций и дало богатый материал для обучения новых алгоритмов.
Проведем небольшой эксперимент. Возьмем небольшой отрывок из уже упомянутого рассказа Тургенева:
Попытаемся обмануть «Антиплагиат». Для начала попробуем автоматический синонимайзер текста. Такие программы не отличаются особыминтеллектом качеством – они просто берут слова и заменяют их синонимами из словаря, не учитывая контекст. Поэтому тексты, обработанные такой программой, часто выглядят довольно топорно. Вот что получилось после обработки одной из таких программ:
Заметим, что в каждом предложении заменено хотя бы одно слово. Такого, казалось бы, небольшого изменения достаточно, чтобы «обычный Антиплагиат» перестал сопоставлять переписанные предложения с оригиналом.
Теперь попробуем сравнить пары предложений исходного текста и переписанного с помощью нашего алгоритма. Для этого будем использовать косинусную меру сходства. Как и в алгоритме детектирования переводных заимствований, каждое предложение представляется в виде вектора большой размерности. Измеряя косинус угла между парой таких векторов, можно делать вывод, насколько эти векторы «похожи» друг на друга, и, соответственно, насколько похожи предложения, которым соответствуют эти векторы.
Вот что получилось после сравнения предложений нашим алгоритмом:
Для наглядности мы изобразили величину косинуса в виде тепловой шкалы. То есть, чем «горячее» цвет между парой предложений, тем больше величина косинуса и тем более похожими считаются предложения из этой пары. Заметим, что наименьшее значения косинуса получили предложения, в которых замены на синонимы очень плохо подходят к контексту. Например, «так» и «таким образом и» действительно очень часто являются синонимами, однако в данном контексте такая замена совсем не к месту.
Попробуем теперь себя сами в роли синонимайзеров и перепишем текст с сохранением смысла. Но в отличие от программы, все наши изменения грамматически согласованы и хорошо вписываются в контекст. Вот что у нас получилось:
![](https://habrastorage.org/r/w1560/webt/4w/kl/nx/4wklnxsc-9suvkrebxm59pwrcyi.png)
И в этом случае алгоритм выдает достаточно высокую оценку похожести для большей части предложений. Предложения же, получившие низкую оценку, были подвержены достаточно глубокой трансформации: в них сильно изменена грамматическая структура. Даже человек не сразу ответит, похожи ли эти предложения, быстро пробежавшись по ним глазами.
Естественно, лучший способ понять, работает новый алгоритм или нет – это исследовать качество его работы на реальных данных. Поэтому мы поставили новый модуль обнаружения парафраза в продакшн и прогнали через него реальные запросы (пока не показывая результаты пользователям). Работы проверялись как действующим алгоритмом поиска заимствований – «дословное сравнение», так и новым алгоритмом – «обнаружение парафраза». Затем мы сравнили около 10 тысяч отчетов о проверках загружаемых работ, созданных обоими алгоритмами. Результаты получились интересные.
На это графике приведено распределение процента заимствований для обоих алгоритмов. Видно, что «обнаружение парафраза» в среднем на 10 процентов больше заимствований, чем «дословное сравнение».
На втором графике по горизонтальной оси отложена абсолютная разница между процентом заимствований предлагаемого алгоритма и текущего. Разница больше 0 означает, что «обнаружение парафраза» нашло больше, чем «дословное сравнение».
![](https://habrastorage.org/r/w1560/webt/x0/uv/nj/x0uvnjlmihxrmimmrbug9wwtepc.png)
Архитектура алгоритма обнаружения парафраза и первые результаты работы были показаны на воркшопе Big Scholar, посвященном анализу научных данных, который в этом году проходил в рамках одной из главных конференций по машинному обучению – KDD 2018.
Модуль обнаружения парафраза развернут на продакшне и уже используется преподавателями и студентами при проверках текстов на заимствования.
Статья подготовлена в соавторстве с Rita_Kuznetsova, Oleg_Bakhteev, Камилем Сафиным и chernasty. Исходное изображение для создания входной иллюстрации было взято отсюда: demotivators.cc.
![](https://habrastorage.org/webt/xw/al/80/xwal80oombfigqr80s7tllxjpbg.jpeg)
С русского на русский, или кстати сказать
С точки зрения
Рассмотрим подробнее на примере всем известного рассказа «Муму» [ как и в названии статьи, в нем тоже фигурируют собака, люди и лодка :-) ], что же можно сделать с текстом, чтобы его смысл сохранился, а предложения выглядели по-другому.
1. Первое, что приходит в голову – это заменить большую часть слов синонимами. Это самое простое, что можно сделать с текстом. Смысл это не поменяет, а текст на первый взгляд изменится. Такой трюк и используют программы синонимайзеры. При этом они заменяют слова, не учитывая контекст, а просто выбирая слово из списка синонимов, поэтому обработанное такой программой предложение очень часто выглядит довольно несуразно. К этому способу парафраза относится и перИфраз – описательное обозначение объекта на основе выделения какого-либо его качества, признака, особенностей, например, «голубая планета» вместо «Земля», «однорукий бандит» вместо «игральный автомат» и т.п.
Оригинал | Парафраз |
---|---|
Барыня начала ее ласковым голосом подзывать к себе. | Боярыня начала ее обходительным голосом звать к себе. |
2. Замена одних частей речи другими тоже позволяет изменить структуру предложения. Например, очень часто заменяют глагол на существительное и наоборот.
Оригинал | Парафраз |
---|---|
В один прекрасный летний день барыня с своими приживалками расхаживала по гостиной. | Прогулка барыни с своими приживалками происходила в прекрасный летний день. |
3. Еще один простой способ изменить структуру текста – просто делить предложения на более простые, или же наоборот, объединять в длинные.
Оригинал | Парафраз |
---|---|
Герасим немного изумился, однако подозвал Муму, поднял ее с земли и передал Степану. | Герасим немного удивился, однако после подозвал Муму. Он поднял ее с земли и передал Степану. |
4. Существенно и весьма оригинально предложение изменяется при помощи страдательного залога.
Оригинал | Парафраз |
---|---|
Барыня велела позвать к себе старшую приживалку. | Старшая приживалка была позвана барыней. |
Это только типовые приемы. Очевидно, что хороший парафраз обнаружить очень сложно. Иногда это под силу только специалистам с глубокими знаниями в предметной области текста. Но для задачи, которую мы решаем, это и не требуется. Ведь глубокая перефразировка требует значительных усилий, а значит, и больших затрат времени. Скорее всего, студенту будет проще написать свою работу, чем тратить время на серьезную перефразировку чужого текста, которая, несмотря на затраты, может быть обнаружена при проверке.
Поэтому наша цель – это относительно простой парафраз, который может быть выполнен «спинным мозгом», т.е. без больших затрат мыслительных усилий и времени.
По сути перефразировка – это «родная сестра» перевода на другой язык. Слова меняются, но смысл остается. Можно сказать, что парафраз русскоязычного текста – это фактически перевод с русского на русский.
Именно поэтому алгоритм детектирования парафраза получился «близким родственником» алгоритма детектирования переводных заимствований. Итак, как же происходит процесс детектирования заимствований в данном случае:
1. Русскоязычный проверяемый документ поступает на вход.
2.
3. Происходит поиск кандидатов в источники заимствований по проиндексированной коллекции
4. Производится сопоставление каждого найденного кандидата с
5. Границы фрагментов переносятся в русскоязычную версию проверяемый документа. При завершении процесса формируется отчет о проверке.
Важное отличие – настройка параметров алгоритма производится на других данных и с учетом специфики русского языка. При этом мы сохраняем стратегию настройки с ориентацией на точность, жертвуя полнотой. Наша задача ̶ минимизировать количество ложноположительных срабатываний, пусть даже ценой пропуска «некоторых целей».
Тюнинг от «высокого портного»
Парафраз – это, безусловно, трудоемкий способ искажения текста. При этом далеко не все способы переписывания одинаково полезны делают текст неузнаваемым. Пытаясь сократить затраты времени, автор использует самые простые способы модификации текста, которые детектируются алгоритмами системы и результата не приносят. Поэтому, после первой неудачной попытки завысить оригинальность, текст начинают «тюннинговать». Как это работает: используются различные комбинации способов, и после каждой такой комбинации модифицированный текст загружается в систему – для проверки того, насколько успешной была перефразировка и смог ли пользователь получить заветный процент оригинальности. В итоге получается цепочка текстов, каждый из которых был перефразирован с той или иной степенью тяжести. Извлечь такую цепочку – довольно простая инженерная задача. Наше исследование таких «цепочек» выявило (заодно подтвердив результаты того же Alberto Barrón-Cedeño) наиболее частые способы модификаций и дало богатый материал для обучения новых алгоритмов.
Проведем небольшой эксперимент. Возьмем небольшой отрывок из уже упомянутого рассказа Тургенева:
Спустя час после всей этой тревоги дверь каморки растворилась и показался Герасим. На нем был праздничный кафтан; он вел Муму на веревочке. Ерошка посторонился и дал ему пройти. Герасим направился к воротам. Мальчишки и все бывшие на дворе проводили его глазами, молча. Он даже не обернулся; шапку надел только на улице. Гаврила послал вслед за ним того же Ерошку в качестве наблюдателя. Ерошка увидал издали, что он вошел в трактир вместе с собакой, и стал дожидаться его выхода
Попытаемся обмануть «Антиплагиат». Для начала попробуем автоматический синонимайзер текста. Такие программы не отличаются особым
Через время после данного беспокойства двери конурки рассосались, и представился Герасим. На нем был торжественный кафтанчик; некто вел Муму в веревочке. Ерошка посторонился и предоставил ему проделать путь. Герасим устремился к воротам. Мальчишки и все без исключения прежние в дворе провождали его очами, не говоря ни слова. Он в том числе и никак не повернулся: головной убор надел только лишь в улице. Гаврила отправил следом за ним этого же Ерошку в свойстве наблюдающего. Ерошка увидал издалека, то что некто вступил в таверну совместно с псиной, и начал ждать его выхода
Заметим, что в каждом предложении заменено хотя бы одно слово. Такого, казалось бы, небольшого изменения достаточно, чтобы «обычный Антиплагиат» перестал сопоставлять переписанные предложения с оригиналом.
Теперь попробуем сравнить пары предложений исходного текста и переписанного с помощью нашего алгоритма. Для этого будем использовать косинусную меру сходства. Как и в алгоритме детектирования переводных заимствований, каждое предложение представляется в виде вектора большой размерности. Измеряя косинус угла между парой таких векторов, можно делать вывод, насколько эти векторы «похожи» друг на друга, и, соответственно, насколько похожи предложения, которым соответствуют эти векторы.
Вот что получилось после сравнения предложений нашим алгоритмом:
![](https://habrastorage.org/webt/wj/kh/jb/wjkhjbef3coibafvti4xsbsrtmm.png)
Для наглядности мы изобразили величину косинуса в виде тепловой шкалы. То есть, чем «горячее» цвет между парой предложений, тем больше величина косинуса и тем более похожими считаются предложения из этой пары. Заметим, что наименьшее значения косинуса получили предложения, в которых замены на синонимы очень плохо подходят к контексту. Например, «так» и «таким образом и» действительно очень часто являются синонимами, однако в данном контексте такая замена совсем не к месту.
Попробуем теперь себя сами в роли синонимайзеров и перепишем текст с сохранением смысла. Но в отличие от программы, все наши изменения грамматически согласованы и хорошо вписываются в контекст. Вот что у нас получилось:
![](https://habrastorage.org/webt/4w/kl/nx/4wklnxsc-9suvkrebxm59pwrcyi.png)
И в этом случае алгоритм выдает достаточно высокую оценку похожести для большей части предложений. Предложения же, получившие низкую оценку, были подвержены достаточно глубокой трансформации: в них сильно изменена грамматическая структура. Даже человек не сразу ответит, похожи ли эти предложения, быстро пробежавшись по ним глазами.
И что теперь со всем этим делать?
Естественно, лучший способ понять, работает новый алгоритм или нет – это исследовать качество его работы на реальных данных. Поэтому мы поставили новый модуль обнаружения парафраза в продакшн и прогнали через него реальные запросы (пока не показывая результаты пользователям). Работы проверялись как действующим алгоритмом поиска заимствований – «дословное сравнение», так и новым алгоритмом – «обнаружение парафраза». Затем мы сравнили около 10 тысяч отчетов о проверках загружаемых работ, созданных обоими алгоритмами. Результаты получились интересные.
![](https://habrastorage.org/webt/jk/6j/w4/jk6jw4t4bp_e7desyizuedjbvr8.jpeg)
На это графике приведено распределение процента заимствований для обоих алгоритмов. Видно, что «обнаружение парафраза» в среднем на 10 процентов больше заимствований, чем «дословное сравнение».
На втором графике по горизонтальной оси отложена абсолютная разница между процентом заимствований предлагаемого алгоритма и текущего. Разница больше 0 означает, что «обнаружение парафраза» нашло больше, чем «дословное сравнение».
![](https://habrastorage.org/webt/x0/uv/nj/x0uvnjlmihxrmimmrbug9wwtepc.png)
Выводы
- Парафраз как способ искажения текста реально используется при написании работ;
- Количество «срабатываний» не выросло радикально, алгоритм находит действительно перефразированный текст;
- Как и в случае с переводными заимствованиями, система Антиплагиат получила новый модуль – систему обнаружения парафраза;
- Ну и конечно, наше классическое — лучше творить собственным умом!
Архитектура алгоритма обнаружения парафраза и первые результаты работы были показаны на воркшопе Big Scholar, посвященном анализу научных данных, который в этом году проходил в рамках одной из главных конференций по машинному обучению – KDD 2018.
Модуль обнаружения парафраза развернут на продакшне и уже используется преподавателями и студентами при проверках текстов на заимствования.
Статья подготовлена в соавторстве с Rita_Kuznetsova, Oleg_Bakhteev, Камилем Сафиным и chernasty. Исходное изображение для создания входной иллюстрации было взято отсюда: demotivators.cc.