Разделение по шинглам (shingling) — это метод обработки текста, при котором он разбивается на перекрывающиеся последовательности слов или символов, называемые шинглами. Этот метод часто используется для сравнения текстов, определения плагиата или дубликатов.
🔹 Что такое шинглы?
Шингл (n-грамма) — это подпоследовательность из n
слов или символов, идущих подряд в тексте.
Например, если взять фразу:
«Искусственный интеллект — это будущее»
и применить шинглы из 3 слов (т.е. 3-граммы), получится:
- «Искусственный интеллект это»
- «Интеллект это будущее»
Если использовать символьные шинглы длины 5:
«Текст»
получим:
- «Текст» (если меньше 5 символов — один шингл),
- для «Искусственный», например: «Иску», «скус», «куст», …, «венный» (сдвиг по одному символу).
Применение метода для удаления ватермарок в тексте
Контекст ватермаркинга:
В последнее время алгоритмы генеративного искусственного интеллекта могут использовать так называемые «водяные знаки» для метки сгенерированного текста. Это могут быть неявные статистические паттерны или определённые распределения шинглов, которые трудно подделать при обычном написании человеком.
Возможные подходы с использованием шинглинга:
- Анализ распределения шинглов:
Если известно, что в тексте присутствует водяной знак, основанный на специфическом выборе или частоте определённых последовательностей, можно с помощью шинглинга провести детальный анализ распределения n-грамм в тексте. Например, если какой-то набор шинглов встречается с гораздо большей частотой, чем можно ожидать статистически, это может служить признаком искусственного водяного знака. - Идентификация характерных паттернов:
После выявления подозрительных шинглов, соответствующих водяному знаку, можно попытаться определить закономерности – возможно, определённые фразы, обороты или последовательности, которые были преднамеренно внедрены в текст. - Модификация текста:
На основе анализа можно применять алгоритмы перефразирования или замены слов и выражений, чтобы «разбить» повторяющуюся схему. Такой подход может быть реализован путём:- Замены слов синонимичными, что изменит конкретные шинглы при сохранении смысла;
- Изменения порядка слов или перестановки фраз, что также изменит последовательность шинглов;
- Использования моделей перефразирования для генерации альтернативных формулировок.
- Циклическая проверка:
После внесения изменений можно снова применить шинглинг для оценки распределения n-грамм, чтобы убедиться, что характерные паттерны водяного знака исчезли или стали нераспознаваемыми для систем детекции.
Важные замечания
Техническая сложность:
Водяные знаки могут быть встроены достаточно тонко – то есть изменение распределения шинглов должно происходить так, чтобы не повредить семантическую и стилистическую целостность текста. Автоматическая замена может ухудшить читаемость или создать логические несоответствия, если применяется некорректно.
Защита от обхода:
Если системы детекции водяных знаков будут знать, что применяется метод шинглинга для их обхода, они могут совершенствовать алгоритмы с учётом этого фактора, используя, например, более комплексные статистические модели или машинное обучение для определения исходных паттернов.
🔹 Как с помощью шинглов убрать ватермарки из ИИ-текста?
Ватермарки в тексте — это скрытые паттерны (например, выбор определённых слов, фраз, структур), вставленные в текст с целью идентификации, что он сгенерирован ИИ. Некоторые языковые модели добавляют такие «подписи» специально — например, с предпочтением определённых н-грамм.
Как использовать шинглы, чтобы детектировать или устранить эти следы:
- Собери корпус «подозрительных» текстов, предположительно сгенерированных одной ИИ-моделью.
- Раздели эти тексты на шинглы (например, 3- или 4-граммы слов).
- Построй частотный словарь шинглов: какие шинглы часто встречаются именно в этих текстах, но редко в человеческих.
- Определи подозрительные шинглы — то есть высокочастотные именно в ИИ-текстах (как watermark-подобные признаки).
- В новом тексте:
- выдели его шинглы,
- сравни с «водяными» шинглами,
- если совпадений много → вероятен ИИ-происхождение,
- можно заменить эти шинглы на синонимы / переписать локальные фрагменты, чтобы «размылить» след.
- При необходимости — перегенерировать подозрительные участки (например, через перефразирование или синонимию).
🔧 Популярные библиотеки для очистки текста
1. clean-text
Простая библиотека для быстрой очистки текста от HTML, символов, эмодзи и прочего.
📦 Установка:
bashКопироватьРедактироватьpip install clean-text
📄 Пример:
pythonКопироватьРедактироватьfrom cleantext import clean
text = "Some junk 😊 text! Visit https://example.com <br>"
cleaned = clean(
text,
no_emoji=True,
no_urls=True,
no_html=True,
no_punct=True,
lowercase=True
)
print(cleaned)
2. textacy
Библиотека для комплексной обработки текста (включает spaCy).
📦 Установка:
bashКопироватьРедактироватьpip install textacy
📄 Пример очистки:
pythonКопироватьРедактироватьimport textacy.preprocessing as pre
text = "Visit us at https://example.com! 😊"
text = pre.replace.urls(text, "") # удаляет URL
text = pre.replace.emojis(text, "") # удаляет эмодзи
text = pre.replace.punctuation(text, "") # удаляет пунктуацию
print(text)
3. nltk
или spaCy
Если нужна не просто очистка, а нормализация, лемматизация, фильтрация по частям речи — лучше использовать:
nltk
— базовый набор для NLPspaCy
— мощнее, быстрее, лучше для продакшн
🔍 Для удаления watermark-паттернов
Прямо готовой библиотеки для удаления watermark-следов ИИ нет, но можно собрать свой пайплайн, используя:
clean-text
илиtextacy
— для базовой очисткиsklearn.feature_extraction.text.CountVectorizer
сngram_range=(3, 3)
— для извлечения шинглов- Построение TF-IDF или частот и удаление часто встречающихся «водяных» шинглов
- Перефразирование подозрительных фрагментов (например, через
transformers
/parrot
/Quillbot
API)
Добавить комментарий