Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Скрипты 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. Нужно их открыть — достаточно выбрать папку.

Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

5. Если при выполнении вдруг выдает ошибку «no module», нужно перейти в терминал в PyCharm и использовать команду «pip install библиотека» (выдаст многовероятно).

Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

6. Также, иногда, будет требовать pkg_resource. Но это решается через установку pip install setuptools

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

Как запускаем скрипты

Кластеризатор

Структура проекта
Структура проекта

Давайте разбираться с кластеризатором. По сути: он разбивает слова на нормализованные значения (леммы), считает вес каждого слова (на основе его частотности — доли + упоминаний) и проставляет названия групп нашим фразам исходя из приоритета этих слов.

Дополнительно: так как предлоги имеют не очень большой вес, я их сразу исключил. Также можно использовать исключения в любой словоформе, они не будут использованы для формирования названий групп.

Применяется данный скрипт после полной минусовки всей семантики. Кластеризовать нужно чистую семантику.

В результате мы получаем вот такой список. Где:

  • Group — название группы (тут как раз порядок в названии выстроен исходя из слов, входящих в фразу в лемматизированном значении, исходя из их «веса»).
  • Original Phrase — оригинальная фраза в исходном виде.
  • Processed Phrase — нормализованная фраза, без предлогов.
  • Frequency — частота фразы.
  • Frequency Share — доля частотностей каждого слова (чисто справочная информация, можно не обращать внимание).
  • Group Total — суммарная частотность по группе, значение фиксируется, даже если строк несколько — обратите внимание на группу «бумеранг | москва».
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Алгоритм работы:

  • Добавляем исходную семантику в файл input.csv. В формате: ключ;частотность (заголовки не нужны).
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой Process finished with exit code 0).
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • На выходе получаем результат в файле output.csv.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • Дальше можно копировать в любые гугл-таблицы и использовать кластеризацию. Уточнять, укрупнять.
  • Осталось поговорить о файле excluded_words.csv — сюда можно задать любые слова, которые не будут учтены в долях частотности + не будут использованы в проставлении названий групп — то есть мы уменьшаем количество групп (укрупняем структуру). УЧТИТЕ, что Keyword в файле — обязательный заголовок.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Чтобы исключить слова, надо просто перезапустить скрипт и он выдаст вам новый список.

N-GRAM анализ

Структура проекта
Структура проекта

Разбираем N-GRAM анализ. Как работает: он разбивает все наши поисковые запросы на отдельные слова: это могут быть униграммы — 1 слово, биграммы — 2 слова, триграммы — 3 слова. А потом для каждой из этих «связок» считает показатели — показы/клики/расход/конверсии/CPL. На основе этой информации нам не нужно ждать статистику по множеству поисковых запросов, а мы можем их усреднить на основе вхождения данных фраз и найти зависимости.

Что делает скрипт:

  • Удаляет предлоги
  • Приводит леммы слов – нормализация
  • Делает анализ не только униграмм, а еще биграмм и триграмм.
  • Использует теги, если нужно сделать за раз N-gram анализ по разным продуктам/кампаниям.
  • Позволяет делать исключения, задавать прямые значения, иногда надо, так как словарь исходных слов оказывается очень “интересным”.
  • Складывает все эти листы в 1 xls файл под нужными именами
  • Также в файл на выходе добавляет: исходный лист от которого делался анализ, рядом с фразой – нормализованная фраза (проверить что на что поменялось – предлоги при этом сохраняются чтобы было понятен смысл фразы) и словарь лемм, полезно, если нужно сделать исключения (пример: детей, дети – ребенок, да начальна форма у этого слова ребенок )

Все это делает автоматически за секунд 20. Экономия времени огромная, работает быстрее.

Предлоги – исключаем, так как они не несут лексического смысла. Лемматизацию делаем тоже для этого, хотя я оставил возможность посмотреть исходную группу.

Обязательная возможность использовать слова исключения для “кривой” лемматизации. Иногда меняет значения не на то, что нужно, но редко).

В результате мы получаем готовый файл, который можно просто выгрузить и сразу начать анализировать.

Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Алгоритм работы:

  • Готовим выгрузку для файла input.csv. Нужно сохранить заголовки, без них работать. не будет.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Выгружаем данные из Директа и меняем названия колонок (для этого достаточно применить функцию «Текст по столбцам», а названия скопировать с файла инпута). Только не забудьте про столбец «Тег» — он нужен для разделения разных продуктов, но если продукт 1, можете не проставлять ничего.

Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

Сохраняем файл в формате CSV. Дальше этот файл можно использовать, достаточно открыть его в любом текстовом редакторе и скопировать оттуда данные и можно их вставлять в input.csv. ВАЖНО: список поисковых запросов лучше сохранять для накопления данных. Используете 1 файлик для складирования и для забора данных оттуда для скрипта.

Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой – Process finished with exit code 0)
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • На выходе получаем результат в файле output.xls. Можно открыть его сразу в экселе.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • Дальше можно копировать в любые гугл таблицы и проанализировать.

Частотный словарь

Структура проекта
Структура проекта

Разбираем частотный словарь. Иногда глаз замыливается, и когда нам нужно найти, какие одиночные слова находятся в конкретном списке фраз, можно использовать данный скрипт. Он разбивает все фразы на отдельные слова и считает количество их упоминаний. Обычно используем, когда пытаемся найти новые словоформы для масок после парсинга подсказок или «ЭХО» Вордстата.

Алгоритм работы:

  • Берем любой список фраз из любого места и вставляем его в файл phrases.csv.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • Запускаем скрипт: script.py и ждем выполнения (отобразится в консоли внизу фразой – Process finished with exit code 0)
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь
  • На выходе получаем результат в файле word_counts.csv. Слово и количество его упоминаний.
Скрипты Python для Яндекс Директа: N-GRAM анализ, кластеризатор, частотный словарь

4. Дальше можно копировать в любые гугл таблицы и анализировать.

На этом всё, применяйте скрипты в работе, пишите свои, сейчас время автоматизации.

Подписывайтесь на мой ТГ канал, там первыми выходят все технические штуки)

7
1 комментарий