Обновить
570.43

Python *

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

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

Передача динамических объектов от setup к тестовой функции в py.test

Время на прочтение5 мин
Охват и читатели2.1K

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


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

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

Пишем матчмейкинг для Доты 2014 года

Время на прочтение5 мин
Охват и читатели4.8K
Всем привет.

Этой весной я наткнулся на проект, в котором ребята научились запускать Dota 2 сервер версии 2014 года и, соответственно, играть на нем. Я большой фанат этой игры, и не смог пройти мимо уникальной возможности окунуться в свое детство.

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



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

VK-api: Бот-викторина

Время на прочтение4 мин
Охват и читатели7.9K

Введение


Месяца три назад мы с друзьями по сети «ВКонтакте» в общем чате (беседе) играли в угадайку — игру по мультфильму «Смешарики», который мы все любим. Правила: ведущий пишет цитаты персонажей мультика, игроки угадывают из какой серии эта цитата. Я решил сделать игру более интересной, и назначить на роль ведущего бота.
Читать дальше →

Большая история аргументов функций в Python

Время на прочтение11 мин
Охват и читатели89K
Ну, на самом деле, история аргументов в Python не такая уж и большая.

Я всегда удивлялся тому, что для работы с аргументами Python-функций достаточно лишь разобраться с *args и **kwargs. И удивлялся я не зря. Как оказалось, аргументы — это далеко не так просто. В этом материале я хочу дать общий обзор всего того, что связано с аргументами функций в Python. Надеюсь, что в итоге у меня, и правда, получится показать общую картину работы с аргументами, и что эта статья не станет очередной публикацией, в которой читателю не удастся найти ничего нового. А теперь — к делу.



Большинству читателей этой статьи, полагаю, понятна сущность аргументов функций. Для начинающих поясню, что это — объекты, отправляемые функции инициатором её вызова. При передаче аргументов функции выполняется множество действий, зависящих от того, объекты какого типа отправляют функции (изменяемые или неизменяемые объекты). Инициатор вызова функции — это сущность, которая вызывает функцию и передаёт ей аргументы. Говоря о вызове функций, стоит поразмыслить над некоторыми вещами, которые мы сейчас обсудим.
Читать дальше →

Почему здравый смысл важнее паттернов, а Active Record не так уж и плох

Время на прочтение6 мин
Охват и читатели31K
Так уж вышло, что разработчики, особенно молодые, любят паттерны, любят спорить о том, какой паттерн нужно применять здесь или там. Спорить до хрипоты: это фасад или прокси, а может даже синглтон. А если у вас не чистая, гексагональная архитектура, то некоторые разработчики готовы сжечь на костре Святой Инквизиции.

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

А наличие во фреймворке нужных паттернов никак не гарантирует их правильного и осознанного применения.


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

Как писать аккуратные конвейеры для машинного обучения

Время на прочтение13 мин
Охват и читатели5.1K
Здравствуйте, Хабр.

Тема конвейеризации и распараллеливания машинного обучения давно фигурирует у нас в проработке. В частности, интересно, достаточно ли для этого специализированной книги с акцентом на Python, либо нужна более обзорная и, возможно, сложная литература. Мы решили перевести вводную статью об устройстве конвейеров для машинного обучения, содержащую как архитектурные, так и более прикладные соображения. Давайте обсудим, актуальны ли поиски в этом направлении.
Читать дальше →

Автоматизируем обработку изображений с помощью Jupyter и Python

Время на прочтение2 мин
Охват и читатели11K
Вряд ли вам захочется разбираться с обработкой изображений в графических редакторах, если вы знаете, как сделать это с помощью открытых библиотек для Python.


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

Распознавание мяча в волейболе с OpenCV и Tensorflow

Время на прочтение4 мин
Охват и читатели8.1K
После первого опыта распознавания спортивных движений у меня зачесались руки сделать что-нибудь еще в этом направлении. Домашняя физкультура уже казалась слишком мелкой целью, так что я замахнулся на игровые виды спорта.

Применение искусственного интеллекта к спорту — недавняя тенденция, но уже есть интересные материалы:


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

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

Конфуций и Маргарита

Время на прочтение6 мин
Охват и читатели3K


Вступление


Соревнований по машинному обучению как и платформ, на которых они проводятся, существует немало и на любой вкус. Но не так часто темой контеста является человеческий язык и его обработка, еще реже такое соревнование связано с русским языком. Недавно я принимал участие в соревновании по машинному переводу с китайского на русский, прошедшего на платформе ML Boot Camp от Mail.ru. Не обладая большим опытом в соревновательном программировании, и проведя, благодаря карантину, все майские праздники дома, удалось занять первое место. Про это, а также про языки и подмену одной задачи другой я постараюсь рассказать в статье.
Читать дальше →

VKWave — фреймворк для разработки ботов ВКонтакте

Время на прочтение3 мин
Охват и читатели10K


Привет, Хабр!


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


VKWave


VKWave — это фреймворк для разработки ботов ВКонтакте, написанный с помощью asyncio. Основные цели проекта — дать возможность разработчику конфигурировать фреймворк максимально под себя, в тоже время обеспечивая достойную скорость разработки.

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

Первые шаги в визуализации данных с использованием Geopandas и OSM

Время на прочтение8 мин
Охват и читатели39K

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

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

pyOpenRPA туториал. Управление WEB приложениями

Время на прочтение19 мин
Охват и читатели9.9K

Долгожданный туториал по управлению сторонними WEB приложениями с помощью pyOpenRPA. Во 2-й части мы разберем принципы роботизированного воздействия на HTML/JS. А также своими руками сделаем небольшого, но очень показательного робота.


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


pyOpenRPA туториал. Управление WEB приложениями


Для тех, кто с нами впервые


pyOpenRPA — это open source RPA платформа, которая в полной мере позволяет заменить топовые коммерческие RPA платформы.


Подробнее про то, чем же она полезна, можно почитать здесь.


Навигация по туториалам pyOpenRPA


Туториал сверстан в виде серии статей, в которых будут освещаться ключевые технологии, необходимые для RPA.


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


Перечень статей-туториалов (опубликованные и планируемые):



А теперь перейдем к самому туториалу.

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

Попытка определить язык манускрипта Войнича, Random Forest Classifier

Время на прочтение9 мин
Охват и читатели20K
Пытаемся определить язык таинственной рукописи — манускрипта Войнича — простыми методами обработки естественных языков на Python.


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

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

Визуализация статистики Яндекс Директ своими руками. От API до Data Studio

Время на прочтение3 мин
Охват и читатели5.9K
Мне, как специалисту по рекламе, требуется постоянно присматривать за клиентами. В этом мне помогает Data Studio.
Однако специалистам по рекламе редко выделяют бюджеты на аналитику, поэтому приходится делать все своими руками.

Что нужно сделать чтобы визуализировать Яндекс Директ в Data Studio:

  1. Получить токен от своего аккаунта (за этим в справку Директа)
  2. На Python Написать запрос к серверу Яндекс Директ
  3. Сложить статистику в Pandas Data Frame
  4. Отправить данные в Google Big Query
  5. Построить визуализацию в Data Studio на основе данных в Google Big Query


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

Калькулятор Wolframalpha в диалоге Telegram

Время на прочтение2 мин
Охват и читатели18K

Идея


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

$\sqrt{4} * 2^x * \frac {1} {3}=1024$

, а не так sqrt(4)*2^x * 1/3 =1024.
Но не менее часто, мне в телеграме необходим функционал WolframAlpha: посчитать сложный счет за вечеринку с друзьями, различные проценты, решить уравнение и так далее — полный функционал WolframAlpha, но при этом не выходить из диалога телеграма.
Читать дальше →

Создание голосового ассистента на Python, часть 1

Время на прочтение3 мин
Охват и читатели69K
Добрый день. Наверное, все смотрели фильмы про железного человека и хотели себе голосового помощника, похожего на Джарвиса. В этом посте я расскажу, как сделать такого ассистента с нуля. Моя программа будет написана на python 3 в операционной системе windows. Итак, поехали!

Реализация

Работать наш ассистент будет по такому принципу:

  1. Постоянно «слушать» микрофон
  2. Распознавать слова в google
  3. Выполнять команду, либо отвечать

1) Синтез речи

Для начала мы установим в систему windows русские голоса. Для этого переходим по ссылке и скачиваем голоса в разделе SAPI 5 -> Russian. Там есть 4 голоса, можно выбрать любой, какой вам понравится. Устанавливаем и идём дальше.

Нам нужно поставить библиотеку pyttsx3 для синтеза речи:

pip install pyttsx3
Читать дальше →

CLI приложение + Dependency Injector — руководство по применению dependency injection + Вопросы / ответы

Время на прочтение15 мин
Охват и читатели19K
Привет,

Я создатель Dependency Injector. Это dependency injection фреймворк для Python.

Это завершающее руководство по построению приложений с помощью Dependency Injector. Прошлые руководства рассказывают как построить веб-приложение на Flask, REST API на Aiohttp и мониторинг демона на Asyncio применяя принцип dependency injection.

Сегодня хочу показать как можно построить консольное (CLI) приложение.

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

Руководство состоит из таких частей:
Читать дальше →

Обзор методов создания эмбедингов предложений, Часть2

Время на прочтение20 мин
Охват и читатели7.9K

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


Часть1 обязательна для ознакомления


4. BERT


from deeppavlov.core.common.file import read_json
from deeppavlov import build_model, configs
from deeppavlov.models.embedders.elmo_embedder import ELMoEmbedder
# ссылка для скачивания моделей http://docs.deeppavlov.ai/en/master/features/pretrained_vectors.html

4.1 rubert_cased_L-12_H-768_A-12_pt


class RU_BERT_CLASS:
    def __init__(self, name):
        bert_config = read_json(configs.embedder.bert_embedder)
        bert_config['metadata']['variables']['BERT_PATH'] = os.path.join('./.', name)
        self.m = build_model(bert_config)

    def vectorizer(self, sentences):
        return [sentence.split() for sentence in sentences]

    def predict(self, tokens):
        _, _, _, _, sent_max_embs, sent_mean_embs, _ = self.m(tokens)
        return sent_mean_embs

bert = RU_BERT_CLASS('rubert_cased_L-12_H-768_A-12_pt')
get_similarity_values = similarity_values_wrapper(bert.predict, bert.vectorizer, distance_function=cosine_distances)
evaluate(get_similarity_values, 'rubert')

'rubert: 2895.7'

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

Обзор методов создания эмбедингов предложений, Часть1

Время на прочтение18 мин
Охват и читатели16K

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


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


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


Например две фразы 'эпл лучше самсунг' от 'самсунг лучше эпл', должны быть на противоположном конце по одному из значений вектора, но при этом совпадать по другим.


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


https://cdn-media-1.freecodecamp.org/images/1*bt-E2YcPafjiPbZFDMMmNQ.jpeg

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

Выявляем признаки аудиомонтажа методами AI

Время на прочтение4 мин
Охват и читатели3.3K

Одной из задач фоноскопической экспертизы является установление подлинности и аутентичности аудио записи — другими словами, выявление признаков монтажа, искажения и изменения записи. У нас возникла задача её проведения в целях установления подлинности записей – определения того, что на записи не осуществлялось никаких воздействий. Но как провести анализ тысяч, и даже сотен тысяч аудиозаписей?

Нам на помощь приходят методы AI, а также утилита по работе с аудио, о которой мы рассказывали в статье на сайте NewTechAudit «ОБРАБОТКА АУДИО С ПОМОЩЬЮ FFMPEG».

Как проявляются внесенные изменения в аудио? Как отличить файл, который изменили, от нетронутого файла?

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

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