Ваш SEO текстовый анализатор 💩! Часть 2

<br />

Первая часть тут

Порядок слов важен!

Перейдем сразу к делу без лирики. Как я писал ранее, Яндекс, Google и большие языковые модели, такие как, Chat GPT, получают текст на вход и далее оцифровывают его в виде матриц, которые в зарубежной литературе называют векторами или эмбеддингами. Так, например, слово «окно» модель Gecko от Google преобразует в матрицу размерностью [1, 768] или в вектор начало которого лежит в нулевой точке, а конец лежит в точке с координатами указанными в матрице [1, 768].

В чем суть? В том, что процессе обучения векторы некоторых слов удивительным образом оказываются направленны в одно и то же место в 768 мерном пространстве. Условно говоря, лодка, рыбак и рыба смотрят в одну сторону, а бампер, фара, радиатор и руль в другую область пространства. Подробнее тут, тут и тут , а семантические эмбеддинги Яндекс применил ещё в 2016 году . Меру схожести векторов считают с помощью косинусного сходства .

Ваш SEO текстовый анализатор 💩! Часть 2

Причем тут SEO?

Первое и самое простое решение, о котором все SEOшники знают давным давно – это найти вспомогательные слова, или как их называют LSI фразы. Казалось бы, куда проще, прогони корпус русского языка через модель, надергай близких по смыслу слов и ТОПы обеспечены. Вот, кстати, бесплатный бот, который поможет в этой задаче. Но есть одна проблема и вот её суть:

Авиабилеты Москва - Дубай и Авиабилеты Дубай – Москва. Набор слов один и тот же, смысл разный. Эту задачу решают нейросети трансформеры, которые как раз научились учитывать порядок слов, сошлюсь на фундаментальный труд от Яндекса.

Проведем эксперимент, посмотрим меру cs (косинусного сходства) между ключом и предложением с помощью @words_comparison_bot.

1 пара:

Ключ: пластиковые окна

Текст: Покупайте пластиковые окна в компании Оконика со скидкой в Москве недорого с установкой и бесплатной гарантией.

cs = 0.8

2 пара:

Ключ: пластиковые окна

Текст: В компании Оконика покупайте недорого со скидкой и установкой с бесплатной гарантией пластиковые окна в Москве.

cs = 0.73

Если учесть, что минимальное значение, которое я видел 0.3, проведем вычисления (0.8-0.73)/(1-0.3)*100% = 10%. Разница не столь значительна, но ощутима. Скажите, вам знакомо, чувство, когда вы вылизали посадочную по вхождениям, чуть проспамили, употребили весь LSI арсенал, а она, сволочь такая, даже не шелохнулась? В чем же дело? Порядок слов в предложении зашит на уровне архитектуры нейросети с помощью метода positional encoding (позиционное кодирование.) Позиция каждого слова кодируется с помощью позиционного эмбеддинга* (вектора), а итоговый эмбеддинг – сумма из эмбеддинга слова и эмбеддинга его позиции.

Ещё раз! Итоговый вектор = вектор слова + вектор позиции слова

Что это значит для SEO?

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

Подведем итог первой части, порядок слов – важен!

Главное – отнощение “М. Гребенюк” :-)

Краеугольным камнем архитектуры трансформеров (BERT, GPT, YATI, LLAMA и тому подобное) является механизм внимания.

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

Представьте, что у нас есть предложение:

“Машина быстро едет по дороге”.

Мы хотим понять, какое слово в предложении наиболее важно для слова “едет”.

Как это работает?

1. Вычисление значимости (Attention Scores): Для каждого слова в предложении мы вычисляем оценку значимости по отношению к текущему слову (например, “едет”). Это делается через умножение векторов, представляющих слова, и применение некоторых функций (например, softmax). Допустим , оценка значимости для слова

“Машина” по отношению к “едет” может быть 0.2, для “быстро” - 0.7, для “по” - 0.05, и для “дороге” - 0.05.

2. Взвешивание слов: Эти оценки значимости используются для взвешивания всех слов. То есть мы умножаем каждое слово на его оценку значимости.

“Машина” * 0.2 • “быстро” * 0.7 • “по” * 0.05 • “дороге” * 0.05

3. Создание нового представления (Context Vector): Все взвешенные слова суммируются, чтобы создать новый вектор представления для текущего слова (“едет”). Это новое представление лучше учитывает контекст, так как включает информацию о том, какие слова были наиболее значимыми.

