Антиплагиат находит перефразирования. Легко сказать, но сложно сделать

Наступил 2024 год, но всё ещё проблемы заимствований в текстах не дают нам покоя. Мы уже рассказывали о парафразе и о наших разработках в этой области. Но не зря парафраз относят не только к самым популярным приёмам работы с текстами — он является и самым древним. Например, известный Парафраз Феофила — толкования, входящие в Corpus iuris civilis, или свод римского гражданского права, составленного в 529534 годах. Неугасаемая вековая популярность перефразирования, пересказа или изложения чужих мыслей своими словами даёт нам право поговорить об этом ещё и ещё раз.

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

Векторный поиск — что же мы можем вам рассказать?

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

Рассмотрим несколько работ, связанных с поиском плагиата в текстах. В статье [1] авторы предлагают метод для обнаружения заимствований, использующий Word2vec, который способен выявить семантическую взаимосвязь между различными словами. Кластеризация слов проводится с помощью метода K-means, но в данной работе не разобрано, насколько наполненными получаются кластеры и насколько сильно связаны слова внутри них. Также есть подходы [2], основанные на использовании представлений с помощью модели BERT, которые кодируют предложения в векторы. Дальше эти представления подаются на вход LSTM. Выход модели — это и есть полученный результирующий вектор для предложения. Такая процедура производится как для источника, так и для проверяемого документа.

Схожесть векторов сравнивается с помощью косинусного расстояния.

Рисунок 1. Метод CL-OSA

Также мы решили привести метод [3], основанный на использовании open knowledge graphs, для выявления заимствований между различными языками (рисунок 1). Данный граф помогает связывать документы, используя граф семантических знаний из «Викиданных». Созданное представление никак не зависит от рассматриваемого языка, что помогает не использовать переводчик при работе по поиску кандидатов.

Также множество подходов были проанализированы в данной статье [4], советуем ознакомиться.

Лучше уведите от экрана женщин и детей, зрелище не для слабонервных...

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

Моноязычные кластеры

Затем мы назовём набор кластеров

Мультиязычные кластеры

Построение кластеров на нескольких языках мы называем мультиязычными кластерами. Объединение всех кластеров на различных языках обозначим:

Мультиязычные кластеры должны быть выровнены по языкам:

Где m и m−1 — разные языки из M. То есть количество кластеров у всех языков одинаково, и, взяв любой из кластеров на одном из языков, мы можем утверждать, что этот же номер кластера в другом языке содержит эквивалентные слова.

Поиск кандидатов

Данная задача заключается в том, чтобы для документов V={v1,...,vM} получить из коллекции источников D={d1,...,dN} ранжированный список кандидатов, которые подозреваются в плагиате. Сейчас в большинстве статей метод заключается в том, чтобы текст переводить на заданный язык и создавать последовательность шинглов для последовательности полученных токенов. Дальше, используя пересекающиеся последовательности шинглов, можно сравнивать документы на степень схожести данных списков. Чтобы обойти путь с переводом и каждое слово не было отдельной семантической единицей, мы исследуем работу с кластерами. Так, если для каждого слова в предложении будет поставлен в соответствие номер кластера, то строить последовательности шинглов мы будем над ними. Но в чём же преимущество? Во-первых, тут нет потребления ресурсов. Во-вторых, слова — это не отдельные единицы в документе, так как парафраз, перевод и остальные ухищрения могут быть выявлены, если мы правильно подобрали кластер для слова.

Приведём пример для наглядности:

1. «Мама любила рисовать прекрасные пейзажи, которые описывали всю красоту природы в данной местности».

2. «Мама обожала создавать чудесные картины, которые описывали всю красоту естественного мира в данном населённом пункте».

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

Метрики

Метрика поиска кандидатов

У каждого документа есть:
Пусть f — это наш алгоритм по поиску кандидатов. Тогда:

Метрика парафраза

Этот набор слов относится к каждому перефразированному слову, где Q — количество исходных слов. Получаем:
где clpm — кластер для перефразированного слова, cliq — кластер для исходного слова, 1A(u) — индикатор, если u>0, то его значение равно 1, 0 — в противном случае.

Краевой случай: если есть один кластер, то показатель будет равен 1. Мы предусмотрели этот случай и использовали отрицательную выборку, чтобы показатель был стабильным.

Метрика оценки кластеров

N — количество тем
M — количество пар для определённой темы. Тогда:

где

Metricpositive показывает, насколько кластер раскрывает тему. Но тогда есть проблема, что можно создать один кластер со всеми словами — и он будет на 100% покрывать все темы. Тогда нужно ввести метрику, которая бы контролировала, что одному кластеру соответствует одна тематика.

Тогда:

Где:

Метрики — это хорошо, но методы лучше

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

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

— создание монокластеров с помощью алгоритма на основе механизма внимания,

— создание монокластеров с помощью метода FAISS,

— создание монокластеров с помощью сервиса UWN.

Как же без внимания?

После работы с простыми подходами было понятно, что базовые алгоритмы по построению синонимических групп не помогают в их создании. Пришлось думать, а как сделать так, чтобы слова, которые являются синонимами или близки по контексту, оказались в одном кластере. И как же тут не вспомнить про великую модель — трансформер. Почему? Всё достаточно просто: хочется найти связь между словами. Что есть в трансформере для связи элементов последовательности? Внимание («attention»). Поэтому были рассмотрены русские тексты, которые были парафразированы с помощью ruT5. Мы использовали веса этой модели для связи исходных слов и парафразированных, что по своей сути строит граф внутри предложений.

Тогда для всего корпуса текстов, которые были взяты из «Википедии», был получен список пар слов (исходное слово; парафразированное слово; вес внимания). Так как эти пары представляют собой списки смежности, на их основе были посчитаны компоненты связности графа. С помощью посчитанных компонент связности слова были объединены по кластерам.

