Как стать автором
Обновить
0
Андрей Анатольевич Лафицкий @alaf read⁠-⁠only

Пользователь

Отправить сообщение

Selenium vs Puppeteer vs Cypress vs Playwright

Время на прочтение 5 мин
Количество просмотров 29K

Всем привет. Я qa automation engineer уже 14 лет и 9 из них мне так или иначе приходилось работать с автоматизацией веб-приложении (и не только). Я писала свои автотесты на C#, Java, и Js. Сейчас я хотела бы поделиться опытом, как я выбираю фреймворк для тестирования веб приложения. Думаю кому-то мой текст может быть полезен. 

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

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 17

Разбор задачи Титаник на Kaggle (Baseline)

Время на прочтение 6 мин
Количество просмотров 18K

В статье я покажу как искать зависимости и проверять гипотезы. Мы познакомимся с данными и реализуем предсказание на основе одной логики=)

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 3

Как Яндекс научил искусственный интеллект находить ошибки в новостях

Время на прочтение 7 мин
Количество просмотров 13K
Мы часто рассказываем о технологиях и библиотеках, которые зародились и сформировались в Яндексе. На самом деле мы ничуть не реже применяем и развиваем сторонние решения.

Сегодня я расскажу сообществу Хабра об одном из таких примеров. Вы узнаете, зачем мы научили нейросеть BERT находить опечатки в заголовках новостей, а не воспользовались готовой моделью, почему нельзя взять и запустить BERT на нескольких видеокартах и как мы использовали ключевую особенность этой технологии — механизм attention.



Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Комментарии 11

Как правильно «фармить» Kaggle

Время на прочтение 27 мин
Количество просмотров 153K

image
*фарм — (от англ. farming) — долгое и занудное повторение определенных игровых действий с определенной целью (получение опыта, добыча ресурсов и др.).


Введение


Недавно (1 октября) стартовала новая сессия прекрасного курса по DS/ML (очень рекомендую в качестве начального курса всем, кто хочет, как это теперь называется, "войти" в DS). И, как обычно, после окончания любого курса у выпускников возникает вопрос — а где теперь получить практический опыт, чтобы закрепить пока еще сырые теоретические знания. Если вы зададите этот вопрос на любом профильном форуме, то ответ, скорее всего, будет один — иди решай Kaggle. Kaggle — это да, но с чего начать и как наиболее эффективно использовать эту платформу для прокачки практических навыков? В данной статье автор постарается на своем опыте дать ответы на эти вопросы, а также описать расположение основных грабель на поле соревновательного DS, чтобы ускорить процесс прокачки и получать от этого фан.

проверить глубину этой кроличьей норы
Всего голосов 87: ↑86 и ↓1 +85
Комментарии 15

Как мы в хакатоне AI.HACK победили, или Когда нужно выключить искусственный интеллект и включить естественный

Время на прочтение 3 мин
Количество просмотров 6.8K


В марте команда наших разработчиков с гордым названием «Руки-Ауки» двое суток неусыпно сражалась на цифровых полях хакатона AI.HACK. Всего было предложено пять задач от разных компаний. Мы сосредоточились на задаче «Газпромнефти»: прогнозирование спроса на топливо со стороны В2В-клиентов. Нужно было по обезличенным данным — регион приобретения топлива, номер заправки, вид топлива, цена, дата и ID-клиента — научиться прогнозировать, сколько в будущем купит тот или иной клиент. Забегая вперёд — наша команда решила эту задачу с наивысшей точностью. Клиенты были разбиты на три сегмента: крупные, средние и мелкие. И помимо основной задачи мы также построили прогноз суммарного потребления по каждому из сегментов.
Читать дальше →
Всего голосов 36: ↑34 и ↓2 +32
Комментарии 4

Создатель Open Data Science о Slack, xgboost и GPU

Время на прочтение 8 мин
Количество просмотров 23K
Сообщество Open Data Science (ODS) уже известно на Хабре по открытому курсу машинного обучения (OpenML). Сегодня мы поговорим с его создателем об истории ODS, людях и наиболее популярных методах машинного обучения (по версии Кaggle и проектам индустрии). За интересными фактами и технической экспертизой — прошу под кат.



