• Датасет: ассоциации к словам и выражениям русского языка

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

      Мы хотим поделиться с сообществом собранной нами базой ассоциаций к словам и выражениям русского языка. Этот набор данных лишён недостатков методов дистрибутивной семантики. Ассоциации хорошо сохраняют эмоциональную полярность и они по своей природе асимметричны. Подробнее расскажем в статье.
      Читать дальше →
    • Как я использую git

        Intro


        Основам git мне пришлось научиться на своем первом месте работы (около трех лет назад).
        С тех пор я считал, что для полноценной работы нужно запомнить всего-лишь несколько команд:


        • git add <path>
        • git commit
        • git checkout <path/branch>
        • git checkout -b <new branch>

        И дополнительно:


        • git push/pull
        • git merge <branch>
        • git rebase master (а что, можно еще и на другие ветки ребейзить? О_о)

        В принципе, я и сейчас во многом так считаю, но со временем волей-неволей начинаешь узнавать интересные трюки.

        Читать дальше →
      • Нейросеть в 11 строчек на Python

        • Перевод

        О чём статья


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

        Дайте код!


        X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
        y = np.array([[0,1,1,0]]).T
        syn0 = 2*np.random.random((3,4)) - 1
        syn1 = 2*np.random.random((4,1)) - 1
        for j in xrange(60000):
            l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
            l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
            l2_delta = (y - l2)*(l2*(1-l2))
            l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
            syn1 += l1.T.dot(l2_delta)
            syn0 += X.T.dot(l1_delta)
        


        Слишком сжато? Давайте разобьём его на более простые части.
        Читать дальше →
      • Рекурсивные запросы в PostgreSQL (WITH RECURSIVE)


          Как ни странно, чтобы понять рекурсию, в PostgreSQL не надо понимать рекурсию. Потому что WITH RECURSIVE, который присутствует в посгресе (и в других серьёзных базах) — это скорее вычисление чего-то итерациями до того, как будет выполнено некоторое условие.
          Тем не менее это очень полезный функционал базы, который можно использовать, например, чтобы вывести все подкатегории заданной категории, если таблица задана в виде (id, parent_id, ...)
          Читать дальше →
        • Введение в OpenSceneGraph

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



          Ядро OpenSceneGraph, собственно граф сцены, — довольно тонкая обёртка вокруг OpenGL, позволяющая задавать иерархию объектов и выполнять над ними любые желаемые преобразования:
          • изменять характеристики узлов (двигать объекты в пространстве, назначать им материалы, свойства освещённости, шейдеры и прочие режимы и атрибуты OpenGL);
          • перестраивать дерево любым желаемым образом (создавать и удалять объекты, перелинковывать их к другим узлам графа);
          • делать обход графа, выполняя для каждого их узлов какие-либо действия;
          • ну и конечно рендерить сцену при помощи OpenGL.

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