Все потоки
Поиск
Написать публикацию
Обновить
411.8

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Пишем свой Google, или асинхронный краулер с rate limits на Python

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

Меня зовут Александр, я руковожу backend-разработкой в КТS. Сегодня расскажу, как написать асинхронный краулер.

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

Статья написана по мотивам вебинара, который мы провели в рамках нового курса «Асинхронное программирование на Python для начинающих». Курс стартует 18 октября, поэтому, если вам интересно — загляните посмотреть.

Что будет в статье:

1. Цель
2. Исходный код
3. Планировщик
4. Задача для краулера
5. Пробный запуск
6. Промежуточный итог
7. Функции put и join
8. Semaphore
9. Остановка фонового планировщика
10. Работа краулера на примере обкачки нашего блога на Хабре
11. Заключение

Читать далее

Руководство по работе с Django REST Framework, Swagger и созданию клиента TypeScript для API

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

Цели:

Создать API с помощью Django REST Framework;

Создать динамическую документацию Swagger;

Сгенерировать для API код клиента на TypeScript;

Создать базовое приложение на ReactJS, которое будет использовать сгенерированный код на TypeScript для отображения данных из API.

Читать далее

Создайте средство проверки на плагиат с помощью машинного обучения

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

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

Плагиат широко распространен в Интернете и в процессе обучения. При большом количестве контента иногда трудно определить, когда что-то стало плагиатом. 

Авторы, пишущие сообщения в блогах, могут захотеть проверить, не украл ли кто-то их работу и не разместил ли ее в другом месте. Учителя могут захотеть сравнить работы студентов с другими научными статьями на предмет скопированных работ. Новостные агентства могут захотеть проверить, не украла ли контент ферма их новостные статьи и не презентовала ли на это содержание как на свое.

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

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

Мы создадим Python Flask приложение, которое использует  Pinecone - службу поиска сходства для поиска возможного плагиата.

Читать далее

Как я сжимал модель fastText для реальной задачи в 80 раз в 2021 году

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

FastText — это отличное решение для предоставления готовых векторных представлений слов, для решения различных задач в области ML и NLP. Но основным недостатком данных моделей является, то что на текущий момент обученная модель FastText на русскоязычном корпусе текстов Википедии занимает немногим более 16Гигабайт, что в значительной мере сужает возможности использования данной технологией.

На просторах хабра вы уже найдете примеры такого сжатия описанные ранее «Давидом Дале» в статье «Как сжать модель fastText в 100 раз». Решая эту задачу, а применял рекомендации из данной статьи, и к ним мы еще вернемся, но эта статья уже несколько потеряла свою актуальность, так как часть используемых методов более не работают в новой версии библиотеки Gensim 4.0. Кроме того, применяемый в данной статье имеет более общий характер применения, так как сжатая данный образом модель все же не рассчитана на решение узкой задачи, и как показала практика при решении более узких задач, модель теряет в качестве более существенно, чем это показано на примерах.

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

Основная суть примененного мною метода, была в том, чтобы исключить из словаря модели FastText не используемые слова. Так как например модель «wiki_ru», содержит в своем корпусе 1,88 млн слов в словаре, и 2 млн n-грамм токенов, (300 мерных) векторов.

Читать далее

Django Admin с миллионами записей — 11 практик оптимизаций для начинающих

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

Django — самый популярный Python web-framework. За больше чем 10 лет оброс огромным слоем возможностей. Среди них можно выделить — Django Admin — это готовый CRUDL интерфейс с поиском, фильтрами и хитрыми настройками.


Каждый раз стартуя проект на Django, удивляюсь насколько круто иметь админку — web интерфейс просмотра данных. Да еще и бесплатно.


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


В этой статье я постараюсь привести 11 практик, которые позволят избегать тормозов админки максимально долго.

Читать дальше →

SQL в SQLAlchemy

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

Меня зовут Алексей Казаков, я техлид команды «Клиентские коммуникации» в Домклик. По моему опыту подавляющее большинство приложений, взаимодействующих с базой данных, использовали для этого Object Relational Mapper. В этой статье я продолжу знакомить вас с популярными ORM, которые встречались мне в продовых проектах. На очереди всемогущий SQLAlchemy.

Читать далее

Опыт извлечения обучающих данных из генеративных языковых моделей

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

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

A. Extracting Training Data from Large Language Models/Извлечение обучающих данных из больших языковых моделей (генеративных)/Authors: Nicholas Carlini, Florian Tramèr, Eric Wallace, Matthew Jagielski, Ariel Herbert-Voss, Katherine Lee1, Adam Roberts, Tom Brown, Dawn Song, Úlfar Erlingsson, Alina Oprea, Colin Raffel (https://arxiv.org/abs/2012.07805)

B. The Secret Sharer: Evaluating and Testing Unintended Memorization in Neural Networks/Открывающий секреты: оценка и тестирование непреднамеренного запоминания в нейронных сетях/ Nicholas Carlini, Chang Liu, Úlfar Erlingsson, Jernej Kos, Dawn Song. (https://arxiv.org/abs/1802.08232).

C. Membership Inference Attacks Against Machine Learning Models/Атаки на определение членства против моделей машинного обучения/ Reza Shokri, Marco Stronati, Congzheng Song, Vitaly Shmatikov (https://arxiv.org/abs/1610.05820).

D. An Attack on InstaHide: Is Private Learning Possible with Instance Encoding?/Атака на InstaHide: Возможно ли частное (приватное/не допускающее утечек) обучение с помощью кодировния экземпляра при обучении моделей / Nicholas Carlini, Samuel Deng, Sanjam Garg, Somesh Jha, Saeed Mahloujifar, Mohammad Mahmoody, Shuang Song, Abhradeep Thakurta, Florian Tramèr (https://arxiv.org/abs/2011.05315).

E. Comprehensive Privacy Analysis of Deep Learning: Passive and Active White-box Inference Attacks against Centralized and Federated Learning/ Всесторонний анализ конфиденциальности глубокого обучения: Пассивные и активные атаки вывода обучающего набора данных на модель в белом ящике при централизованном и федеративном обучении/ Milad Nasr, Reza Shokri, Amir Houmansadr (https://arxiv.org/abs/1812.00910).

Читать далее

ML-модели в BI: интеграция с Python через JupyterHub

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

Привет, Хабр! Мы продолжаем рассматривать конкретный практический вопрос — интеграцию Python для внедрения ML-моделей и расширенной аналитики в BI. В прошлом посте мы уже рассуждали о том, зачем это нужно, и как можно реализовать подобное расширение. Сегодня же мы остановимся на том, как реализована поддержка Python в популярных BI-системах. И сразу спойлер: в существующих системах (в том числе в Visiology) это было сделано неудобно, и чтобы решить эту проблему, мы придумали новую штуку, а именно — интеграцию с JupyterHub. Под катом — подробный рассказ о том, какие мы знаем подходы к работе с Python, и что меняется в этом процессе при подключении Jupyter Hub. Если вы еще не пробовали эту схему, то скорее давайте читать наш пост, а если уже работали таким образом — давайте обсуждать новый подход в комментариях.

Читать далее

Wagtail — лучшая CMS на python в нашей галактике

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

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

Читать далее

ETL-пайплайны на Airflow: Хороший, Плохой, Злой

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

Airflow это популярная опенсорсная платформа управления задачами. В частности его используют для построения ETL-пайплайнов. Например, мне доводилось переливать данные между базами данных, хранилищами и озерами данных с его помощью. А также я использовал его для препроцессинга данных для моделей машинного обучения. Но так ли подходит Airflow для ETL на сегодняшний день?

В этой статье мы рассмотрим как с помощью Airflow ETL операторов выгрузить данные из Postgres в BigQuery в парадигмах ETL и ELT. Далее разберем сложности, с которыми вы можете столкнуться при реализации инкрементальной загрузки данных в DAG (DAG - directed acyclic graph, ориентированный ацикличный граф - цепочка связанных задач). Наконец, мы обсудим почему Airflow ETL операторы не смогут покрыть все ваши потребности в интеграциях в дальней перспективе.

Читать далее

Веб приложение для анализа и визуализации результатов выборов в Государственную Думу в 2021

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

В результате выборов, которые завершились 19 сентября был сформирован большой массив данных, которые могут рассказать исследователям интресные истории. В статье представлен проект и прототип веб приложения для анализа и визуализации данных выборов в Государственную Думу 2021. В проекте используется фреймворк Django и набор библиотек : Pandas, Matplotlib. 

Читать далее

Выбираем логин на Яндекс.Почте

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

Много лет назад я зарегистрировал себе несколько трех- и четырехсимвольных адресов на Яндекс.Почте. Они оказались очень удобными, потому что их легко писать и диктовать, особенно вместе с доменом ya.ru.

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

В статье вы найдете все, что вряд ли хотели знать, но теперь имеете отличную возможность узнать, о формате и количестве логинов Яндекса, а также датасет, с помощью которого сможете попробовать разобраться с «6-q» аномалией (у меня не получилось).

Читать далее

Как понять ROC-кривые с помощью Python

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

Если вы погуглите ROC curve machine learning, то Википедия выдаст вам такой ответ: Кривая рабочих характеристик приёмника, или ROC-кривая, представляет собой график функции, который иллюстрирует диагностические возможности системы двоичного классификатора при изменении её порога распознавания.

Ещё одно частое описание ROC-кривой: ROC-кривая отражает чувствительность модели к разным порогам классификации. Новичков эти определения могут сбить с толку. Попробуем разобраться и развить представление о ROC-кривых.

Читать далее

Ближайшие события

Разбираемся с параллельными и конкурентными вычислениями в Python

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

Я собираюсь рассказать историю о еде, раскрывающую различные возможности конкурентного и параллельного выполнения кода в Python.

Прим. Wunder Fund: для задач, где не критичны экстремально низкие задержки — при сохранении и обработке биржевых данных, мы используем Питон, и естественно применяем описанные в статье подходы. Статья будет полезна начинающим разработчикам.

Мы увидим, что когда один человек одновременно делает несколько дел — это похоже на конкурентность, а когда несколько человек, работая бок о бок, заняты каждый собственным делом — это напоминает параллелизм. Эти ситуации мы разберём на простом и понятном примере закусочных, в которые люди заходят в обеденный перерыв. Такие заведения стремятся обслуживать клиентов как можно быстрее и эффективнее. Потом я покажу реализацию механизмов этих закусочных на Python, а в итоге мы сравним разные возможности одновременного «приготовления нескольких блюд», которые даёт нам этот язык, и разберёмся с тем, в каких ситуациях их применение наиболее оправдано.

А именно, я раскрою здесь следующие вопросы:

▪ Отличия конкурентности от параллелизма.
▪ Различные варианты организации конкурентного выполнения кода (многопоточность, модуль asyncio, модуль multiprocessing, облачные функции) и их сравнение.
▪ Сильные и слабые стороны каждого подхода к организации конкурентного выполнения кода.
▪ Выбор конкретного варианта организации конкурентного выполнения кода с использованием специальной блок-схемы.

Читать далее

RAD для софт-процессоров и немного «сферических коней в вакууме»

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

Разработка или выбор управляющего контроллера для встраиваемой системы на ПЛИС –актуальная и не всегда тривиальная задача. Часто выбор падает в пользу широкораспространенных IP-ядер, обладающих развитой программно-аппаратной структурой – поддержка высокопроизводительных шин, периферийный устройств, прикладное программное обеспечение и, в ряде случаев, операционных систем (в основном Linux, Free-RTOS).  Одними из причин данного выбора являются желание обеспечить достаточную производительность и иметь под рукой готовый инструментарий для разработки программного обеспечения.

В том случае, если применяемая в проекте ПЛИС не содержит аппаратных процессорных ядер, реализация полноценного процессорного ядра может быть избыточной, или вести к усложнению программного его обеспечения, а следовательно приведет к увеличению затрат на его разработку. Кроме того, универсальное софт-ядро будет, так или иначе, занимать дефицитные ресурсы программируемой логики. Специализированный софт-процессор будет более оптимальным решением в свете экономии ресурсов логики – за счет адаптированной системы команд, небольшого количества регистров, разрядности данных (вплоть до некратной 8битам). Согласование с периферийными устройствами – проблема в основном согласования шин и протоколов. Заменой сложной системы обработки прерываний может служить многопоточная архитектура процессора.

Стековые софт-процессоры и контекст потока

Обычно многопоточные процессоры имеют одно АЛУ и несколько наборов регистров (иногда называемых «теневыми» регистрами) для хранения контекста потока, следовательно, чем больше требуется потоков, тем будут больше накладные расходы логики и памяти. Среди разнообразия архитектур софт-процессорных ядер следует выделить стековую архитектуру. Такие процессоры часто называют еще Форт-процессорами, так как чаще всего их ассемблер естественным образом поддерживает подмножество команд языка Форт.

Читать далее

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

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

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

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

Читать далее

Автоматизированная сборка документа «Текст программы» по ЕСПД с помощью python-docx

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

Вариант автоматизированного формирования документа в формате *.docx с использованием скрипта на языке Python и библиотеки python-docx. Как правильно подготовить документ стандартными средствами Microsoft Office, что нужно учесть при создании скрипта, порядок сборки и сохранения документа.

Читать далее

Построение модели оттока сотрудников для разработки стратегии удержания

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

Увольнение сотрудников дорого обходится компаниям. Стоимость замены ушедшего сотрудника зачастую очень высока. Исследования Центра Американского прогресса говорят, что компании обычно тратят около одной пятой части годовой зарплаты сотрудника, чтобы найти ему замену. И траты эти могут изрядно возрасти, если требуется замена для руководящего или высокооплачиваемого сотрудника. Затраты приходятся на проведение интервью в процессе поиска замены, бонусы на входе, и потерю производительности работы в течение первых месяцев, пока сотрудник входит в новую роль.

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

Читать далее

Как написать генератор изображений, который вас понимает

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

Автор статьи рассказывает, как за неделю создал Text2Art.com — генератор изображений на основе VQGAN+CLIP, способный рисовать пиксель-арт и живопись, а также изображать то, что вы напишете в текстовом поле.

Для интерфейса используется Gradio, модель работает на сервере FastAPI, а системой очереди сообщений служит Firebase. Подробностями делимся к старту курса по ML и DL.

Читать далее

Я написал Scaffold-библиотеку Django, которая создает полнофункциональный REST API за секунды

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

Меня зовут Абденассер, и сегодня я покажу, как пользоваться небольшой scaffold-библиотекой для создания готовых к использованию полнофункциональных REST API на Django за секунды из командной строки, которую я разработал на прошлой неделе.

Читать далее

Вклад авторов