Как стать автором
Обновить
0
0
Николай Пономарев @onion_bass

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

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

Attention для чайников и реализация в Keras

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

О статьях по искусственному интеллекту на русском языке


Не смотря на то что механизм Attention описан в англоязычной литературе, в русскоязычном секторе достойного описание данной технологии я до сих пор не встречал. На нашем языке есть много статей по Искусственному Интеллекту (ИИ). Тем не менее, те статьи, которые удалось найти, раскрывают только самые простые модели ИИ, например, свёрточные сети, генеративные сети. Однако, по передовым новейшим разработками в области ИИ статей в русскоязычном секторе крайне мало.

Читать дальше →
Всего голосов 30: ↑24 и ↓6+18
Комментарии15

Data Science Digest (July 2019)

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


Приветствую всех!

Лето в полном разгаре, и если вы планируете быть в Одессе 5-го июля, приглашаю вас на ODS митап и дата-бар, который организовывает одесская ODS.ai команда. Напоминаю, что у дайджеста есть свой Telegram-канал и страницы в соцсетях (Facebook, Twitter, LinkedIn, Medium), где я ежедневно публикую ссылки на полезные материалы. Присоединяйтесь!

А пока предлагаю свежую подборку материалов под катом.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Деплоим на PythonAnywhere из GitHub

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



Каждый может сделать так:


локальный проект → github


С (платным) ssh доступом вы сможете сделать так:


локальный проект → PythonAnywhere


В статье показано как (бесплатно) сделать так:


локальный проект → github → PythonAnywhere


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

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

Как решить старую задачу с помощью ML на Python и .Net

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


Бывает, что некоторые задачи преследуют тебя много лет. Для меня такой задачей стала склейка предложений текстов, в которых жестко забит переход на новую строку, а часто еще и перенос слов. На практике, это извлеченный из PDF или с помощью OCR текст. Часто можно было встретить такие тексты на сайтах он-лайн библиотек, в архивах старых документов, которые редактировались еще DOS-редакторами. И такое форматирование очень мешает затем правильной разбивке на предложения (а с переносами — и на токены) для последующей NLP-обработки. Да и банально показать такой документ в поисковой выдаче — будет некрасиво.


Решал я эту задачу несколько раз — на Delphi, C#. Тогда это был жесткий алгоритм, где руками прописывал, например, какая может быть ширина текста, чтобы этот текст считался отформатированным "по-старому". Не всегда это срабатывало идеально, но в общем, хватало.

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

10 фич для ускорения анализа данных в Python

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

Источник

Советы и рекомендации, особенно в программировании, могут быть очень полезны. Маленький шоткат, аддон или хак может сэкономить кучу времени и серьёзно увеличить производительность. Я собрала свои самые любимые и сделала из них эту статью. Какие-то из советов ниже уже известны многим, а какие-то появились совсем недавно. Так или иначе, я уверена, они точно не будут лишними, когда вы в очередной раз приступите к проекту по анализу данных.


1. Профилирование Pandas Dataframe


Профилирование помогает лучше понять наши данные, и пакет Pandas Profiling создан как раз для этого. Библиотека даст возможность просто и быстро выполнить разведочный анализ Pandas Dataframe. Обычно в таких случаях в качестве первого шага используются функции df.describe() и df.info(), но они сообщают мало и плохо справляются с большими наборами данных. Одна строка кода с использованием Pandas Profiling, напротив, выведет много информации в интерактивном HTML-отчете.


Вот что вычисляется для заданного набора данных:


Статистика выводимая Pandas Profiling.

Установка


pip install pandas-profiling
или
conda install -c anaconda pandas-profiling

Использование


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

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

Презентация как код, или Почему я больше не пользуюсь Powerpoint-ом

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

Кажется, мне довелось сделать десятки презентаций для коллег, заказчиков и публичных выступлений за мою карьеру в IT. Многие годы Powerpoint как средство изготовления слайдов оставался для меня естественным и надёжным выбором. Но в этом году ситуация качественно изменилась. С февраля по май мне довелось выступить на пяти конференциях, и слайды к докладам надо было готовить в сжатые сроки, но качественно. Встал вопрос о делегировании той части работы, что касается визуального дизайна слайдов, другим людям. Как-то раз я попытался работать с дизайнером, пересылая файлы .pptx по почте, но работа превратилась в хаос: никто не знал, какая версия слайдов «самая новая», а вёрстка «ехала» по причине различия версий Powerpoint и шрифтов на наших машинах. И я решил попробовать что-то новое. Попробовал, и с тех пор не думаю возвращаться к Powerpoint.

Читать дальше →
Всего голосов 129: ↑122 и ↓7+115
Комментарии115

Мелкая питонячая радость #4: Radon — качество кода, измеренное в числах

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

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



Метрик для оценки текстов программ придумали немало — от банального количества строк кода в проекте до не столь очевидного "индекса поддерживаемости" (Maintainability Index). Подробно про все существующие способы обмазывания кода всякими метриками можно почитать в этой статье.


