Подпишись
на новые статьи

Просто введи свой e-mail:

Быстрая оценка слов не приносящих конверсии в AdWords при помощи языка R

Принцип простой: берем поисковые запросы по API AdWords и разбиваем по отдельным словам. В одну группу сладываем слова, которые привели к конверсии, во вторую оставшиеся. 

Из оставшихся удаляем слова с конверсиями. Суммируем "показы" каждого слова. Чем больше показов у слова - тем быстрее нужно принять решение, что с ним делать. 

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


library(dplyr)

library(RAdwords)
library(tidyr)
library(tm)
library(wordcloud2)


#Получение токена Google AdWords
adwords_auth <- doAuth(F)

adwords_id <- "XXX-XXX-XXXX" #ID аккаунта в AdWords
campaign = "ABCABCABCABCA" #Название 

start_period <- "20170301" #Начальная дата для отчета
end_period <- "20170401" #Конечная дата


#функция стемминга на основе mystem 
mystem <- function(x) {
x <- enc2utf8(x)
res <- system("mystem.exe -cl -e cp1251", intern = TRUE, input = x)
res <- gsub("[{}]", "", res)
res <- gsub("(\\|[^ ]+)", "", res)
res <- gsub("\\?", "", res)
res <- gsub("\\s+", " ", res)
res
}

#получаем данные из AdWords
body <- statement(select=c('CampaignName',
'AdGroupName',
'Query',
'KeywordTextMatchingQuery',
'Conversions',
'Impressions',
),
report="SEARCH_QUERY_PERFORMANCE_REPORT",
start=start_period,
end=end_period)
rawdataR <- getData(clientCustomerId=adwords_id,
google_auth=adwords_auth,
statement=body,
transformation = T,
changeNames = T)


#Выбираем слова с конверсией и добавляем отдельные слова в новую колонку
wordsThisConversion <- rawdataR %>%
filter(Conversions>0, Campaign == campaign) %>%
select (Searchterm, Conversions) %>%
mutate(searchWord = strsplit(as.character(Searchterm), " ")) %>%
unnest(searchWord)
#преобразум таблицу

# лемматизация, если нужна

#wordsThisConversion$searchWord <- mystem (wordsThisConversion$searchWord)


wordsThisConversion <- wordsThisConversion %>%
group_by (searchWord) %>%
summarise(Conversion = sum(Conversions))
#убираем из таблицы стоп слова
wordsThisConversion <- subset(wordsThisConversion, !(wordsThisConversion$searchWord %in% stopwords("russian")))


#Выбираем слова без конверсий и добавляем отдельные слова в новую колонку
wordsThisoutConversion <- rawdataR %>%
filter(Conversions==0,Campaign == campaign) %>%
select (Searchterm, Impressions) %>%
mutate(searchWord = strsplit(as.character(Searchterm), " ")) %>%
unnest(searchWord) #преобразум таблицу

# лемматизация, если нужна
#wordsThisoutConversion$searchWord <- mystem (wordsThisoutConversion$searchWord)

wordsThisoutConversion <- wordsThisoutConversion %>%
group_by (searchWord) %>%
summarise(Impressions = sum(Impressions))

#убираем из таблицы стоп слова
wordsThisoutConversion <- subset(wordsThisoutConversion, !(wordsThisoutConversion$searchWord %in% stopwords("russian")))

#убираем из таблицы слова с конверсиями
wordsThisoutConversion <- subset(wordsThisoutConversion, !(wordsThisoutConversion$searchWord %in% wordsThisConversion$searchWord))

#создаем облако
wordcloud2 (wordsThisoutConversion, size =2, minRotation = 0, maxRotation = 0)

#сортируем таблицу по показам и выводим её
print(wordsThisoutConversion[order(wordsThisoutConversion$Impressions, decreasing = TRUE),])

Пример созданого облака по одной кампании:

Наведя на отдельное слово в облаке видим число показов по нему.
Одного вгляда на облако достаточно, чтобы понять, что реклама по брендам конкурентов в данном примере не приводит к конверсиям и можно их исключить, если реклама по ним не делается специально.

Автор: Дата создания:

Комментарии (0)







Разрешённые теги: <b><i><br>Добавить новый комментарий: