Как стать автором
Обновить
5
0
Александр Семёнов @semenoffalex

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

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

Python Tips, Tricks, and Hacks (часть 2)

Время на прочтение6 мин
Количество просмотров133K
Содержание

Списки. Свёртка списка (reduce). Прохождение по списку (range, xrange и enumerate). Проверка всех элементов списка на выполнение условия (all и any). Группировка элементов нескольких списков (zip). Еще несколько операторов для работы со списками. Продвинутые логические операции с типом set.
Словари. Создание словаря с помощью именованных аргументов. Преобразование словаря в список и обратно. «Dictionary Comprehensions».
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии30

Как работает yield

Время на прочтение6 мин
Количество просмотров694K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Всего голосов 141: ↑136 и ↓5+131
Комментарии41

Точка, точка, запятая: машинное обучение

Время на прочтение7 мин
Количество просмотров17K
Как научить поисковую машину правильно разбивать текст на предложения? Сделать так, чтобы она могла распознавать точки, которые не являются концами предложений.

Наша статья о машинном обучении объясняет одну из техник, которые применяются в поисковой машине тогда, когда возникает нужда в корректном разбиения текста на предложения. Решение такой задачи имеет принципиальное значение, например, при генерации сниппетов поисковыми системами или при построении базы контекстов словоупотребления. Сейчас эта технология встраивается в индексатор Поиска@Mail.Ru. Точность метода, по нашим наблюдениям — не менее 99%.
О том, как это работает, читайте в нашей статье.
Читать дальше →
Всего голосов 56: ↑41 и ↓15+26
Комментарии8

Нейросети для чайников. Начало

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


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

В данной статье (цикле статей?) я попытаюсь осветить тему нейросетей с точки зрения человека непосвященного, простым языком, на простых примерах, раскладывая все по полочкам, а не «массив нейронов образует перцептрон, работающий по известной, зарекомендовавшей себя схеме».

Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 258: ↑226 и ↓32+194
Комментарии91

Визуальная демонстрация алгоритмов машинного обучения

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


Кандидат наук из Федеральной политехнической школы Лозанны Басилио Норис создал замечательную программу, которая великолепно подходит для демонстрации некоторых задач, которые решают алгоритмы машинного обучения (классификация, кластеризация, регрессия — различными методами). В одной программе собраны библиотеки, алгоритмы и фрагменты кода, которые удалось найти. В отличие от Matlab, здесь GUI работает быстро в интерактивном режиме, поэтому получается очень красиво.

Дистрибутив:
MLDemos 0.3.2 for Windows (минимальные требования: XP SP3)
MLDemos 0.3.2 for Mac (минимальные требования: Snow Leopard)
MLDemos 0.1.3 for Linux 32bit (deb) (билд для: Ubuntu 10.04)
Всего голосов 78: ↑71 и ↓7+64
Комментарии13

Визуализация «В Контакте»: Скажи мне, кто твой друг?

Время на прочтение2 мин
Количество просмотров145K
Привет, Хабралюди!

У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



Это мои друзья. Каждая точка — человек, целый мир, с которым так или иначе мне повезло встретиться. Линия между точками обозначает дружбу. По этой сети можно, правда, сказать многое о человеке.

Как построить свою сеть?
Всего голосов 314: ↑302 и ↓12+290
Комментарии256

Валидация email

Время на прочтение3 мин
Количество просмотров156K
В этой статье рассмотривается валидация email изпользуя регулярные выражения. Все регэкспы выполняются с модификатором i, т.е. делают регистронезависимую проверку.
Читать дальше →
Всего голосов 100: ↑64 и ↓36+28
Комментарии122

8 полезных регэкспов с наглядным разбором

Время на прочтение2 мин
Количество просмотров273K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее
Всего голосов 176: ↑132 и ↓44+88
Комментарии119

Квантификаторы в регулярных выражениях

Время на прочтение8 мин
Количество просмотров76K
imageРегулярные выражения — это арифметика для алгоритмов. Они доступны во многих языках программирования, редакторах и настройках приложений. Как и сложение с умножением они просты в использовании.
Но для правильного и эффективного использования regexp-ов нужно понимание того, как они работают. Я постараюсь описать принцип работы регулярных выражений, покажу в каких случаях бывают проблемы и как их решать.

В продолжение общих советов.
Читать дальше →
Всего голосов 113: ↑109 и ↓4+105
Комментарии40

Номер телефона

Время на прочтение1 мин
Количество просмотров284K
Регулярное выражение для валидации номера телефона:

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).

Читать дальше →
Всего голосов 280: ↑166 и ↓114+52
Комментарии121

Социальные интернет-сервисы как инструменты созидания социальных сред

Время на прочтение11 мин
Количество просмотров2.6K
В октябре 2011 года наш интернет-сервис безвозмездного дарения Дару-дар пригласили поучаствовать в VIII международном научно-практическом междисциплинарном симпозиуме Рефлексивные процессы и управление, проводимом под эгидой Института Философии РАН.

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

Подготовка к философской конференции спровоцировала нас, наконец, оформить свои мысли в текст, который теперь хочется предоставить вниманию IT-сообществу. Как нам представляется, сформулированные нами концепты могут быть полезны всем тем, кто занимается разработкой социальных интернет-сервисов или кто мыслит себя как социальный предприниматель. В данном тексте с помощью понятия «социальная среда» на примере интернет-сервиса дарения делается попытка выделить определенный вид социальных интернет-сервисов и посмотреть на них в широком контексте человеческого общества как такового, его устройства и возможностей преобразования.
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии1

10 миллионов хитов в день с WordPress на сервере за $15

Время на прочтение1 мин
Количество просмотров17K
Английский разработчик Эван Лейт (Ewan Leith) опубликовал пошаговую инструкцию, как поднять виртуальный микросервер на Amazon, Linode или другом облачном хостинге, который сможет крутить блог WordPress и выдерживать 10 миллионов хитов в сутки (отчёт составлен с помощью Blitz.io), при этом будет стоить всего пятнадцать долларов в месяц.

Инструкция описывает, как последовательно установить Ubuntu 11.10 (Oneiric), MySQL, PHP с PHP FPM, APC и модулем MySQL, Nginx с конфигурацией для WordPress, ну и сам WordPress. После этого сервер работает ещё довольно медленно, но всё меняет установка W3 Total Cache и Varnish, которые вместе с Nginx способны сотворить настоящее чудо.

Выполнить действия из инструкции способен даже человек, не являющийся техническим специалистом.
Читать дальше →
Всего голосов 85: ↑74 и ↓11+63
Комментарии81

Этикет хабрапользователя

Время на прочтение1 мин
Количество просмотров850
Чтобы окончательно закрыть тему кармы-шмармы и всего остального, предлагаю придумать что-нибудь вроде этикета хабрапользователя.

Читать дальше →
Всего голосов 499: ↑331 и ↓168+163
Комментарии401

Преимущество книги перед блогом или улучшаем свой блог

Время на прочтение4 мин
Количество просмотров1.6K
Раньше, чтобы узнать ответ на интересующий нас вопрос, мы шли в библиотеку или книжный магазин, находили нужную нам книжную полку, перечитывали множество оглавлений и только после этого, выбрав две-три книги, отдавая чуть ли не последние деньги, шли домой, чтобы внимательно прочитать каждую от корки до корки. Сейчас достаточно иметь интернет, поисковик – и вот мы уже читаем статьи чего-нибудь блога. Казалось бы, всё стало гораздо проще. Но книга – эта целая гора материала, посвященного конкретной теме, и прочитав книгу, мы не только узнали ответ на вопрос, но и стали гораздо лучше разбираться во всей этой теме. Читая же статью блога, мы просто узнаем ответ на вопрос.
Читать дальше →
Всего голосов 42: ↑33 и ↓9+24
Комментарии9

Как избавиться от SMS-спама

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


Слово спам традиционно ассоциируется с email-спамом, и как с ним бороться — более-менее понятно: можно отправлять в «Спам», можно настраивать фильтры, можно жаловаться хостеру спамера. Однако спам — это ещё и лишняя макулатура в ваших почтовых ящиках, и нежелательные SMS в вашем телефоне. И вот что делать с последними — не всегда понятно, хотя раздражают они гораздо больше, ведь, в отличие от email-рассылок, в SMS нет кнопки «отписаться». Вот как бороться с SMS-спамом я и расскажу в этой статье.

Читать дальше →
Всего голосов 73: ↑60 и ↓13+47
Комментарии86

Документация по Grab — библиотеке для парсинга сайтов

Время на прочтение2 мин
Количество просмотров34K
Я ранее уже рассказывал на хабре о Grab — библиотеке для парсинга сайтов и о Spider — асинхронном модуле для парсинга. Рад сообщить, что я наконец-то дописал документацию по Grab. Я решил писать всё на русском языке т.к. на английском языке мне труднее выражать мысли. На деле писанины получилось гораздо больше, чем представлялось в начале, но я таки описал практически все функции библиотеки. Я решил просто вставить сюда, оглавление, кликайте на интересный раздел и читайте о возможностях Grab:
Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии57

Grab — python библиотека для парсинга сайтов

Время на прочтение13 мин
Количество просмотров149K
Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.
Читать дальше →
Всего голосов 80: ↑79 и ↓1+78
Комментарии53

Онлайн-репетитор по Python

Время на прочтение1 мин
Количество просмотров24K
Для курса по программированию MIT разработан интерактивный инструмент Online Python Tutor, он в графическом виде показывает изменение стека и кучи на каждом шаге выполнения кода. Таким образом, онлайновый «наставник» как бы наглядно объясняет студенту работу программы.



В окно редактора можно скопировать любой код или посмотреть несколько уже готовых простеньких примеров (факториал, квадратный корень, последовательность Фибоначчи и т.д.). Навигация осуществляется стрелками на клавиатуре. Студенты, изучающие Python, могут увидеть и лучше понять работу кода.
Всего голосов 88: ↑82 и ↓6+76
Комментарии30

Наиболее часто встречающаяся структура предложений в русском языке по версии библиотеки Флибуста

Время на прочтение6 мин
Количество просмотров4.1K
Я программист php, но захотел расширить горизонты, узнать что ни будь новое. Поэтому решил поучить другие языки и технологии. Выбор пал пока на perl, python и mysql.

Был взят замечательный пакет pymorphy , библиотека Флибуста (только .fb2), sedna для хранения fb2, mysql percona 5.1 для хранения статистики и маленький напильник. Была создана примитивная myisam табличка куда записывалась сколько встречалось предложение, и описание частей речи этого предложения.
Читать дальше →
Всего голосов 63: ↑52 и ↓11+41
Комментарии43

Теория шести рукопожатий: еще одно подтверждение

Время на прочтение4 мин
Количество просмотров77K
Однажды в студеную зимнюю пору я столкнулся с упоминанием того, что кто-то в Facebook пытается подтвердить теорию шести рукопожатий. Для тех кто не в курсе, эта теория заключается в том, что все жители земли в среднем знакомы друг с другом через цепочку из пяти друзей (т.е. шести рукопожатий). Подробнее об истории этой теории можно прочитать в википедии, там же можно узнать о том, что Майкрософт несколько лет назад пыталась подтвердить эту теорию на основе данных о контакт-листах мессенджера MSN — в результате у них получилось 6,6 рукопожатий, что вполне вписывается в теорию.

Очень мне захотелось эту теорию подтвердить самому, используя данные, которые есть под рукой — ВКонтакте. Для претворения моей странной идеи в жизнь надо было решить целый комплекс проблем:
  1. На каких данных это все расчитывать.
  2. Где эти данные взять.
  3. Как эти данные сохранять.
  4. Каким алгоритмом воспользоваться для расчетов.
подробнее о том, что получилось
Всего голосов 211: ↑203 и ↓8+195
Комментарии102

Информация

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