Хабрахабр

Трудности перевода: как найти плагиат с английского языка в русских научных статьях

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

"

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

Всё, что связано с воровством чужих изобретений, идей, мыслей, останется за рамками статьи. Я хочу расставить все точки над «i»: в статье речь пойдёт только о тех проявлениях плагиата, которые связаны с использованием чужого текста. Слово «плагиат» мы используем только тогда, когда попытка выдать чужой текст за свой очевидна и не подлежит сомнению. В тех случаях, когда мы не знаем, насколько правомерным, корректным или этичным было такое использование, мы будем говорить «заимствование текста» или «текстовое заимствование».

Мы решили, что образы Пиноккио и Буратино служат прекрасной иллюстрацией к проблеме поиска плагиата из иностранных источников. Над этой статьей мы работали вместе с Rita_Kuznetsova и Oleg_Bakhteev. Сразу оговорюсь, что мы ни в коем случае не обвиняем А.Н.Толстого в плагиате идей Карло Коллоди.

Мы построили своё решение на основе т.н. Для начала я коротко расскажу, как работает «обычный Антиплагиат». Этот алгоритм основан на разбиении текста документа на небольшие перекрывающиеся последовательности слов определенной длины – шинглы. «алгоритма шинглов», который позволяет быстро находить заимствования в очень больших коллекциях документов. Для каждого шингла рассчитывается значение хэш-функции. Обычно используется шинглы длиной от 4 до 6 слов. Поисковый индекс формируется как отсортированный список значений хэш-функции с указанием идентификаторов документов, в которых встретились соответствующие шинглы.

Затем по индексу находятся документы с наибольшим количеством совпадений по шинглам с проверяемым документом.
Этот алгоритм успешно зарекомендовал себя в поиске заимствований как на английском, так и на русском языке. Проверяемый документ также разбивается на шинглы. Подробнее о задаче обнаружения нечетких текстовых дубликатов и методах её решения можно узнать, например, из статьи Ю. Алгоритм поиска по шинглам позволяет быстро обнаруживать заимствованные фрагменты, при этом он позволяет искать не только полностью скопированный текст, но и заимствования с небольшими изменениями. Сегаловича. Зеленкова и И.

У многих авторов возникала потребность быстро повысить процент оригинальности документа, или, говоря иначе, тем или иным способом «обмануть» действующий алгоритм и получить более высокий процент оригинальности. По мере развития системы поиска «почти дубликатов» становилось недостаточно. Однако основной недостаток такого способа – на реализацию уходит слишком много времени. Естественно, самый действенный способ, который приходит на ум, – это переписать текст другими словами, то есть перефразировать его. Поэтому нужно что-то более простое, но гарантированно приносящее результат.

Стремительный рост современных технологий и успехи машинного перевода позволяют получить оригинальную работу, которая при беглом взгляде выглядит так, как будто её написали самостоятельно (если не вчитываться внимательно и не искать ошибки машинного переводчика, которые, впрочем, легко исправить). Тут на ум приходит заимствование из иностранных источников.

Автоматического инструмента детектирования заимствований такого рода не существовало. До недавнего времени обнаружить такой вид плагиата было можно, только обладая широкими знаниями по тематике работы. Фактически «Корчеватель» — это перевод автоматически сгенерированной статьи "«Rooter: A Methodology for the Typical Unification of Access Points and Redundancy». Это хорошо иллюстрирует случай со статьей «Корчеватель: Алгоритм типичной унификации точек доступа и избыточности». Прецедент был создан искусственно с целью проиллюстрировать проблемы в структуре журналов из списка ВАК в частности и в состоянии российской науки в целом.

Увы, но переведённая работа «обычным Антиплагиатом» не нашлась бы – во-первых, поиск осуществляется по русскоязычной коллекции, а во-вторых, нужен иной алгоритм поиска таких заимствований.

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

  • на английском языке написано невероятное количество всевозможных текстов;
  • российские ученые в большинстве случаев в качестве второго «рабочего» языка используют английский;
  • английский – общепринятый рабочий язык для большинства международных научных конференций и журналов.

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

  1. Русскоязычный проверяемый документ поступает на вход.
  2. Выполняется машинный перевод русского текста на английский язык.
  3. Происходит поиск кандидатов в источники заимствований по проиндексированной коллекции англоязычных документов.
  4. Производится сопоставление каждого найденного кандидата с английской версией проверяемого документа – определение границ заимствованных фрагментов.
  5. Границы фрагментов переносятся в русскоязычную версию документа. При завершении процесса формируется отчёт о проверке.