Читать дальше →
Всего голосов 53: ↑49 и ↓4 +45
Комментарии 5

Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса

Время на прочтение 9 мин
Количество просмотров 23K
Что влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64.

Видео доклада

— Всем привет. Я занимаюсь оптимизацией для CPU библиотеки машинного обучения CatBoost. Основная часть нашей библиотеки написана на C++. Сегодня расскажу, какими простыми способами мы добиваемся скорости.


Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 16

Познаём Нирвану – универсальную вычислительную платформу Яндекса

Время на прочтение 8 мин
Количество просмотров 48K
Машинное обучение превратилось в модный термин, но при работе с большими объёмами данных оно уже много лет является жизненной необходимостью. Яндекс обрабатывает более 200 миллионов запросов ежедневно! Когда-то в интернете было так мало сайтов, что наилучшие из них помещались в каталог, а теперь за релевантность ссылок на страницы в выдаче отвечают сложные формулы, обучающиеся на новых и новых данных. Задача ложится на так называемые конвейеры, регулярные процессы, обучающие и контролирующие эти формулы.

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



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

Нирваной для решения вычислительных задач пользуются разработчики, аналитики и менеджеры разных департаментов Яндекса — потому что далеко не всё можно посчитать на своем ноутбуке (а почему ещё — мы расскажем в конце статьи, когда перейдем к примерам применения Нирваны).

Мы расскажем, с какими проблемами столкнулись при использовании предыдущего решения, опишем ключевые компоненты Нирваны и объясним, почему для платформы было выбрано именно такое название. А потом посмотрим на скриншот и перейдем к задачам, для которых полезна платформа.
Читать дальше →
Всего голосов 81: ↑81 и ↓0 +81
Комментарии 29

Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Время на прочтение 9 мин
Количество просмотров 151K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

В прошлый раз мы говорили о методике разработки bash-скриптов. Если же суммировать всё, что мы разобрали в предыдущих десяти материалах, то вы, если начинали читать их, ничего не зная о bash, теперь можете сделать уже довольно много всего полезного.



Сегодняшняя тема, заключительная в этой серии материалов, посвящена автоматизации работы с интерактивными утилитами, например, со скриптами, которые, в процессе выполнения, взаимодействуют с пользователем. В этом деле нам поможет expect — инструмент, основанный на языке Tcl.
Читать дальше →
Всего голосов 26: ↑22 и ↓4 +18
Комментарии 7

MyHTML — HTML парсер на «голом» Си с поддержкой POSIX Threads

Время на прочтение 3 мин
Количество просмотров 32K
image

Всем привет!

Как можно было догадаться из заголовка речь пойдет о парсинге HTML (далее хтмл).

преамбула
Всего голосов 57: ↑55 и ↓2 +53
Комментарии 45

Скрапинг современных веб-сайтов без headless-браузеров

Время на прочтение 9 мин
Количество просмотров 25K


Многие разработчики считают скрапинг сложной, медленной и неудобной для масштабирования задачей, особенно при работе с headless-браузерами. По моему опыту, можно заниматься скрапингом современных веб-сайтов даже не пользуясь безголовыми браузерами. Это очень простой, быстрый и хорошо масштабируемый процесс.

Для его демонстрации вместо Selenium, Puppeteer или любого другого решения на основе безголовых браузеров мы просто используем запросы на Python. Я объясню, как можно скрапить информацию из публичных API, которые потребляет на фронтэнде большинство современных веб-сайтов.

На традиционных веб-страницах наша задача заключается в парсинге HTML и извлечении нужной информации. На современных веб-сайтах фронтэнд скорее всего не будет содержать особо много HTML, потому что данные получаются асинхронно после первого запроса. Поэтому большинство людей использует безголовые браузеры — они способны выполнять JavaScript, делать дальнейшие запросы, после чего можно распарсить всю страницу целиком.

Но существует и другой способ, которым можно довольно часто пользоваться.
Читать дальше →
Всего голосов 48: ↑38 и ↓10 +28
Комментарии 31

Перформанс: что в имени тебе моём? — Алексей Шипилёв об оптимизации в крупных проектах

Время на прочтение 26 мин
Количество просмотров 33K
Оптимизация производительности издавна не даёт покоя разработчикам, представляясь своеобразным «золотым ключиком» к интересным решениям и хорошему послужном списку. Большую обзорную экскурсию по ключевым вехам оптимизации больших проектов  – от общих принципов до ловушек и противоречий —  на прошедшем JPoint 2017 провёл Алексей Шипилёв, эксперт по производительности.



Под катом — расшифровка его доклада.
Всего голосов 76: ↑73 и ↓3 +70
Комментарии 10

Изучаем синтаксические парсеры для русского языка

Время на прочтение 19 мин
Количество просмотров 36K
Привет! Меня зовут Денис Кирьянов, я работаю в Сбербанке и занимаюсь проблемами обработки естественного языка (NLP). Однажды нам понадобилось выбрать синтаксический парсер для работы с русским языком. Для этого мы углубились в дебри морфологии и токенизации, протестировали разные варианты и оценили их применение. Делимся опытом в этом посте.


Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 39

SVM. Подробный разбор метода опорных векторов, реализация на python

Время на прочтение 15 мин
Количество просмотров 125K

Привет всем, кто выбрал путь ML-самурая!


Введение:


В данной статье рассмотрим метод опорных векторов (англ. SVM, Support Vector Machine) для задачи классификации. Будет представлена основная идея алгоритма, вывод настройки его весов и разобрана простая реализация своими руками. На примере датасета $Iris$ будет продемонстрирована работа написанного алгоритма с линейно разделимыми/неразделимыми данными в пространстве $R^2$ и визуализация обучения/прогноза. Дополнительно будут озвучены плюсы и минусы алгоритма, его модификации.


image
Рисунок 1. Фото цветка ириса из открытых источников

Читать дальше →
Всего голосов 52: ↑51 и ↓1 +50
Комментарии 5

Маленький и быстрый BERT для русского языка

Время на прочтение 9 мин
Количество просмотров 52K

BERT – нейросеть, способная неплохо понимать смысл текстов на человеческом языке. Впервые появившись в 2018 году, эта модель совершила переворот в компьютерной лингвистике. Базовая версия модели долго предобучается, читая миллионы текстов и постепенно осваивая язык, а потом её можно дообучить на собственной прикладной задаче, например, классификации комментариев или выделении в тексте имён, названий и адресов. Стандартная версия BERT довольно толстая: весит больше 600 мегабайт, обрабатывает предложение около 120 миллисекунд (на CPU). В этом посте я предлагаю уменьшенную версию BERT для русского языка – 45 мегабайт, 6 миллисекунд на предложение. Она была получена в результате дистилляции нескольких больших моделей. Уже есть tinybert для английского от Хуавея, есть моя уменьшалка FastText'а, а вот маленький (англо-)русский BERT, кажется, появился впервые. Но насколько он хорош?

Читать далее
Всего голосов 57: ↑57 и ↓0 +57
Комментарии 17

Нейросети для Natural Language Inference (NLI): логические умозаключения на русском языке

Время на прочтение 9 мин
Количество просмотров 17K

NLI (natural language inference) – это задача автоматического определения логической связи между текстами. Обычно она формулируется так: для двух утверждений A и B надо выяснить, следует ли B из A. Эта задача сложная, потому что она требует хорошо понимать смысл текстов. Эта задача полезная, потому что "понимательную" способность модели можно эксплуатировать для прикладных задач типа классификации текстов. Иногда такая классификация неплохо работает даже без обучающей выборки!

До сих пор в открытом доступе не было нейросетей, специализированных на задаче NLI для русского языка, но теперь я обучил целых три: tiny, twoway и threeway. Зачем эти модели нужны, как они обучались, и в чём между ними разница – под катом.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 3

Применение Rust в разработке: страдания и высокий порог входа. Григорий Петров разбирается, когда этот язык необходим