В мире Python, конечно же, есть своя штука для оценки качества кода. Она называется radon. Она написана на этом же самом Python и работает исключительно с питонячими файлами.

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии2

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

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

Заголовок статьи может показаться странным и это неспроста — он прекрасен именно тем, что написал его не я, а LSTM-нейросеть (а точнее его часть перед "или").



(схема LSTM взята из Understanding LSTM Networks)


И сегодня мы разберёмся, как можно генерировать заголовки статей Хабра (и в принципе сам текст можно генерировать этой же нейро-архитектурой). Весь код доступен для запуска онлайн в notebooks от Гугла. Данные, как всегда, открыты на github.


А вот здесь можно запустить уже обученную модель на GPU от Гугла (бесплатно и без смс) и собственно погенерить заголовки.

Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии16

Краткое введение в цепи Маркова

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

В 1998 году Лоуренс Пейдж, Сергей Брин, Раджив Мотвани и Терри Виноград опубликовали статью «The PageRank Citation Ranking: Bringing Order to the Web», в которой описали знаменитый теперь алгоритм PageRank, ставший фундаментом Google. Спустя чуть менее двух десятков лет Google стал гигантом, и даже несмотря на то, что его алгоритм сильно эволюционировал, PageRank по-прежнему является «символом» алгоритмов ранжирования Google (хотя только немногие люди могут действительно сказать, какой вес он сегодня занимает в алгоритме).

С теоретической точки зрения интересно заметить, что одна из стандартных интерпретаций алгоритма PageRank основывается на простом, но фундаментальном понятии цепей Маркова. Из статьи мы увидим, что цепи Маркова — это мощные инструменты стохастического моделирования, которые могут быть полезны любому эксперту по аналитическим данным (data scientist). В частности, мы ответим на такие базовые вопросы: что такое цепи Маркова, какими хорошими свойствами они обладают, и что с их помощью можно делать?
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии11

Указатели в Python: в чём суть?

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

Если вы когда-нибудь работали с такими низкоуровневыми языками, как С или С++, то наверняка слышали про указатели. Они позволяют сильно повышать эффективность разных кусков кода. Но также они могут запутывать новичков — и даже опытных разработчиков — и приводить к багам управления памятью. А есть ли указатели в Python, можно их как-то эмулировать?

Указатели широко применяются в С и С++. По сути, это переменные, которые содержат адреса памяти, по которым находятся другие переменные. Чтобы освежить знания об указателях, почитайте этот обзор.

Благодаря этой статье вы лучше поймёте модель объектов в Python и узнаете, почему в этом языке на самом деле не существуют указатели. На случай, если вам понадобится сымитировать поведение указателей, вы научитесь эмулировать их без сопутствующего кошмара управления памятью.
Читать дальше →
Всего голосов 75: ↑70 и ↓5+65
Комментарии28

Почему каждый Data Scientist должен знать Dask

Время на прочтение4 мин
Количество просмотров22K
Здравствуйте, коллеги!

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


Снимок взят по адресу
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии3

Как устроено A/B-тестирование в Авито

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

Всем привет. Меня зовут Данила, я работаю в команде, которая развивает аналитическую инфраструктуру в Авито. Центральное место в этой инфраструктуре занимает А/B-тестирование.


А/B эксперименты — ключевой инструмент принятия решений в Авито. В нашем цикле продуктовой разработки А/B-тест является обязательным этапом. Мы проверяем каждую гипотезу и выкатываем только позитивные изменения.


Мы собираем сотни метрик и умеем детализировать их до бизнес-разрезов: вертикали, регионы, авторизованные пользователи и т. д. Мы делаем это автоматизированно с помощью единой платформы для экспериментов. В статье я достаточно подробно расскажу, как платформа устроена и мы с вами погрузимся в некоторые интересные технические детали.


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

Реставрируем фотографии с помощью нейросетей

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


Всем привет, я работаю программистом-исследователем в команде компьютерного зрения Mail.ru Group. Ко Дню Победы в этом году мы решили сделать проект по реставрации военных фотографий. Что такое реставрация фотографий? Она состоит из трех этапов:

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

В этой статье я детально пройдусь по каждому из этапов реставрации и расскажу, как и где мы брали данные, какие сети мы учили, что у нас получилось, на какие грабли мы наступили.
Читать дальше →
Всего голосов 119: ↑118 и ↓1+117
Комментарии43

Нейронные сети предпочитают текстуры и как с этим бороться

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


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


В первой статье Approximating CNNs with bag-of-local features models works surprisingly well on ImageNet авторы берут модель, похожую на bag-of-words, и в качестве "слов" используют фрагменты из изображения. Эти фрагменты могут быть вплоть до 9х9 пикселей. И при этом, на такой модели, где полностью отсутствует какая-либо информация о пространственном расположении этих фрагментов, авторы получают точность от 70 до 86% (для примера, точность обычной ResNet-50 составляет ~93%).


Во второй статье ImageNet-trained CNNs are biased towards texture авторы приходят к выводу, что виной всему сам набор данных ImageNet и то, как изображения воспринимают люди и нейронные сети, и предлагают использовать новый датасет – Stylized-ImageNet.


