Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
Скрипты полностью написаны на основе моего ТЗ DeepSeek, знания Python у меня, конечно, не околонулевые, но близки к этому. Поэтому прошу строго не судить структуру кода, его оптимизацию и прочие моменты. Основная задача — работоспособность и упрощение жизни специалистов.
Что за скрипты?
Всего 3:
- Кластеризатор — на основе метода IT AGENCY.
- N-GRAM анализ — более удобный, чем все доступные сейчас решения на рынке.
- Составление частотного словаря — когда нужно быстро проанализировать список поисковых запросов (разбивает их на отдельные слова).
Предпоготовка
1. Заходим на https://www.python.org/downloads/release/python-3132/ и скачиваем версию Python.
2. Далее скачиваем PyCharm — https://www.jetbrains.com/pycharm/download, нужно скачать именно PyCharm Community Edition (она бесплатна).
3. Далее нужно скачать мои скрипты (N-GRAM + Кластеризатор + счетчик) и далее следовать инструкции — https://disk.yandex.ru/d/NqV7oM6Ace-62w.
4. Нужно их открыть — достаточно выбрать папку.
5. Если при выполнении вдруг выдает ошибку «no module», нужно перейти в терминал в PyCharm и использовать команду «pip install библиотека» (выдаст многовероятно).
6. Также, иногда, будет требовать pkg_resource. Но это решается через установку pip install setuptools
Во всех остальных случаях используем DeepSeek для решения любой из ошибок. Скидываем скрипт, скидываем ошибку и получаем ответ.
Как запускаем скрипты
Кластеризатор
Давайте разбираться с кластеризатором. По сути: он разбивает слова на нормализованные значения (леммы), считает вес каждого слова (на основе его частотности — доли + упоминаний) и проставляет названия групп нашим фразам исходя из приоритета этих слов.
Дополнительно: так как предлоги имеют не очень большой вес, я их сразу исключил. Также можно использовать исключения в любой словоформе, они не будут использованы для формирования названий групп.
Применяется данный скрипт после полной минусовки всей семантики. Кластеризовать нужно чистую семантику.
В результате мы получаем вот такой список. Где:
- Group — название группы (тут как раз порядок в названии выстроен исходя из слов, входящих в фразу в лемматизированном значении, исходя из их «веса»).
- Original Phrase — оригинальная фраза в исходном виде.
- Processed Phrase — нормализованная фраза, без предлогов.
- Frequency — частота фразы.
- Frequency Share — доля частотностей каждого слова (чисто справочная информация, можно не обращать внимание).
- Group Total — суммарная частотность по группе, значение фиксируется, даже если строк несколько — обратите внимание на группу «бумеранг | москва».
Алгоритм работы:
- Добавляем исходную семантику в файл input.csv. В формате: ключ;частотность (заголовки не нужны).
- Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой Process finished with exit code 0).
- На выходе получаем результат в файле output.csv.
- Дальше можно копировать в любые гугл-таблицы и использовать кластеризацию. Уточнять, укрупнять.
- Осталось поговорить о файле excluded_words.csv — сюда можно задать любые слова, которые не будут учтены в долях частотности + не будут использованы в проставлении названий групп — то есть мы уменьшаем количество групп (укрупняем структуру). УЧТИТЕ, что Keyword в файле — обязательный заголовок.
Чтобы исключить слова, надо просто перезапустить скрипт и он выдаст вам новый список.
N-GRAM анализ
Разбираем N-GRAM анализ. Как работает: он разбивает все наши поисковые запросы на отдельные слова: это могут быть униграммы — 1 слово, биграммы — 2 слова, триграммы — 3 слова. А потом для каждой из этих «связок» считает показатели — показы/клики/расход/конверсии/CPL. На основе этой информации нам не нужно ждать статистику по множеству поисковых запросов, а мы можем их усреднить на основе вхождения данных фраз и найти зависимости.
Что делает скрипт:
- Удаляет предлоги
- Приводит леммы слов – нормализация
- Делает анализ не только униграмм, а еще биграмм и триграмм.
- Использует теги, если нужно сделать за раз N-gram анализ по разным продуктам/кампаниям.
- Позволяет делать исключения, задавать прямые значения, иногда надо, так как словарь исходных слов оказывается очень “интересным”.
- Складывает все эти листы в 1 xls файл под нужными именами
- Также в файл на выходе добавляет: исходный лист от которого делался анализ, рядом с фразой – нормализованная фраза (проверить что на что поменялось – предлоги при этом сохраняются чтобы было понятен смысл фразы) и словарь лемм, полезно, если нужно сделать исключения (пример: детей, дети – ребенок, да начальна форма у этого слова ребенок )
Все это делает автоматически за секунд 20. Экономия времени огромная, работает быстрее.
Предлоги – исключаем, так как они не несут лексического смысла. Лемматизацию делаем тоже для этого, хотя я оставил возможность посмотреть исходную группу.
Обязательная возможность использовать слова исключения для “кривой” лемматизации. Иногда меняет значения не на то, что нужно, но редко).
В результате мы получаем готовый файл, который можно просто выгрузить и сразу начать анализировать.
Алгоритм работы:
- Готовим выгрузку для файла input.csv. Нужно сохранить заголовки, без них работать. не будет.
Выгружаем данные из Директа и меняем названия колонок (для этого достаточно применить функцию «Текст по столбцам», а названия скопировать с файла инпута). Только не забудьте про столбец «Тег» — он нужен для разделения разных продуктов, но если продукт 1, можете не проставлять ничего.
Сохраняем файл в формате CSV. Дальше этот файл можно использовать, достаточно открыть его в любом текстовом редакторе и скопировать оттуда данные и можно их вставлять в input.csv. ВАЖНО: список поисковых запросов лучше сохранять для накопления данных. Используете 1 файлик для складирования и для забора данных оттуда для скрипта.
- Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой – Process finished with exit code 0)
- На выходе получаем результат в файле output.xls. Можно открыть его сразу в экселе.
- Дальше можно копировать в любые гугл таблицы и проанализировать.
Частотный словарь
Разбираем частотный словарь. Иногда глаз замыливается, и когда нам нужно найти, какие одиночные слова находятся в конкретном списке фраз, можно использовать данный скрипт. Он разбивает все фразы на отдельные слова и считает количество их упоминаний. Обычно используем, когда пытаемся найти новые словоформы для масок после парсинга подсказок или «ЭХО» Вордстата.
Алгоритм работы:
- Берем любой список фраз из любого места и вставляем его в файл phrases.csv.
- Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой – Process finished with exit code 0)
- На выходе получаем результат в файле word_counts.csv. Слово и количество его упоминаний.
4. Дальше можно копировать в любые гугл таблицы и анализировать.
На этом всё, применяйте скрипты в работе, пишите свои, сейчас время автоматизации.
Подписывайтесь на мой ТГ канал, там первыми выходят все технические штуки)