Нюанс кластеризации запросов
Периодически вижу граждан, недовольных сервисами автоматической кластеризации поисковых запросов. Примерно так:
Купил тут... - приложение для кластеризации. И не могу не наматериться... отвратно кластеризует. Ну просто пальцем в небо иногда, быстрей самому вручную раскидать чем использовать это.
Немного о проблеме кластеризации
Допустим, у вас есть сайт, который вы хотите показывать публике, а именно целевой аудитории. Чтобы публика находила сайт, нужно купить лотерейный билет (зачеркнуто) узнать, какими словами ЦА пользуется при поиске того, что вы хотите ей предложить. Замечу, что часто эти слова не совпадают с вашими представлениями о них (но это тема для другого раза).
Допустим, что вы или вам нашли такие слова. Спасибо Вордстату (и множеству других сервисов), просвещающим видео и статьям — сбор поисковых запросов нынче не проблема. И вот перед вами массив из десятков, сотен или тысяч (и даже сотен тысяч) сочетаний слов (=поисковых запросов). Хорошо, если до сбора вы составили структурно-логическую схему, с ней разбирать этот массив будет значительно проще. Но к слову, даже самая полная схема структуры не учитывает новых запросов, которые появляются каждый день.
<irony>
Лайфхак: вы можете не заморачиваться, а просто скопировать структуру, запросы (а то и вообще весь контент) конкурентов. Кстати, вы знаете, что такое карго-культ?
</irony>
В общем, понятно, что массив запросов надо как-то сортировать. И вот тут открываются бездны. К сожалению или к счастью, машины пока не освоили человеческую речь настолько, чтобы автоматически преобразовать ваш массив в вид, достаточный для внедрения. Поэтому сортировка запросов (или группировка, или — профессиональный термин — кластеризация) во многом остаётся ручным процессом. И дело не в ущербности сервисов, а в сложности задачи. О проблемах обработки человеческой речи и способах их решения в контексте поиска написано много, информационный поиск совершенствуется — тут не поспоришь. Пока же, в ожидании сервисов с векторным семантическим анализом, мы кластеризуем по-старинке, то есть анализируя страницы по совпадению в поисковой выдаче и по интенту.
Возвращаюсь к цитате из начала заметки — про отвратительную кластеризацию. Да, не всё там просто и быстро. И всё-таки значение сервиса-кластеризатора трудно переоценить (просто его нужно "уметь готовить"). Но в любом случае сервис покажет вам всего лишь совпадение запросов по какому-либо критерию. А критерий — внезапно — выбираете вы :).
Итак, мы кластеризовали массив по выдаче, оцениваем результат методом пристального взгляда и видим в одном из кластеров следующее:
"осенью дышало стих" и "стихотворение уж" — это остатки нецелевых запросов (в проекте не нужны стихи известных авторов). Объем массива до очистки от таких запросов был около 2 млн, а после очистки — 160+ тысяч. Чувствуете разницу? Ненужную семантику удаляют, используя в качестве фильтра стоп-слова (частично такие фильтры применяют при сборе запросов). Пример: на сайте не будет стихов солнца нашей поэзии — А. С. Пушкина, поэтому при сборе я исключаю слово "пушкин". Однако есть запросы без фамилии, но содержащие слова из стихов поэта. Как бы я ни фильтровала баз... массив до кластеризации, неизвестные мне стихи всё равно останутся. Известные тоже — частично.
И вот здесь автоматическая кластеризация по выдаче однозначно кладет на лопатки ручную (или автоматизированную) по отдельным словам. В примере выше запросы явно разошлись бы по разным группам. И если с "осенью дышало" всё очевидно, то "уж" попал бы в группу "Стихи про ужей".
Это лишь один — очевидный — пример. А сколько неочевидных проскользнет в ваше ядро?