Время на прочтение 8 мин
Количество просмотров 32K

Rust набирает популярность среди разработчиков. Мы, организаторы RustCon, решили опубликовать серию статей о том, по каким причинам компании начинают использовать его для своих проектов. 

Первая статья в серии - интервью с Григорием Петровым, DevRel из Evrone. Применять новомодный Rust в заказной разработке - решение, на первый взгляд, неочевидное. Готовых разработчиков мало, порог входа - высокий. Давайте узнаем, в каких условиях использовать Rust все-таки полезно? 

Гриша, расскажи, как вы в Evrone пришли к использованию Rust? 

13 лет назад, когда Evrone только начинался, мы специализировались на full stack Ruby решениях. Но с годами мы начали расширять палитру того, что предлагаем клиентам. Вначале у нас выделилось направление фронтенд - это React, Vue.js. Затем к нам приполз Python, как альтернатива Ruby, потому что многие клиенты выбирают стек технологий под уже существующие команды и процессы. 

И уже несколько лет мы используем Rust как комплементарную технологию, которая позволяет точечно ускорять наши решения на Python и Ruby в 10, а иногда и 100 раз. 

Теперь, когда к нам приходит бизнес и говорит: «Ну вы же знаете, что Ruby нетороплив, наша система уже 100 000 запросов в секунду, нам надо потратить еще вагон денег и переписать ее на Java. Да?» Мы такие: «Нет! Мы выделяем вот эти три точки, которые у вас под нагрузкой, и наши ребята переписывают их на Rust. У вас всё начинает работать быстро, надежно и при этом поддерживаемо, а бизнес фичи продолжают фигачиться с той же страшной скоростью». 

Читать далее
Всего голосов 60: ↑55 и ↓5 +50
Комментарии 163

30+ парсеров для сбора данных с любого сайта

Время на прочтение 10 мин
Количество просмотров 412K
30+ парсеров для сбора данных с любого сайта

Десктопные/облачные, платные/бесплатные, для SEO, для совместных покупок, для наполнения сайтов, для сбора цен… В обилии парсеров можно утонуть.


Мы разложили все по полочкам и собрали самые толковые инструменты парсинга — чтобы вы могли быстро и просто собрать открытую информацию с любого сайта.

Читать дальше
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 10

Кластеризация графов и поиск сообществ. Часть 2: k-medoids и модификации

Время на прочтение 11 мин
Количество просмотров 23K
image Привет, Хабр! В этой части мы опишем вам алгоритм, с помощью которого были получены цвета на графах из первой части. В основе алгоритма лежит k-medoids — довольно простой и прозрачный метод. Он представляет собой вариант популярного k-means, про который наверняка большинство из вас уже имеет представление.

В отличие от k-means, в k-medoids в качестве центроидов может выступать не любая точка, а только какие-то из имеющихся наблюдений. Так как в графе между вершинами расстояние определить можно, k-medoids годится для кластеризации графа. Главная проблема этого метода — необходимость явного задания числа кластеров, то есть это не выделение сообществ (сommunity detection), а оптимальное разбиение на заданное количество частей (graph partitioning).

С этим можно бороться двумя путями:
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 4

37 причин, почему ваша нейросеть не работает

Время на прочтение 9 мин
Количество просмотров 41K
Сеть обучалась последние 12 часов. Всё выглядело хорошо: градиенты стабильные, функция потерь уменьшалась. Но потом пришёл результат: все нули, один фон, ничего не распознано. «Что я сделал не так?», — спросил я у компьютера, который промолчал в ответ.

Почему нейросеть выдаёт мусор (например, среднее всех результатов или у неё реально слабая точность)? С чего начать проверку?

Сеть может не обучаться по ряду причин. По итогу многих отладочных сессий я заметил, что часто делаю одни и те же проверки. Здесь я собрал в удобный список свой опыт вместе с лучшими идеями коллег. Надеюсь, этот список будет полезен и вам.
Читать дальше →
Всего голосов 37: ↑37 и ↓0 +37
Комментарии 11

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность