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

    @kmike
    Проблема не в том, что с нейронными сетями дела не имели, а в том, что не знаете, как задачу сформулировать так, что ее можно было решать методами машинного обучения. Я бы посоветовал какой-нибудь вводный курс по ML (на coursera или udacity?), без разницы, с нейросетями или без. Если поймете, как задачу сформулировать (что на входе, что на выходе - что найти надо), то станет очевидно, как нейросеть (или любой другой классификатор) применять. Если в задаче не нужно код для нейросети писать, можно готовую реализацию взять, если нужно - ну написать можно; я так понимаю, проблема-то не в этом.
    Ответ написан
  • Как решить проблему со склонением городов и pymorphy2?

    @kmike
    Конкретно для примеров из вопроса все решается в рамках pymorphy2 как-то так:

    from pymorphy2.shapes import restore_capitalization
    
    def inflect_all(morph, text, required_grammemes):
        tokens = text.split()
        inflected = [
            restore_capitalization(
                morph.parse(tok)[0].inflect(required_grammemes).word,
                tok
            )
            for tok in tokens
        ]
        return " ".join(inflected)


    Больше информации - см. в гуглогруппе: https://groups.google.com/forum/?fromgroups#!topic...

    Подозреваю, что решение от Яндекса тоже будет ошибаться время от времени, и для него тоже хорошо бы прикрутить ручную исправлялку. Но работать должно все-таки получше, чем pymorphy2, т.к. библиотека pymorphy2 специально для склонения не затачивалась пока.
    Ответ написан
  • Scrapy — множественные страницы в единственный item

    @kmike
    Можно сделать так: добавлять запросы на получение размера по одному — get_page_size вызывает следующий get_page_size и т.д., пока что-то еще есть в очереди. Последний в цепочке возвращает элемент. «Очередь» можно передавать через meta.

    Я не спец — возможно, есть варианты и лучше.
    Ответ написан
  • Самый быстрый алгоритм определения страны по номеру телефона

    @kmike
    Вариант со словарем — хороший. Можно попробовать выжать еще крохи: не делать несколько запросов в хэш-таблицу (причем, скорее всего, в цикле на питоне) для определения кодов стран, а вместо этого мэппинг «код страны» -> «страна» хранить в Trie (или DAWG).

    В github.com/kmike/datrie есть метод longest_prefix_item, которым можно получить самый длинный префикс данного номера и соответствующий ему объект. Записываем в datrie.Trie мэппинг «префикс-страна», вызываем longest_prefix_item и готово.

    Вполне может оказаться быстрее (главным образом за счет того, что итерация будет вынесена в C-расширение и не нужно будет создавать копии строк длины 1, 2, 3 и тд). Гарантировать, что будет быстрее, не могу, но, в любом случае, с Trie из питона должно как минимум 1млн номеров/сек получаться.
    Ответ написан
  • 12 летка хочет учиться программировать

    @kmike
    Есть книга, на английском, Invent With Python, для детей от 10 лет подходит; в ней изучают питон, делая на нем разнообразные игры. Книга доступна под CC: него inventwithpython.com/chapters/

    Она на английском. Если с этим проблемы, то можно ее подростку переводить.
    Ответ написан
  • Beautiful Soup, html5lib или lxml?

    @kmike
    @ur001, посмотрел еще раз код lxml, там есть много всяких регекспов, разбросанных по модулям ( github.com/lxml/lxml/blob/master/src/lxml/html/clean.py#L62 ), но я был не прав совершенно: парсинг html в lxml основан большей частью на парсинге xml.

    Т.е. lxml считает, что html — это просто невалидный xml, который можно поправить. С теоретической точки зрения предположение неверное, для парсинга html5 и xml нужны совсем разные парсеры, но на практике часто работает.
    Ответ написан
  • Beautiful Soup, html5lib или lxml?

    @kmike
    У html5lib самый корректный и надежный парсер (по спецификации), но она медленная. lxml быстрее всех и парсит достаточно хорошо. Вместо SAX можно iterparse использовать, это удобнее часто, и часто быстрее.
    Ответ написан
  • как запустить pyquery с python 3.1?

    @kmike
    Все так, 90-95% пакетов под python3 сейчас не работают. Пока практичнее 2й питон использовать, он не сильно хуже 3го (большинство фич в 2.7 есть), а инфраструктура гораздо богаче. Еще как минимум год-два третьей версии, думаю, нужно будет, чтобы стать мейнстримом.
    Ответ написан
  • Scrapy - Python

    @kmike
    Может там ограничение стоит не на кол-во запросов в минуту или секунду, а на кол-во запросов в час, например.
    Ответ написан
  • С какой версии начать изучение python?

    @kmike
    На pypi 97-98% пакетов (глянул сейчас, цифра не от балды) не работают с python 3. Большинство новых появляющихся библиотек тоже не поддерживают python 3, так что цифра 98% меняется не быстро. Почти все «большие» библиотеки не работают с python 3 — особенно те, что для веба (включая django, Pylons и twisted), и вряд ли будут с ним работать в скором будущем.

    Если хотите эффективно использовать знания на практике в ближайшие пару-тройку лет, то учите 2й питон. За пару лет может поменяться дико много всего, и учить что-то так заранее просто нет смысла.
    Ответ написан
  • python, применение locale.setlocale

    @kmike
    Скрипт, значит, кривой, и правильнее его чинить, чем симптомы лечить. Это совершенно не нормально, когда работа скрипта зависит от локали системы, это очевидный баг.

    Но хотя если «в питоне не эксперт, выбрал его для того скрипта просто интереса ради.», то уж не знаю, что посоветовать.
    Ответ написан
  • Куда идти после php? Ruby или Python?

    @kmike
    Учите питон.

    Он сделает Вас более хорошим программистом, т.к. python

    a) не приветствует трюкачество
    b) учит принимать самые простые (KISS) решения, не усложнять ничего

    образовательный аспект в python очень явно выражен — всегда есть 1 правильный способ сделать что-то. Очень полезная «промывка мозгов» получается, не встречал такого ни в одном другом языке. Учишься смотреть на код «свысока», думаешь больше о том, как его организовать, а не как его написать. После питона на других языках начинаешь писать лучше, т.к. в голове остаются полезные идеи и принципы.

    Ruby несколько «мощнее» как язык, дает больше свободы, позволяет делать больше разных трюков и не имеет такой выраженной идеологии. Мне кажется, что выучить ruby тоже полезно и практично, это хороший язык, но python учить полезнее из-за того, что он учит правильным вещам (например, избегать трюков всеми силами).

    Еще вариант — выучить javascript. Именно хорошо выучить, чтобы понимать все ФП-фишки языка и его нестандартную объектную модель. Гуру js мало, толпы умеют сделать свистелку на jQuery и не более того. С хорошим знанием js можно довольно просто писать всякие супер-быстрые асинхронные realtime-штуки на node.js. По «мощности» язык вполне адекватен Ruby и Python'у, разве что имеет несколько менее приятный синтаксис и меньше библиотек для серверной части.

    Библиотек и для python, и для ruby полно. Imho их больше, чем для php, и способы распространения у них лучше. В питоне есть стандартная библиотека на все случаи жизни с кучей полезностей. Коммьюнити очень разное — в ruby-коммьюнити вы увидите красивые сайты, рекламирующие те или иные библиотеки, кучу эпитетов awesome, каждый второй будет rock-star-programmer и тд, в python-коммьюнити вы увидите, скорее всего, скучноватых суровых инженеров. Я, понятное дело, преувеличиваю)

    Области применения у языков похожие, скорость похожая, возможности похожие. Основной критерий тут — нравится/не нравится.
    Ответ написан