Первая задача, которую нужно решить после появления проверяемого документа, – это перевод текста на английский язык. Для того, чтобы не зависеть от сторонних инструментов, мы решили использовать готовые алгоритмические решения из открытого доступа и обучать их самостоятельно. Для этого необходимо было собрать параллельные корпуса текстов для пары языков «английский – русский», которые есть в открытом доступе, а также попробовать собрать такие корпуса самостоятельно, анализируя веб-страницы двуязычных сайтов. Разумеется, качество обученного нами переводчика уступает лидирующим решениям, но ведь от нас никто и не требует высокого качества перевода. В итоге удалось собрать около 20 миллионов пар предложений научной тематики. Такая выборка подходила для решения стоявшей перед нами задачи.

Один и тот же смысл может быть выражен разными словами, может меняться структура предложения и порядок слов. Реализовав машинный переводчик, мы столкнулись с первой трудностью – перевод всегда неоднозначен. А так как перевод делается автоматически, то сюда накладываются ещё и ошибки машинного перевода.

Чтобы проиллюстрировать эту неоднозначность, мы взяли первый попавшийся препринт с arxiv.org

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

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

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

Допустим, какой-то текст на английском прошёл через «канал с шумом» и стал текстом на русском языке, который, в свою очередь, прошёл ещё через один «канал с шумом» (естественно, это уже был другой канал) и стал на выходе текстом на английском языке, который отличается от оригинала. Здесь можно провести параллель с математической моделью «зашумленного канала» (noisy channel model). Наложение такого двойного «шума» – одна из основных проблем поставленной задачи.

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

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

Будут ли обнаружены тексты, порождённые разными переводчиками, как на примере ниже? Но что же делать с шумом, который дает нам «двойной» машинный перевод в текстах?

Например, слово «beer» попадет в кластер, который также содержит следующие слова: Поиск «по смыслу» мы решили обеспечить через кластеризацию английских слов так, чтобы семантически близкие слова и словоформы одного и того же слова попали в один кластер.

[beer, beers, brewing, ale, brew, brewery, pint, stout, guinness, ipa, brewed, lager, ales, brews, pints, cask]

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

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

Итак, документы-кандидаты на наличие переводных заимствований найдены, и можно приступить к «смысловому» сравнению текста каждого кандидата с проверяемым текстом. Здесь нам шинглы уже не помогут – этот инструмент для решения этой задачи слишком неточен. Мы попробуем реализовать такую идею: каждому фрагменту текста поставим в соответствие точку в пространстве очень большой размерности, при этом будем стремиться к тому, чтобы фрагменты текстов, близкие по смыслу, были представлены точками, расположенными в этом пространстве неподалеку (были близки по некоторой функции расстояния).

Роль асессора в этой работе – создать обучающую выборку, то есть указать для некоторых пар фрагментов текста, являются ли они близкими по смыслу или нет. Рассчитывать координаты точки (или чуть более научно – компоненты вектора) для фрагмента текста мы будем с помощью нейронной сети, а обучать эту сеть будем с помощью данных, размеченных асессорами. Естественно, что чем больше удастся собрать размеченных фрагментов, тем лучше будет работать обученная сеть.

Наша сеть должна отображать текстовый фрагмент произвольной длины в вектор большой, но фиксированной размерности. Ключевая задача во всей работе — правильно выбрать архитектуру и обучить нейронную сеть. Для решения задач, связанных с какими-либо последовательностями (не только текстовыми, но и, например, биологическими) существует целый класс сетей, которые называются рекуррентными. При этом она должна учитывать контекст каждого слова и синтаксические особенности текстовых фрагментов. На практике такая модель имеет множество недостатков: её сложно тренировать, и она достаточно быстро «забывает» информацию, которая была получена из первых элементов последовательности. Основная идея этой сети состоит в том, чтобы получать вектор последовательности, итеративно добавляя информацию о каждом элементе этой последовательности. В нашем алгоритме мы используем архитектуру GRU. Поэтому на основе этой модели было предложено множество более удобных архитектур сетей, которые исправляют эти недостатки. Эта архитектура позволяет регулировать, сколько информации должно быть получено из очередного элемента последовательности и сколько информации сеть может «забыть».

Сеть обучалась итеративно. Для того, чтобы сеть хорошо работала с разными видами перевода, мы обучали её как на примерах ручного, так и машинного перевода. Такие фрагменты мы также давали сети для обучения. После каждой итерации мы изучали, на каких фрагментах она ошибалась сильнее всего.

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