Новый вектор для “едет” будет в основном состоять из “быстро”, так как это слово имеет наибольшую значимость.

А теперь давайте посмотрим, пусть будет: Эммануэль Макрон в машине быстро едет по дороге.

Какой теперь должен быть context vector? Видите, как всего два слова напрочь сломали весь контекст? О чем он теперь, про машину или про политику?

Что делать? Или итоговые выводы

1) Времена простых решений уходят, SEO текстовые анализаторы, которые сейчас есть на рынке… как-то работают и, что-то показывают.

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

4) Небезызвестный Андрей Буйлов порекомендовал один буржуйский ресурс, который дал ему реальный буст на ряде проектов, работающий как раз на нейросетях, https://neuronwriter.com/

PS Мой канал Python SEO 2 Нейрона в котором я, доступным языком, на примерах объясняю как работают нейросети и как это использовать в SEO.

88
12 комментариев

Кмк, пример с Макроном проблемный. В тексте появляется именованная сущность, и весь текст начинает оцениваться уже в совсем новой плоскости.
Для себя я пока сделал несколько выводов:
а) Каннибалка на объёмах теперь выщёлкивается на раз-два. Грубо говоря, машина куда как легче поймёт, что "пошел отседова", "вали нафиг" и "сударь, извольте покинуть сию обитель" - это про одно.
б) Для проектов в сложных тематиках или с большим объёмом инфо-контента - инструментарий мастхав. Листингам товаров это не нужно.
в) То, что хорошо зашло в выдачу на первичном ранжировании (где рулят всё те же вхождения), а потом съехало, стоит оценивать и с этой точки зрения, потому что машина по итогам могла определить страничку как "не про то".
г) Подход оценки семантики "в ширину" своё отжил, контекст рулит.

2

б) согласен там коммерчский ранж
в) тут ПФки однозначно, такое бывает, когда контент не отвечает ожиданиям пользователя.
г) смотря как оценивать. YATI он же специфически оценивает, у него там не совсем трансформер. грубо говоря, если закопать LSI в подвале где нибудь без ключа в какой либо близости - да согласен, толку от такой ширины не будет. По Гуглу мне Буйлов показывал реальные кейсы, как после обработки нейросетью, внедрение LSI итд +40 по позициям

Пока еще ни одна модель не научилась предсказывать будущее, каким будет итоговая таблица для идеального документа. А будущее это формируется от взвешивания пф и скорее обратной оценки текста. Поэтому можно пользоваться анализаторами "которые что то там показывают", можно пользоваться чем угодно потому что они все равно показывают прошлое. Иначе никак нельзя объяснить серп с 50/50 логридами и полупустыми доками в коммерческой выдаче.

ПФ - всё же другая уже сфера. А семантические инструменты такого рода вполне годны для
а) Проверки работы райтеров. Простая суммаризация текста может показать, что текст малость не о том.
б) Можно быстро проанализировать, содержит ли контент ответы на ожидаемые вопросы - просто PAA через API и скормить тому же чатЖПТ или Gemini, и пусть ищет, есть это в конкретной статье или на сайте вообще.
в) В принципе оценить семантическую релевантность запросу, можно на сравнении с конкурентами в топах для дальнейшего анализа.
Это не вундерваффе в борьбе за топы, но в качестве инструмента - полезнейшая вещь.

2

Зря вот это
даже векторные модели первой итерации w2v канули в прошлое.

На практике до вас (не в паблике) я реализовал на Берте подобный функционал. Но у него есть огромный минус.
Пока сравниваешь похожие ключи - все отлично. Но стоит сравнить вообще 2 неревантные фразы, так алгоритм показывает очень хорошую схожесть, что сильно выбешивало.
При это тот же word2vec отлично работал на таких примерах.
Как я понял причина в слишком большой мерности, что приводит к тому что почти все фразы друг другу релевантны, так как в n-мерном пространстве стирается грань.

Хорошая схожесть это как какой разброс между хорошими и плохими? Я сейчас эксперементирую с 4-мя моделями, писал об этом на vc. Закидываю пару ключ-текст и смотрю близкие фразы и у всех очень сильно отличается разброс между цифрами при том, что результаты для первых 100 похожих слов коррелируют плюс-минус. Для справки у 2-й модели размерность [1,1536] у 3-й [1,1024] и у них как будто разброс меньше

1