Посты с тэгом nlp


[Из песочницы] Анализ эмоциональной окраски отзывов с Кинопоиска

Вступление


Обработка естественного языка (NLP) является популярной и важной областью машинного обучения. В данном хабре я опишу свой первый проект, связанный с анализом эмоциональной окраски кино отзывов, написанный на Python. Задача сентиментного анализа является довольно распространенной среди тех, кто желает освоить базовые концепции NLP, и может стать аналогом 'Hello world' в этой области.

В этой статье мы пройдем все основные этапы процесса Data Science: от создания собственного датасета, его обработки и извлечения признаков с помощью библиотеки NLTK и наконец обучения и настройки модели с помощью scikit-learn. Сама задача состоит в классификации отзывов на три класса: негативные, нейтральные и позитивные.
Читать дальше →


Создание простого разговорного чатбота в python

Как выдумаете, сложно ли написать на Python собственного чатбота, способного поддержать беседу? Оказалось, очень легко, если найти хороший набор данных. Причём это можно сделать даже без нейросетей, хотя немного математической магии всё-таки понадобится.

Идти будем маленькими шагами: сначала вспомним, как загружать данные в Python, затем научимся считать слова, постепенно подключим линейную алгебру и теорвер, и под конец сделаем из получившегося болтательного алгоритма бота для Телеграм.

Этот туториал подойдёт тем, кто уже немножко трогал пальцем Python, но не особо знаком с машинным обучением. Я намеренно не пользовался никакими nlp-шными библиотеками, чтобы показать, что нечто работающее можно собрать и на голом sklearn.



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



Открытый курс «Deep Learning на пальцах»

После 18-го февраля начнется открытый и бесплатный курс "Deep Learning на пальцах".


Курс предназначен для того, чтобы разобраться с современным deep learning с нуля, и не требует знаний ни нейросетей, ни machine learning вообще. Лекции стримами на Youtube, задания на Питоне, обсуждения и помощь в лучших русскоязычных DS-сообществах — ODS.ai и ClosedCircles.


После него вы не станете экспертом, но поймете про что все это, сможете применять DL на практике и будете способны разбираться дальше сами. Ну, в лучшем случае.


Одновременно и в том же объеме курс будет читаться для магистрантов Новосибирского Государственного Университета, а также студентов CS центра Новосибирска.


Выглядеть объяснение на пальцах будет примерно так:





Парсим Википедию для задач NLP в 4 команды

Парсим Википедию для задач NLP в 4 команды


Суть


Оказывается для этого достаточно запуcтить всего лишь такой набор команд:


git clone https://github.com/attardi/wikiextractor.git
cd wikiextractor
wget http://dumps.wikimedia.org/ruwiki/latest/ruwiki-latest-pages-articles.xml.bz2
python3 WikiExtractor.py -o ../data/wiki/ --no-templates --processes 8 ../data/ruwiki-latest-pages-articles.xml.bz2

и потом немного отполировать скриптом для пост-процессинга


python3 process_wikipedia.py

Результат — готовый .csv файл с вашим корпусом.

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


Блины с ICOй на питоне или как померять людей и проекты ICO

Друзья, добрый день.


Есть четкое понимание, что большая часть ICO проектов это по сути своей совсем нематериальный актив. ICO проект это не автомобиль мерседес-бенц – который ездит вне зависимости от того что его кто любит или нет. И основное влияние на ICO оказывает настроение народа – как настрой на основателя\founder ICO, так и самого проекта.


Было бы хорошо как-то измерить настрой народа по отношению к основателю ICO и\или к ICO проекту. Что и было проделано. Отчет ниже.


Результатом стал инструмент сбора позитивного\негативного настроения из Интернетов, в частности из твиттера.


Моё окружение это Windows 10 x64, использовал язык Python 3 в редакторе Spyder в Anaconda 5.1.0, проводное подключение к сети.


Сбор данных


Настрой буду получать из постов твиттера. Сначала выясню, чем сейчас занимается основатель ICO и насколько положительно об этом отзываются на примере пары известных личностей.



Наташа — библиотека для извлечения структурированной информации из текстов на русском языке

Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien,



Как обучть мдль пнмть упртые скрщня

Недавно я натолкнулся на вопрос на Stackoverflow, как восстанавливать исходные слова из сокращений: например, из wtrbtl получать water bottle, а из bsktballbasketball. В вопросе было дополнительное усложнение: полного словаря всех возможных исходных слов нет, т.е. алгоритм должен быть в состоянии придумывать новые слова.


Вопрос меня заинтриговал, и я полез разбираться, какие алгоритмы и математика лежат в основе современных опечаточников (spell-checkers). Оказалось, что хороший опечаточник можно собрать из n-граммной языковой модели, модели вероятности искажений слов, и жадного алгоритма поиска по лучу (beam search). Вся конструкция вместе называется модель зашумлённого канала (noisy channel).


Вооружившись этими знаниями и Питоном, я за вечер создал с нуля модельку, способную, обучившись на тексте "В



pymorphy2

В далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)

В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.

Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется



Мысли по мотивам PyCamp Kyiv

Первое впечатление

Сразу вспомнился анекдот:

— Чем отличается программист-интраверт от программиста-экстраверта?
— Во время разговора программист-интраверт смотрит на свои ботинки, а программист-экстраверт смотрит на ботинки собеседника.

Видел Капитана Очевидность

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

Докладчик не читал "Coders at Work". Иначе воспользовался бы шуткой про "5 = 6".

О взаимоотношениях

Привлек внимание доклад Дмитрия Кожевина «"Программирование на нервах" - короткий разговор об управлении проектом».

Мой коллега (Юра Сафроненко) является тренером НЛП и (совершенно бесплатно) ставит над нами опыты и делится своими тайными знаниями.

В своем докладе Дмитрий Кожевин то