Ничто не мешает, например, оперировать с полными текстами, представляя их в виде единого объекта. Стоит отметить ещё один немаловажный момент, а именно — размер фрагмента текста, который будет отображаться в точку. Если же в тексте будет заимствована только какая-то часть, то нейронная сеть расположит их далеко, и мы ничего не обнаружим. Но в этом случае близкими будут только тексты, полностью совпадающие по смыслу. Именно на нём мы решили остановится. Хорошим, хотя и не бесспорным, вариантом является использование предложений.

Допустим, и проверяемый документ, и документы кандидаты содержат по 100 предложений, что соответствует размеру средней научной статьи. Давайте попробуем оценить, какое количество сравнений предложений нужно будет выполнить в типичном случае. Если кандидатов будет всего 100 (на практике из многомиллионного индекса иногда поднимаются и десятки тысяч кандидатов), то нам потребуется 1 миллион сравнений расстояний для поиска заимствований всего в одном документе. Тогда на сравнение каждого кандидата нам потребуется 10 000 сравнений. При этом сам по себе расчёт каждого расстояния – тоже не самая простая операция. А поток проверяемых документов часто переваливает за 300 в минуту.

Основная идея этого алгоритма в следующем: каждый вектор мы умножаем на некоторую матрицу, после чего запоминаем, какие компоненты результата умножения имеют значение больше нуля, а какие – меньше. Чтобы не сравнивать все предложения со всеми, используем предварительный отбор потенциально близких векторов на основе LSH-хэширования. Таким образом, при правильном подборе параметров алгоритма мы сокращаем количество требуемых попарных сравнений векторов до небольшого числа, которое можно провести за приемлемое время. Такую запись про каждый вектор можно представить двоичным кодом, обладающим интересным свойством: близкие векторы имеют схожий двоичный код.

Отобразим результаты работы нашего алгоритма – теперь при загрузке пользователем документа можно выбрать проверку по коллекции переводных заимствований. Результат проверки виден в личном кабинете:

Итак, алгоритм готов, проведено его обучение на модельных выборках. Удастся ли нам найти что-то интересное на практике?

Всего мы проверили около 2,5 млн научных статей на русском языке. Мы решили поискать переводные заимствования в крупнейшей электронной библиотеке научных статей eLibrary.ru, основу которой составляют научные статьи, входящие в Российский индекс научного цитирования (РИНЦ).

Общий объем базы источников в боевом эксперименте составил 10 миллионов текстов. В качестве области поиска мы проиндексировали коллекцию англоязычных архивных статей из фондов elibrary.ru, сайты журналов открытого доступа, ресурс arxiv.org, англоязычную википедию. Количество научных текстов на английском языке исчисляется, как минимум, миллиардами. Может показаться странным, но 10 миллионов статей – это очень небольшая база. В этом эксперименте, располагая базой, в которой находилось менее 1% потенциальных источников заимствований, мы считали, что даже 100 выявленных случаев будут удачей.

Мы пригласили экспертов для детальной проверки выявленных случаев. В результате мы обнаружили более 20 тысяч статей, содержащих переводные заимствования в значительных объемах. Результаты анализа этой части выборки представлены в таблице: В результате удалось проверить чуть меньше 8 тысяч статей.

Тип срабатывания

Количество

Заимствование

2627

Переводные заимствования
(текст переведен с английского языка и выдан за оригинальный)

921

Заимствования «наоборот» – из русского языка в английский (определялось по дате публикаций)

1706

Легальные заимствования

2355

Двуязычные статьи
(работы одного и того же автора на двух языках)

788

Цитаты законов
(использование формулировок законов)

1567

Cамоцитирование
(переводное цитирование автором своей же англоязычной работы)

660

Ошибочные срабатывания
(из-за некорректного перевода или ошибки нейронной сети)

507

Другое
(проверяемые статьи содержали фрагменты на английском языке, или сложно отнести к какой-либо категории)

1540

Всего

7689

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

Исходя из анализа, можно сделать несколько интересных выводов, например, о распределении процента заимствований:

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

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

Используя эту информацию, можно определить, в каких российских научных областях чаще всего заимствуют путём перевода с английского. Мы использовали метаданные, предоставленные eLibrary.ru, в том числе о том, к какой области знания относится статья.

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

Соответствующие блоки отмечены красным. Сверху – работа на английском языке с arxiv.org, снизу – русскоязычная работа, которая целиком и полностью, включая графики и результаты, является переводом. На оригинал авторы решили не ссылаться. Примечательным является и тот факт, что авторы пошли ещё дальше – оставшиеся куски оригинальной статьи они тоже перевели и опубликовали ещё пару «своих» статей. Информация обо всех найденных случаях переводных заимствований передана в редакции научных журналов, выпустивших соответствующие статьи.

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

Творите собственным умом!

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть