Хабр, GPT, корпоративные блоги и БМЛы: оцениваем глубины ужаса
Я не испытываю ненависти ни к корпоративным блогам, как таковым, ни к большим языковым моделям в целом. А вот к мусорному контенту, созданному левой пяткой ради ссылок на сайт или телеграм-канал — испытываю, и еще как. И как раз вот тут встретились два одиночества — ленивые копирайтеры мусоропроизводители и генеративные сети. Получилась, как вы понимаете, вовсе не конфетка.
Долго работая с LLM и GPT, неизбежно начинаешь замечать характерные паттерны, обороты, формулировки, характерные для генеративного контента. Наткнувшись на очередную очевидно генеративную статью и убедившись, что из таких статей у компании состоит весь блог, я решила исследовать это дело подробнее и желательно — автоматически.
За подробностями, результатами, ужасом и даже кодом на VB.NET приглашаю под кат!
Безмозглолитератор
Итак, представим, что вы… ммм, копирайтер? Да нет, вы же не пишете текст руками и головой. Может, Оператор Нейросети? Нееет, не пойдет, вы же не умеете и не хотите хоть немножко постараться и сделать хорошо. Может, вы хотя бы котик и у вас лапки? Тоже нет, вы не милый и не пушистый. Как же вас назвать? А давайте спросим у GPT!
Это Playground OpenAi, он довольно удобен для отладки запросов
Ладно, сойдет. Для краткости будем писать БМЛ. Человек вы не очень хороший, но кушать все-таки хотите. Почему-то вас еще и берут на работу (платят мало, так что можно устроиться сразу во много мест, ведь кроме Левой Пятки у вас есть еще много частей тела, для серьезной работы не предназначенных).
В общем, сидите, ковыряете в носу. Прилетает задача «написать статью в блог про смену работы на Хабр». Вы не айтишник, понятия не имеете, что там и как, да и работать не хочется. Хорошо, что есть LLM, думаете вы, пусть вкалывают роботы!
Начнем! «Напиши статью о том, как искать новую работу тестировщиком»
Ага, что-то пишет! Но как будто бы введение коротковато, да и где-то краем уха вы слышали, что начинать надо обязательно с какой-нибудь истории, чтобы, понимаешь, зацепило!
«Добавь побольше чего-нибудь во введение, начни с какой-нибудь прикольной истории…»
Вооот, так гораздо лучше. Кстати, разметка-то Markdown, удобно вставлять на Хабр!
Оп, и готово!
Но как-то маловато текста! За такое дадут разве что миску риса, а вы — БМЛ Заслуженный Повелитель Нейросетей и Мастер Копирайтинга — заслуживаете куда большего. Пусть роботы вкалывают активнее!
«Шаг 1 распиши подробнее, где-нибудь так страницы на две»
Отлично, отлично! Две секунды, а уже так много знаков! И вроде всё по делу, слова такие знакомые, программистские… А, мы вроде пишем про тестировщика? Пффф, да какая разница! Повторяем процедуру для других шагов, и статья готова.
Постойте-ка. Чего-то не хватает. Точно, нужна же картинка, Васян говорил на прошлой пьянке, что это повышает… Эх, не вспомнить. Но что-то повышает точно.
«Нарисуй картинку к статье про поиск работы тестировщиком»
Вот, теперь отлично! Вы создали прекрасный пост за 5 минут, выглядит совсем, как настоящий, и при этом — совсем не устали, да голова тоже особенно не пригодилась.
Особенности GPT-стиля…
Попробуем посмотреть, что выделяет такие статьи.
Очень, очень большое количество воды и общих рассуждений. А что вы хотели получить, если попросили написать «что-нибудь» одной строчкой?
Если есть «истории» или «примеры», они шаблонны и характерны.
«Когда-то где-то там-то кто-то столкнулся с большой проблемой, но он не унывал, а благодаря своим лучшим качествам что-то сделал, и стало хорошо. Этот кто-то вдохновился и стало еще лучше! Вот так благодаря всему хорошему стало совсем хорошо. Конец.»Относительно небольшие абзацы, обычно с заголовком — «шаги», «этапы», «преимущества и недостатки». В целом — много структуры и мало текста.
Списки, обязательно списки. Заголовок, пара предложений общими словами, список из 3–5 пунктов, каждый пункт в духе:
«Сделать бочку: Делать бочку позволяет вам лучше погрузиться в интернет среду»
«Изучить мурчание: Изучение мурчания помогает вам быть хорошим котом»Характерные речевые обороты и слова: «важно учитывать», «убедитесь, что», «существует множество», «рассмотрите возможность», «общайтесь, посещайте, участвуйте». Обтекаемые формулировки, повелительное наклонение. В общем-то эти обороты не уникальны для любых текстов, но тут их количество просто зашкаливает.
… и как их искать
Вообще, способов можно придумать много и разных. Мне в первую очередь бросается в глаза аномально большое количество двоеточий и пунктов списков, а подсчитать их плотность в среднем на статью — совсем несложно.
Еще идеи:
Можно посчитать среднюю длину пункта списка и разброс длины от средней, у нейронки разброс небольшой, у людей — больше.
Можно составить словарь характерных слов, и наоборот, слов, которые практически не встречаются в генерации. Если специально не попросить, нейронка слово «жопа» не напишет.
Можно посчитать концентрацию повелительных глаголов, как я уже писала, у GPT4 по каким-то причинам их заметный избыток.
Наконец, можно попросить GPT саму оценить статью с точки зрения генеративности, как увидите ниже, это неплохо работает.
Парсим и анализируем Хабр
Откроем DevTools в любимом браузере и походим по страничкам какой-нибудь компании. Для примера возьмем сам Хабр.
kek v2
Удобно, что текущий интерфейс — SPA, который загружает список статей и сами статьи через API, где они доступны в приятночитаемом JSON. Легко находим нужный запрос, он имеет вид:
habr.com/kek/v2/articles/? company=habr&fl=ru&hl=ru&page=1&perPage=20
Проверяем — оно
Внутри нас интересует узел «publicationIds», внутри которого — список идентификаторов статей. Таким же образом находим адрес, отдающий статьи целиком:
habr.com/kek/v2/articles/1
Для автоматизации этого дела напишем программку на VB.NET. Почему на нем? А я странная, мне нравится когда-то давным-давно начинала с бейсика, потом VB6, потом VB.NET, в котором синтаксического сахара и плюшевости долгое время было больше, чем в C#, да как-то так и прижилось.
Парсинг тривиален. HttpClient, Newtonsoft.Json для разбора JSON, Textify для преобразования HTML в plain text.
Парсинг
Комментировать особенно нечего. Последние две строчки — доли двоеточий и звездочек (в начале элемента списка после преобразования в текст).
Кроме таких простейших подсчетов, попробуем просто спросить GPT-4o, похожа ли статья на генеративную или нет, используя вот такой запрос:
«Оцени, написана ли статья человеком или GPT. Напиши только одно число от 0 до 100, где 0 — статья точно написана человеком. 100 — статья точно написана GPT.»
Проверим, что результат — число от 0 до 100, если нет — спросим еще раз. Если не получилось за 5 раз — ну что же, не судьба, идем дальше. В конце сохраним полученные цифры в файл CSV.
Остаток кода
Анализируем результаты
«Плохой» корпоративный блог
Сначала откроем получившиеся таблички и посмотрим глазами. Вот пример «плохого» корпоративного блога, в котором все или практически все статьи нагенерированы нейронкой. При этом их кто-то читает, хотя рейтинг плавает от нуля до десяти.
Средняя доля двоеточий: 0.28%
Средняя доля звездочек: 0.26%
Средняя оценка GPTшности с помощью самой GPT — 85% и очень равномерна.
«Хороший» корпоративный блог
К счастью, не все владельцы корпоративных блогов такие халтурщики, во многие из них статьи пишут живые авторы и эти блоги интересно читать, что легко заметить по оценкам — средняя: 70.
Средняя доля двоеточий: 0.25%
Средняя доля звездочек: 0.05%, в пять раз меньше
Средняя оценка GPTшности с помощью самой GPT — 40% и сильно плавает.
Я человек и тоже люблю двоеточия
Доля двоеточий оказалась не так интересна, хотя и заметен больший разброс в «человеческом» блоге.
Я GPT и я люблю списки
А вот со звездочками, они же — пункты списка, всё нагляднее. Любит GPT списки!
Красиво!
Зато GPT прекрасно опознает свое же творчество!
Такие дела
«Почему же наш блог не любят? Наверное, конкуренты минусуют!»
Мне кажется, всё довольно наглядно. Предлагайте или пробуйте свои метрики и признаки в комментариях.
Что с этим делать?
Если вы компания — владелец корпоративного блога — НЕ ПИШИТЕ в блог подобный мусор! Безмозглолитератора выгоните на мороз! У ваших статей низкий рейтинг — не потому, что блог не раскручен, не потому что конкуренты минусуют, а потому, что вместо статей — мусор. Который портит Хабр, Интернет и вашу репутацию.
Если вы читатель — не плюсуйте статьи, состоящие из воды и генеративного мусора, гоните и насмехайтесь над БМЛами! Не победим — хоть согреемся…
https://file.io/rCZA9IKfn03x — исходники, вдруг кому нужны.