На рисунке 2 представлен граф, который был создан с помощью весов внимания. Синие блоки — это парафразированные слова. Для каждого парафразированного слова были объединены все исходные слова, с которыми оно имеет связь больше, чем 0,99. После этого мы объединяем полученные списки: если в парафразированных словах есть слово «папа», то соединяем списки для данного слова. На рисунке 3 приведён ещё один из способов объединения: каждый список сопоставляется с последовательностью кластеров, с которым у него есть пересечение слов. Тогда мы выбираем порог пересечений и объединяем слова из отобранных кластеров. К сожалению, как и в случае с UWN, проблема дубликатов слов остаётся открытой и остаётся доминирование одного кластера над другими, который в себе содержит большое количество слов. Но стоит отметить, что данный метод более эффективен:

— количество кластеров размером 1 намного меньше,

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

Оценка качества в данном случае проводилась с помощью метрики парафраза и метрики поиска кандидатов.

Рисунок 2. Граф, созданный с помощью механизма внимания. Способ объединения 1
Рисунок 3. Граф, созданный с помощью механизма внимания. Способ объединения 2

Что-то о запрещённом?

И тут мы оказались в тупике. Что делать дальше, если мы не можем распределить равномерно слова по кластерам, так чтобы не появился один «монополист» или множество дубликатов слов? Озарение... FAISS. Библиотека, разработанная Facebook AI Research для эффективного поиска сходства и кластеризации векторов. С самим подходом и его преимуществами можно ознакомиться тут: FAISS GitHub и описание FAISS. Нас интересовали не индексация и поиск кандидатов с помощью данного подхода, а использование внутреннего алгоритма построения кластеров для векторных представлений. На основе созданного словаря токенов из «Википедии» были построены векторные представления с помощью модели fastText. В нашем случае мы выбрали индекс IVFp,Flat (p — количество центроид, которое мы подбирали), набор данных разделяется на множества. Создаются ячейки Вороного в m-мерном пространстве (m — размерность векторного представления), где каждый вектор базы данных попадает в ячейку. Рисунок показывает, как это выглядит. Полученные кластеры получились более равномерные, но есть свои особенности — некоторые слова объединялись из-за морфемного сходства. Например, «окончание», «примечание», «молчание» и так далее. То есть слова абсолютно не связаны, но из-за того, что морфемный состав слов похож, произошло объединение. Но это больше, в свою очередь, зависит от векторных представлений. Мы экспериментировали и пробовали брать, например, BERT, который составляет контекстно зависимые эмбеддинги, но тогда мы столкнулись с тем, что слова из одного предложения входили в один кластер, так как их векторные представления близки.

Рисунок 4. Кластеризация FAISS

Вы думали, что это конец, а это только начало...

Зачем останавливаться на создании монокластеров? Путь самурая тернист, поэтому мы стремимся к невозможному... Мультиязычным кластерам. Так как переводчик — ресурсозатратный метод, надо уменьшить его использование для скорости работы нашего алгоритма. В этом нам поможет сервис UWN — Universal Wordnet Project with MENTA extensions. Сервис, который для каждого слова может найти аналоги на других языках. Данный подход основан на базе английских слов WordNet и был модифицирован для многих языков — если конкретнее, то для 200. UWN может дать соответствующий список слов и показывает, насколько эти слова близки. Рассмотрим точнее наш алгоритм, изображённый на рисунке 5. Для каждого слова wi из корпуса английских слов WordNet мы находим топ-1-тему, соответствующую ему (также с помощью WordNet).

Тогда из сервиса UWN выводится список для рассматриваемого слова и темы:

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

Тут как раз мы сразу столкнулись с проблемой, которую пытались решить долгое время. Если мы делаем объединение по одному слову, то получаем один огромный кластер, который покрывает почти весь словарь слов. Можно, конечно, объединять не по одному слову... Но! Во-первых, тогда сразу возникает проблема с дубликатами слов, что «замок» может оказаться в кластере «замок, башня, здание, рыцарь ...» или «замок, ключ, дверь, ручка, открыть...». Во-вторых, ограничивая количество кластеров для объединения, мы можем потерять некоторый смысловой контекст для слова.

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

Рисунок 5. Алгоритм создания кластеров с помощью UWN

Список литературы

[1] Chia-Yang Chang, Shie-Jue Lee, Chih-Hung Wu, Chih-Feng Liu, and Ching-Kuan Liu. Using Word Semantic Concepts for Plagiarism Detection in Text Documents. Information Retrieval Journal, 24: 298–321, 2021.

[2] Seyed Vahid Moravvej, Seyed Jalaleddin Mousavirad, Diego Oliva, and Fardin Mohammadi. A Novel Plagiarism Detection Approach Combining BERT-based Word Embedding, Attention-based LSTMs and an Improved Differential Evolution Algorithm. arXiv preprint arXiv:2305.02374, 2023.

[3] Johannes Stegmüller, Fabian Bauer-Marquart, Norman Meuschke, Terry Ruas, Moritz Schubotz, and Bela Gipp. Detecting Cross-Language Plagiarism Using Open Knowledge Graphs. arXiv preprint arXiv:2111.09749, 2021.

[4] Benno Stein and Sven Meyer zu Eissen. Near Similarity Search and Plagiarism Analysis. In From Data and Information Analysis to Knowledge Engineering[MOU1] : Proceedings of the 29th Annual Conference of the Gesellschaft für Klassifikation e.V., University of Magdeburg, March 9–11, 2005, pages 430–437. Springer, 2006.

0
1 комментарий
Ярослав Прокудин

Векторный поиск и использование графа семантических знаний — просто удивительные идеи

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда