NLPx

Tales of Data Science

Условные случайные поля (CRF): краткий обзор

На этой картинке вы видите условное случайное поле.

Продолжаю выкладывать тексты, которые когда-то писал по рабочей надобности. Этот текст был составлен в конце 2014 года, но вполне актуален и сейчас.

В связи с бурным развитием глубинных нейросетей мы как-то начали забывать о простых статистических тружениках машинного обучения. Хватит это терпеть!

Здесь содержится краткий конспект по алгоритму CRF (conditional random fields, условные случайные поля), который я писал для доклада на внутренней конференции. Как обычно — минимум теории (кроме самой интересной) и совсем немного занудства. Пригодится всем, кто любит краткие конспекты. Здесь все, что вы хотели знать о CRF, но боялись спросить (но это не точно).

Добро пожаловать под кат!

Read More

3,677 просмотров всего, сегодня нет просмотров

Чат-боты: обзор и состояние технологий в отрасли

В последнее время (где-то с февраля-марта 2016 года) очень много и часто говорят про чат-ботов. Насколько это модно, стильно и молодежно? Какие перспективы — рыночные и технологические? Кто виноват и что делать? Об этом вы не узнаете, пока не прочитаете весь опубликованный здесь текст.

Если интересно — покорнейше прошу читать дальше. Если нет, то все равно попробуйте прочитать — вдруг понравится?

Read More

13,220 просмотров всего, 12 просмотров сегодня

Примеры отчетов по анализу данных (на английском)

Недавно я нашёл несколько примеров отчетов по анализу данных, которые делали я и мои коллеги в 2013 для тренировки, во время прохождения курса Data Analysis на Курсере. Отчеты на английском языке, могут пригодится в качестве примера всем интересующимся 🙂

Отчеты сделаны по итогам анализа двух наборов данных — Lending Club dataset и Samsung Smartphones dataset. В отчетах нет никаких шедевральных алгоритмов и всякого такого — только четкая структура, последовательность изложения и интересные выводы.

Так как для того, чтобы прочитать отчеты, вам все равно нужно знать английский, то я без каких-либо сомнений просто перенаправляю вас на английскую версию текста. Там есть все — сами примеры, ссылки на наборы данных и парочка забавных картинок. Неужели для счастья нужно что-то еще?

Итак, нажмите сюда для перехода. (не пугайтесь, это не внешняя ссылка)

2,797 просмотров всего, сегодня нет просмотров

История об LDA2vec: взболтать, но не смешивать

catdog_word2vec_cropped

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

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

Вы также можете прочитать этот текст на английском

И сейчас я расскажу вам историю об lda2vec и моих попытках поиграться с реализацией и сравнить ее с алгоритмом LDA. Итак, однажды в студеную зимнюю пору…

Read More

5,604 просмотров всего, 2 просмотров сегодня

Google может в Open Source: TensorFlow

TensorFlow

Недавно, 10 дней назад, когда я был на конференции AINL-ISMW FRUCT 2015 (про нее напишу чуток позже), узнал, что Google выпустил TensorFlow в виде ПО с открытым исходным кодом (который опенсорс). И это здорово, хотя вызывает ряд вопросов, на некоторые из которых я попробую ответить ниже.

Read More

4,308 просмотров всего, сегодня нет просмотров

Немного про word2vec: полезная теория

Homer sez

Когда-то мне было нужно узнать кое-что про то, как устроен word2vec и — удивительно — нигде нормальной информации я не нашёл. В половине статей просто демонстрировали формулы и умные слова (я тоже так могу), в другой половине информация была не очень полной. То, что мне было нужно, я собирал по крупицам. настала пора поделиться этими крупицами, особенно, если учесть, что уже почти полгода я ничего не публиковал.

Поэтому здесь я немного расскажу о том, что такое word2vec, зачем он нужен, как он работает — и прочие мелочи. Статья теоретическая (про сам word2vec, а не про векторное пространство, если что), написана достаточно простым языком, но все же содержит в себе практические идеи. Enjoy!

Read More

25,254 просмотров всего, 11 просмотров сегодня

API Вконтакте + NetworkX = социальный граф!

interest-graphs-social-graph

Попалась мне тут когда-то интересная задача — быстро и максимально просто (с минимумом привлекаемых библиотек) нарисовать граф пересечения пользователей разных групп Вконтакте. И я ее даже сделал. Затем подумал — а вдруг кому-то еще нужно будет сделать что-то подобное?

Поэтому здесь я расскажу и покажу, как же всё-таки делать такие вещи:

1. Подключаться к веб-сайту вконтакте с помощью Python 2.7 (всегда можно переписать под 3.x, если что)

2. Создавать графы с помощью библиотеки NetworkX (здесь рассматриваем графы пересечений аудитории групп вконтакте)

3. Визуализировать эти графы (тут нам немного понадобится библиотека matplotlib)

Read More

8,028 просмотров всего, сегодня нет просмотров

Data Analyst vs. Data Scientist — в чём различие?

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

Вот они, эти профессии:

1. Data Analyst (аналитик данных)

2. Data Mining Specialist (специалист по интеллектуальной обработке данных)

3. Data Scientist (ученый по данным)

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

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

Read More

9,737 просмотров всего, 8 просмотров сегодня

Статистический анализ пользователей Stackoverflow и GitHub: кого больше?

stackovwerflow_github

Когда-то относительно недавно я опубликовал сокращенную версию этой статьи на хабрахабре, а сейчас откопал в отвалах породы на жестком диске полную ее версию. Этот пост представляет собой вполне официальный отчет по довольно поверхностному (то есть я не зарывался глубоко в систему рейтингов, например) статистическому анализу по пользователям двух популярных ресурсов — Stack Overflow (stackoverflow.com) и GitHub (github.com).

Из каких стран больше всего пользователей? Пользователи каких стран коммитят чаще? А каково место России на этом празднике жизни? Кто виноват и что делать? — ответы на эти вопросы можно найти здесь.

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

Ну и, надеюсь, никого не введет в уныние сухость изложения 🙂

А еще этот пост можно прочитать на английском. Впрочем, русская версия гораздо полнее.

Read More

3,688 просмотров всего, сегодня нет просмотров

TF-IDF с примерами кода: просто и понятно

TF-IDFtfidf_blg-1024x295

Здесь я расскажу и покажу в примерах на Python, зачем и как считать стандартный TF-IDF, а также его вариации. Примеры я буду давать по ходу объяснения. Чтобы их понять, нужно иметь представления о базовых понятиях языка программирования Python в версии 2.х либо 3.х (основные типы данных, основные структуры данных, цикл-ветвление, функция, основы генераторов списков и словарей) и понимать, как применять класс Counter из стандартной библиотеки collections

Read More

12,074 просмотров всего, 5 просмотров сегодня