Более подробно о том, что на картинках видят люди, а что нейронные сети

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

Соревнование ML-систем на лингвистическом материале. Как мы учились заполнять пропуски

Время на прочтение10 мин
Количество просмотров3.3K
Каждый год в Москве проходит конференция "Диалог", в которой участвуют лингвисты и специалисты по анализу данных. Они обсуждают, что такое естественный язык, как научить машину его понимать и обрабатывать. В рамках конференции традиционно проводятся соревнования (дорожки) Dialogue Evaluation. В них могут участвовать как представители крупных компаний, создающих решения в области обработки естественного языка (Natural Language Processing, NLP), так и отдельные исследователи. Может показаться, что если ты простой студент, то тебе ли тягаться с системами, которые крупные специалисты больших компаний создают годами. Dialogue Evaluation — это как раз тот случай, когда в итоговой турнирной таблице простой студент может оказаться выше именитой компании.

Этот год станет уже 9-ым по счету, когда на «Диалоге» проводится Dialogue Evaluation. Каждый год количество соревнований разное. Темами для дорожек уже становились такие задачи NLP, как анализ тональности (Sentiment Analysis), разрешение лексической многозначности (Word Sense Induction), нахождение опечаток (Automatic Spelling Correction), выделение сущностей (Named Entity Recognition) и другие.

В этом году четыре группы организаторов подготовили такие дорожки:
  • Генерация заголовков для новостных статей.
  • Разрешение анафоры и кореференции.
  • Морфологический анализ на материале малоресурсных языков.
  • Автоматический анализ одного из видов эллипсиса (гэппинга).

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

Рекомендательные системы: идеи, подходы, задачи

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


Многие привыкли ставить оценку фильму на КиноПоиске или imdb после просмотра, а разделы «С этим товаром также покупали» и «Популярные товары» есть в любом интернет- магазине. Но существуют и менее привычные виды рекомендаций. В этой статье я расскажу о том, какие задачи решают рекомендательные системы, куда бежать и что гуглить.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии7

Сортировка слиянием без использования дополнительной памяти

Время на прочтение4 мин
Количество просмотров38K
Я долгое время думал, что написать сортировку массива слиянием так, чтобы она не использовала дополнительной памяти, но чтобы время работы оставалось равным O(N*log(N)), невозможно. Поэтому, когда karlicos поделился ссылкой на описание такого алгоритма, меня это заинтересовало. Поиск по сети показал, что про алгоритм люди знают, но никто им особо не интересуется, его считают сложным и малоэффективным. Хотя, может быть, они имеют в виду какую-то «стабильную» версию этого алгоритма, но нестабильная при этом все равно никому не нужна.

Но я все-таки решил попробовать.

Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии67

Почему вам следует использовать pathlib

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

От переводчика: Привет, хабр! Представляю вашему вниманию перевод статьи Why you should be using pathlib и её продолжения, No really, pathlib is great. Много внимания нынче уделяется таким новым возможностям Python, как asyncio, оператору :=, и опциональной типизации. При этом за радаром рискуют пройти не столь значительные (хотя, := назвать серьёзным нововведением язык не поворачивается), но весьма полезные нововведения в язык. В частности, на хабре статей, посвящённых сабжу, я не нашел (кроме одного абзаца тут), поэтому решил исправить ситуацию.


Когда я открыл для себя тогда еще новый модуль pathlib несколько лет назад, я по простоте душевной решил, что это всего лишь слегка неуклюжая объектно-ориентированная версия модуля os.path. Я ошибался. pathlib на самом деле чудесен!


В этой статье я попытаюсь вас влюбить в pathlib. Я надеюсь, что эта статья вдохновит вас использовать pathlib в любой ситуации, касающейся работы с файлами в Python.

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии17

Умный парсер числа, записанного прописью

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


Пролог


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


Умным данный парсер делает возможность извлечения чисел из текста с ошибками, допущенными в результате некорректного ввода или в результате оптического распознавания текста из изображения (OCR).


Для ленивых:
Ссылка на проект github: ссылка.


Читать дальше →
Всего голосов 137: ↑136 и ↓1+135
Комментарии59

Черное Зеркало своими руками — обучаем бота на базе своей истории чатов

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

В "Черном Зеркале" была серия (S2E1), в которой создавали роботов, похожих на умерших людей, используя для обучения историю переписок в социальных сетях. Я хочу рассказать, как я попробовал сделать что-то подобное и что из этого получилось. Теории не будет, только практика.


image


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


  • Предсказывать завершение фразы пользователя с учетом истории разговора
  • Работать в режиме чат-бота
  • Синтезировать логи разговоров целиком

Вот что получилось у меня


Бот предлагает завершение фразы


image


Бот предлагает завершение диалога


image


Бот общается с живым человеком


User: привет
Bot: привет
User: как ты?
Bot: собираюсь
User: баг пофиксил?
Bot: нет
User: почему?
Bot: да не получается
User: ты сегодня когда дома будешь?
Bot: не знаю пока
User: ты занят?
Bot: в магазин еду 

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

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

Информация

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