Кластеризация текстовых документов по семантическим признакам

Существует огромное количество алгоритмов кластеризации. Основная идея большинства из них – объединить одинаковые последовательности в один класс или кластер на основе сходства. Как правило, выбор алгоритма определяется поставленной задачей. Что касается текстовых данных, то здесь сравниваемыми составляющими служат последовательности слов и их атрибутов (например, вес слова в тексте, тип именованной сущности, тональность и пр.). Таким образом, тексты изначально преобразуются в вектора, с которыми производят разного типа манипуляции. При этом, как правило, возникает ряд проблем, связанных с: выбором первичных кластеров, зависимостью качества кластеризации от длины текста, определением общего количества кластеров и т.п. Но наиболее сложной проблемой является отсутствие связи между близкими по смыслу текстами, в которых используется разная лексика. В таких случаях объединение должно происходить не только на основе сходства, а еще и на основе семантической смежности или ассоциативности.  (далее…)

Классификатор на word2vec

После недавнего диалога возник вопрос поиска классификаторов, способных работать с текстами на русском языке без костылей в виде сборки watson-го NLC и bing translator-а. Решено было свелосипедить макет. За основу взят word2vec для получения векторного представления примеров и пользовательского ввода. Больше примеров работы с ним можно найти, например — тут. Кстати, вопрос более опытным — нет ли более подходящей альтернативы? Классифицировать объемные тексты не планируется. Напомню, что word2vec позволяет получать векторное представление переданного слова (к полученным векторам можно применить сложение/вычитание и умножение на численный коофициент). При этом вектор будет в пространстве, в котором в качестве осей — применим «связанные» слова. (далее…)

Установка и настройка NoSQL субд RethinkDB

RethinkDB - документно-ориентированная база данных, с открытым исходным кодом, с богатыми возможностями администрирования и простой моделью горизонтального масштабирования. Одна особенность, которая выделяет RethinkDB среди других NoSQL баз данных - проста в использовании с различными языками программирования. Эта СУБД поддерживает множество драйверов, таких как: php, python, ruby и т.д, что позволяет разработчикам взаимодействовать с базой данных, используя наиболее знакомый язык программирования. (далее…)

Symfony 2 Joboard : Интерфейс администратора

После завершения 11 части наше приложение вполне работоспособно. Им могут пользоваться как соискатели, так работодатели. Настало время обсудить администраторскую составляющую нашего сайта. При помощи Sonata Admin Bundle мы полностью реализуем интерфейс администратора менее чем за час. (далее…)

5 сайтов для оттачивания навыков написания SQL-запросов

Одним из ключевых навыков при работе с базами данных является умение писать sql-запросы. Мы отобрали 5 лучших сайтов для оттачивания этого навыка.

1. sql-ex и sql-tutorial

Два сайта указаны вместе, так как представляют собой один ресурс. sql-tutorial — это интерактивный онлайн-учебник по изучению SQL, где подробно и структурировано расписана вся необходимая теория, а в конце каждой главы прилагаются уже разобранные упражнения по данной теме с описанием типичных ошибок и способов решения. sql-ex полностью ориентирован на задачи по базам данных. Также стоит отметить возможность приобретения сертификата (платно) и то, что весь материал изложен на русском языке. (далее…)

Traefik как обратный прокси-сервер для контейнеров Docker

Конечно же, для полноценной работы веб-проектов такого простого окружения недостаточно, почти сразу же возникнет проблема – как разместить несколько сайтов на одном сервере? Казалось бы, какая же это проблема – просто по тому же принципу развернуть еще несколько контейнеров? Вот только 80 порт уже занят. И сертификаты для https тоже нужны – без них тебя уже браузер на сайт может не пустить. Сегодня попытаемся исправить эти недочеты и запустим в контейнере прокси-сервер Traefik, который к тому же еще и сертификаты на наш домен автоматически подтянет. (далее…)

Книги по программированию: как читать и что именно

Начинающие программисты часто спрашивают, какие книги по программированию читать и как, чтобы лучше усвоился материал. Отвечаем на эти вопросы.
В этой статье мы расскажем, когда и как нужно читать, а также какие книги выбрать в соответствии с конкретным языком программирования.
(далее…)

Настройка пользовательских и групповых прав доступа с помощью chmod

Вообще, когда мы говорим о каталогах или файлах, нас интересует три набора прав:

  • Пользовательские - касающиеся владельца файла
  • Групповые - права, касающиеся участников одной группы
  • Все остальные - разрешения для тех, кто не подходит к первым двум группам
Соответственно, каждый пользователь имеет своё уникальное имя и, как правило, принадлежит к одной или нескольким группам. Более того в одну группу может входить несколько пользователей.
Заметка: команда chmod в качестве одного из параметров принимает целочисленное значение, которое отвечает за набор прав. По ссылке вы найдете более подробную информацию по теме.
(далее…)

Word2Vec: классификация текстовых документов

Известная утилита дистрибутивной семантики Word2Vec демонстрирует удивительные результаты и стабильно обеспечивает использующих её специалистов призовыми местами на конкурсах машинной лингвистики. Преимущество утилиты, как впрочем, и её аналогов – Glove и AdaGram, состоит в дешевизне процесса обучения и подготовки обучающих текстов. Но есть и недостатки – представление слов в виде векторов хорошо работает на словах, удовлетворительно на словосочетаниях, так-себе на фразах и вообще никак – на длинных текстах.  В данной статье предлагается к обсуждению подход, позволяющий представить текст любой длины в виде вектора, позволяющий проводить с текстами операции сравнения (вычисления дистанции), сложения и вычитания. (далее…)