Невидимые символы в скопированном тексте
Текст на экране выглядит безупречно, а ведёт себя странно. Поиск не находит слово, которое явно перед глазами. Ссылка открывает страницу с ошибкой. Кусок кода отказывается запускаться. Часто виноват символ, которого вы просто не видите.
Что это за символы
Текст - это последовательность кодовых точек, и не каждая из них что-то рисует. Обычно виноваты вот эти:
- Символы нулевой ширины (U+200B пробел нулевой ширины, U+200C и U+200D соединители, U+FEFF метка порядка байтов). На экране они не занимают места.
- Знаки направления письма (U+202A - U+202E и похожие). Они задают направление текста. Для арабского или иврита это нужно, а в русском абзаце - зря.
- Мягкий перенос (U+00AD). Показывает, где слово можно разорвать, и виден только когда строка действительно переносится.
- Странные пробелы: неразрывный и целое семейство узких, широких и тонких, которые похожи на обычный, но им не равны.
- Типографская пунктуация: изогнутые кавычки, длинное тире, многоточие одним знаком, маркеры и стрелки.
Последнюю группу видно, но это другой символ, не тот, что на вашей клавиатуре. Программы с ним часто обращаются иначе, чем вы ждёте.
Откуда они берутся
Чаще всего из обычного копирования:
- из окон чатов и веб-страниц: вёрстка добавляет мягкие переносы или пробелы нулевой ширины, чтобы управлять разрывом строк;
- из текстовых редакторов, которые на лету меняют прямые кавычки и дефисы на «умные»;
- из переводчиков и из PDF: при извлечении текста там появляются странные пробелы и рваные слова;
- из документов, которые прошли через несколько программ, и каждая оставила свой след.
Никто ничего дурного не задумал, так путешествует текст. И мы не утверждаем, что какой-то конкретный сервис нарочно вставляет невидимые символы в свои ответы: данных, чтобы так говорить, у нас нет.
Чем они мешают
- Ломается поиск. Слово со скрытым символом внутри - уже другая строка. «Договор» и «дого[нулевая ширина]вор» не совпадут.
- Появляются странные различия. Две строки выглядят одинаково, а программа считает их разными.
- Код и адреса не работают. Хватит одной изогнутой кавычки в команде или пробела нулевой ширины в ссылке, чтобы всё встало. Сообщение об ошибке при этом редко объясняет причину.
- Антиплагиат сбивается. Скрытые символы и подмена пробелов меняют разбиение на слова, и совпадения то пропадают, то находятся не там.
- Едет вёрстка. Видны странные просветы, строки не переносятся или рвутся не в том месте.
Как найти и очистить
В AuthorText для этого два способа.
Первый - проверка. Она подсвечивает в тексте символы, похожие на водяные знаки, и типографику, так что вы видите, где они сидят, и не гадаете. Детектор знает 259 таких кодовых точек: символы нулевой ширины, мягкий перенос, невидимые операторы, знаки направления, селекторы вариантов, теговые символы, символы частного использования и ещё кое-что.
Второй - инструмент «Очистить и нормализовать». Он убирает эти символы и приводит типографскую пунктуацию к обычному ASCII: прямые кавычки, простой дефис, три точки. Результат сначала сравните с оригиналом.
Порядок такой:
- Вставьте текст в проверку и посмотрите на подсвеченные места.
- Решите, нормализовать всё (для кода, адресов и данных обычно да) или только часть.
- Запустите очистку и сравните.
Одно предупреждение: длинное тире в художественном тексте может стоять не случайно. Для технических текстов нормализация уместна. В прозе - как захотите.
Совсем другое: статистические водяные знаки
У слова «водяной знак» есть второй смысл, и его лучше держать отдельно. Исследователи предлагали метить языковые модели на уровне токенов. Во время генерации модель слегка подталкивают к определённым словам по схеме, которую потом может проверить тот, у кого есть ключ.
Такой знак не состоит из символов. Никакой кодовой точки в тексте не спрятано, он сидит в выборе слов. Поэтому программа очистки его не найдёт и не уберёт. AuthorText и не заявляет, что его обнаруживает: наш анализ смотрит на стиль, а не на секретный ключ. Невидимые символы и статистические водяные знаки - две разные темы, и первая ничего не говорит о второй.
И ещё. Скрытые символы не значат, что текст написал ИИ, а их отсутствие не значит, что писал человек. Они говорят лишь о том, как текст копировали, а не о том, кто его сочинил.
Что делать
Прежде чем публиковать, отправлять или запускать скопированный текст, взгляните на него один раз. Проверьте текст, чтобы увидеть скрытые символы и типографику, а когда нужен обычный ASCII, воспользуйтесь «Очистить и нормализовать». Если у вас есть и другие основания подозревать текст, наше короткое руководство по признакам ИИ-текста расскажет, на что ещё смотреть и почему это не доказательство.