Лень. Но проверка простейшая, в вашем случае - если mousemove не привел в координаты getBoundingClientRect() элемента или нарушена цепочка onmousedown onmouseup onclick - клик нещитовый. Вероятно, много сервисов это делают, причем гораздо сложнее.
Прежде
как то надо попасть туда, куда кликать
document.addEventListener( "mousemove", function(e){ console.log(e.layerX) } );
потом, то о чем говорили mousedown
Во тут то вас и поймали.
Иными словами при вашем программном клике зафиксируется только onclick, тогда как при действии реального пользователя куда больше
Не так. Ссылки со сниппетом на контент со своего же сайта, подобранные с помощью всяких моделек на корпусе из топа и
Ну типа, для изделия "кпп камаз 740.15"
$res = sqlt()->q('SELECT highlight(s, 0, "<span>", "</span>") tt, highlight(s, 1, "[", "]") an, k, id, img, url, price, doctype FROM s WHERE s MATCH :q ORDER BY bm25(s)', [ [':q'=>'коробка передача'], [':q'=>'zf модель'], [':q'=>'вал первичный'], [':q'=>'вал промежуточный'], [':q'=>'картер коробка передача'], [':q'=>'коробка раздаточный'], [':q'=>'механизм переключение'] ])->resbytpl( \tpl\wigets( [ 'goods'=>'goodslisting', 'article'=>'article', 'news'=>'article' ] ) )
Вместо рандомных "Вам может понравится", 5 последних новостей/статей и т.д.
денить_сэлвидж
Долго думал.
$ mystem деним деним{денить?}
Затраты:
gensim бесплатно
понять что это и что можно, плюс тз кодеру - несколько вечеров, документация есть. Пара неплохих переводов. Нюансы - англоязычная.
скрипт обработки (232 строки у меня) - максимум несколько часов, если знать что делать (методики)
скрипты парсера я-хмл, урлов, ввиду огромного кол-ва библиотек питона - максимум пара часов спецу
методики - ваше время
Итого время аналитика - несколько дней, кодер - несколько часов.
Плюсы: word2vec, lsi и еще куча моделей
ресурсы (пока время)
2019-10-06 17:57:02,109 - root - INFO - Start 2019-10-06 17:57:12,603 - root - INFO - lib loaded 2019-10-06 17:57:12,609 - root - INFO - ru_stopwords loaded 2019-10-06 17:57:16,998 - root - INFO - text content loaded and lemmatized 2019-10-06 17:57:17,091 - gensim.corpora.dictionary - INFO - built Dictionary(3567 unique tokens: ['wildberries', 'большой', 'выбор']...) (total 16396 corpus positions) 2019-10-06 17:57:17,091 - root - INFO - id2word = corpora.Dictionary: done 2019-10-06 17:57:17,130 - root - INFO - corpus by id2word: done 2019-10-06 17:57:17,132 - gensim.models.lsimodel - INFO - using serial LSI version on this node 2019-10-06 17:57:17,132 - gensim.models.lsimodel - INFO - updating model with new documents 2019-10-06 17:57:17,132 - gensim.models.lsimodel - INFO - preparing a new chunk of documents 2019-10-06 17:57:17,158 - gensim.models.lsimodel - INFO - using 100 extra samples and 2 power iterations 2019-10-06 17:57:17,158 - gensim.models.lsimodel - INFO - 1st phase: constructing (3567, 150) action matrix 2019-10-06 17:57:17,194 - gensim.models.lsimodel - INFO - orthonormalizing (3567, 150) action matrix 2019-10-06 17:57:18,101 - gensim.models.lsimodel - INFO - 2nd phase: running dense svd on (150, 1272) matrix 2019-10-06 17:57:18,178 - gensim.models.lsimodel - INFO - computing the final decomposition 2019-10-06 17:57:18,179 - gensim.models.lsimodel - INFO - keeping 50 factors (discarding 33.128% of energy spectrum) 2019-10-06 17:57:18,196 - root - INFO - lsi_model: done 2019-10-06 17:57:18,356 - gensim.topic_coherence.probability_estimation - INFO - using WordOccurrenceAccumulator to estimate probabilities from sliding windows 2019-10-06 17:57:25,422 - root - INFO - CoherenceModel: done 2019-10-06 17:57:25,447 - gensim.models.phrases - INFO - collecting all words and their counts 2019-10-06 17:57:25,447 - gensim.models.phrases - INFO - PROGRESS: at sentence #0, processed 0 words and 0 word types 2019-10-06 17:57:25,566 - gensim.models.phrases - INFO - collected 14999 word types from a corpus of 16396 words (unigram + bigrams) and 1272 sentences 2019-10-06 17:57:25,574 - gensim.models.phrases - INFO - using 14999 counts as vocab in Phrases<0 vocab, min_count=1, threshold=5, max_vocab_size=40000000> 2019-10-06 17:57:25,576 - gensim.models.phrases - INFO - collecting all words and their counts 2019-10-06 17:57:25,578 - gensim.models.phrases - INFO - PROGRESS: at sentence #0, processed 0 words and 0 word types 2019-10-06 17:57:25,932 - gensim.models.phrases - INFO - collected 15207 word types from a corpus of 13221 words (unigram + bigrams) and 1272 sentences 2019-10-06 17:57:25,932 - gensim.models.phrases - INFO - using 15207 counts as vocab in Phrases<0 vocab, min_count=5, threshold=5, max_vocab_size=40000000> 2019-10-06 17:57:25,932 - root - INFO - n-gramm: done 2019-10-06 17:57:26,957 - root - INFO - lsi result sorted 2019-10-06 17:57:27,223 - root - INFO - Result n-gramm file saved
25 сек на обработку примерно пол мегабайт текста, из них 8 сек когеренцию считал.
coherence: 0.4222778935820691
что то типа согласованности тематик, правильней от нее плясать.
сначала определить модель и кол-во тем с максимальной
доры тоже ПФ прикрутили:D
Для своих целей - обвес документа, в моем случае - карточки товара, связанными тематически товарами, новостями, статьями, видео с ютуба и т.д., результат уже годный. От покатит (часто), до вау(пока редко).
Для СЕО, сообщество не придумало как использовать технологию. Копирайтеры прибежали. Хотя, повторю, что вообще для этого на рассматривал. Плюс у них, часто, странное понимание lsi - синонимы.
Несколько человек ( samimages, burunduk, Devvver) явно что то знают и направления подкинули. Респект🍻
Одно из них анализ конкурентов. Ну например, по этим данным можно получить
"директ_яндекс";1420.8192357168632
"интернет_магазин";775.3101392947609
"вк_группа";716.7936561916383
"деньги_яндекс";450.33173125775517
"почта_рамблер";336.1453415537198
"метрика_яндекс";311.69419759044774
"adwords_google";243.67762536248173
"домен_регистрация";221.47089971881667
.... 1057 н-грамм
А для этого:
"интернет_магазин";1940.6636331215689
"каталог_товар";355.30837666024
"нокиан_нордман";293.49859816069124
"arctic_ice";130.42074089707793
"arctic_goodyear_ice_ultragrip";102.47343927627553
"нокиан_хакка";100.18268179331146
"евро_кама";92.72717358524078
"ice_sibir";90.49602429593163
"кама_флейм";85.41184492408178
"formula_pirelli";68.14245310308087
"nokian_nordman";63.1354804778151
"грин_нокиан_хакка";62.23469626554196
"guard_ice";61.21789878842434
"ice_kumho_wi_wintercraft";55.894603241604834
"ice_north";54.56377935489996
"guard_ice_yokohama";53.23295546819508
"ice_winter";52.9140104378242
"бриз_кама";51.989818649441084
"formula_ice_pirelli";49.71399094312819
всего 306, только из того что в топ10 для этого сайта. Плюс, это в корне неверный результат для шин, так, как корпус без цифр.
Наглядно, что попадает в корпус. Пока в скрипте обработка simple_preprocess, поскольку функция обработки и фильтрации еще в тестах
Автомобильные шины nokian nordman 5 175/70-r14 зимние. Шина Nokian Nordman 7 185 70 R14 92T шип. Покрышки Nokian Nordman 5 185 70 R14 92T шип simple_preprocess: ['автомобильный', 'шина', 'nokian', 'nordman', 'зимний'] ['шина', 'nokian', 'nordman', 'шип'] ['покрышка', 'nokian', 'nordman', 'шип'] split: ['автомобильный', 'шина', 'nokian', 'nordman', '5', '175', '70', 'r14', 'зимний'] ['шина', 'Nokian', 'Nordman', '7', '185', '70', 'R14', '92T', 'шип'] ['покрышка', 'Nokian', 'Nordman', '5', '185', '70', 'R14', '92T', 'шип']
И, да. Никакой науки здесь нет. Любая сео-контора при необходимости это может иметь в своем арсенале. Это не дорого.
Питон прогер средней руки тоже доступно. Хотя, никого не переубеждаю. Хозяин-барин.
Вообще, конечно gensim пушка.
Что известно:
Запрос "шина nokian nordman 175 70 r14";
Топ20 Яндекса.
Ответ в н-раммах. Больше во вложении.
[('nokian_шина', 121.03604096752892), ('nokian_nordman', 92.53252877327878), ('nordman_sx', 40.662454067075835), ('зимний_шина', 33.50702178650591), ('диск_шина', 28.009722415062864), ('легковой_шина', 28.009722415062864), ('nokian_nordman_sx_шина', 25.414033791922396), ('летний_шина', 24.185662496717313), ('nokian_nordman_шина', 19.401981839558452), ('автомобильный_шина', 19.391346287351215), ('купить_шина', 19.155270066072582), ('зимний_шиповать', 18.847699754909573), ('качество_соотношение_цена', 18.49635303877127), ('соотношение_цена', 18.49635303877127), ('nokian_резина', 17.751952675237575), ('nokian_nordman_шина_шип', 16.417061556549463), ('nordman_шип', 16.417061556549463), ('зимний_резина', 15.903417392949137), ('интернет_магазин', 15.38824439328674), ('получение_товар', 15.061724842672314), ('отличный_резина', 13.915490218830495), ('nokian_nordman_летний_шина', 13.302114373194524), ('nordman_xl', 12.049024177230285), ('nokian_nordman_зимний_шина', 11.939681132035972), ('управляемость_хороший', 11.771353930087644), ('доступный_цена', 11.560220649232045), ('балашиха_мо', 11.146053943565045), ('зимний_купить', 10.314376189423697), ('nokian_nordman_sx', 10.165613516768959),
Алгоритм, кол-во н-грамм в корпусе на вес слова в топике lsi модели, если он больше трети от максимума.
уупс, цифры из корпуса удалены
t = ' '.join(simple_preprocess(t.strip()))
Это без цифр, хотя в запросе они есть. Потом с цифрами сделаю. Сравним.
Беда в том, что сразу не понять:( Много шума от них. Для своих нужд принял решение цифры оставить, но фильтровать. Как на уровне парсера хтмл, так и другими методами.
С другой стороны, их может и можно отдельно проанализировать. Ну, чтобы понять за счет чего они тут. Типа 2гис, а там... И, в итоге, исключить тех кто не достоин быть в топе по тексту. Короче, методику надо.
Про изменения важно на самом деле, типа когда все пересчитать. Спасибо за наводку.
В вашем скрине, про кино только кинопоиск и вики справа, еще осень в нью-йорке упоминается как песня. Но, не настаиваю про сниппет. Я не сеошник. Отметил лишь факт что 2000 четко акцентирует тему "осень в нью-йорке", а без 2000, первые 3 страницы выдачи не содержат осень по cntrl-f
Так что цифры оставлю пока☝
шарлотта уилл
осень в нью-йорке в гугле есть
осень в нью-йорке в я нет
шарлотта уилл 2000
осень в нью-йорке в обоих пс есть
* в пределах 1 экрана
Для Яндекса цифры 2000 достаточно чтобы значимость в топе темы "осень в нью-йорке" усилилась для запроса про шарлотту и уилла. Если, конечно, нет чего-то того, что я не учел. В сниппете 2000 не видать, опять же.
Отсюда и вопрос к сообществу - цифры в корпусе "убрать нельзя оставить", где поставить запятую?
У gensim есть метод simple_preprocess , который готовит пассаж, для включения в корпус. Оно удаляет все кроме слов. То что выкладывал, иногда цифры оставлял иногда нет.
* 2000 год выхода фильма.
А гугл - просто для сравнения.
Зачем? Какой то урл долго в топе? И именно его контент включить в корпус, или наоборот исключить. А может, без разницы... Ну онжетрастпфвитальный и шум.
И еще вопрос. Про цифру в корпусе. Запрос осень в нью-йорке, данные отсюда
Один из тематических векторов
-0.151*"шарлотта" + 0.145*"приключенческий" + 0.138*"боевик" +
-0.135*"осень" + -0.130*"википедия" + 0.127*"уилл" + -0.126*"hd"
+ 0.124*"качество" + -0.123*"2000" + 0.117*"триллер"
2000, нужно ли закладывать цифру? В буквах и цифрах типа 0.041*"прага" + 0.015*"место" на самом деле разные модели
где то в корпусе все кроме слов выжигается, а где то нет
См. скрины. Браузер выбрал Опера, с которым практически не работаю. Ну там, резка с кино и т.д. Все, что через впн. Вспомнил, еще браузер есть, Вивальди, похожий топ. Один файл не поместился, >5.
Буду признателен за
1. Ваш топ, если он не совпадает с моим
2. Интерпретацию такого поведения