Pull to refresh

Обучаем компьютер чувствам (sentiment analysis по-русски)

Python *Algorithms *Natural Language Processing *


Sentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением мнений и эмоций в текстовых документах. Недавно на хабре появилась статья про использование машинного обучения для анализа тональности, однако, она была настолько плохо составлена, что я решил написать свою версию. Итак, в этой статье я постараюсь доступно объяснить, что такое анализ тональности, и как реализовать подобную систему для русского языка.
Читать дальше →
Total votes 90: ↑85 and ↓5 +80
Views 79K
Comments 40

Weka проект для задачи распознавания тональности (сентимента)

Open source *Algorithms *
Tutorial
Это перевод моей публикации на английском языке.

Интернет полон статьями, заметками, блогами и успешными историями применения машинного обучения (machine learning, ML) для решения практических задач. Кто-то использует его для пользы и просто поднять настроение, как эта картинка:

image

Правда, человеку, не являющемуся экспертом в этих областях, подчас не так просто подобраться к существующему инструментарию. Есть, безусловно, хорошие и относительно быстрые пути к практическому машинному обучению, например, Python-библиотека scikit. Кстати, этот проект содержит код, написанный в команде SkyNet (автору довелось быть её лидирующим участником) и иллюстрирующий простоту взаимодействия с библиотекой. Если вы Java разработчик, есть пара хороших инструментов: Weka и Apache Mahout. Обе библиотеки универсальны с точки зрения применимости к конкретной задаче: от рекомендательных систем до классификации текстов. Существует инструментарий и более заточенный под текстовое машинное обучение: Mallet и набор библиотек Stanford. Есть и менее известные библиотеки, как Java-ML.

В этом посте мы сфокусируемся на библиотеке Weka и сделаем проект-заготовку или проект-шаблон для текстового машинного обучения на конкретном примере: задача распознавания тональности или сентимента (sentiment analysis, sentiment detection). Несмотря на всё это, проект полностью рабочий и даже под commercial-friendly лицензией (сама Weka под GPL 3.0), т.е. при большом желании вы можете даже применить код в своих проектах.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 14K
Comments 9

InterSystems iKnow. Часть первая. iKnow и пляжный отдых

InterSystems corporate blog Data Mining *
Мне давно хотелось написать свою статью о технологии iKnow. Прошло уже три года с момента её появления, но публикаций о применениях этой технологии в русскоязычных решениях до сих пор не было. Объяснение этому довольно простое – не было полноценной поддержки русского языка. Но с каждым новым релизом, начиная с Cache 2013.1, ситуация менялась в лучшую сторону. И вот, наконец, мы решили реализовать первый проект на iKnow. О том, как это было, что получилось, а что нет, читайте далее в моей статье.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 4.9K
Comments 2

Анализ тональности текста с помощью Azure Machine Learning

Data Mining *Microsoft Azure *R *
Tutorial
В этом посте я расскажу, как можно использовать Microsoft Azure Machine Learning для анализа тональности текста, а также с какими проблемами можно столкнуться в процессе использования Azure ML и как их можно обойти.

Что такое анализ тональности хорошо описано в статье «Обучаем компьютер чувствам (sentiment analysis по-русски)».
Нашей целью будет являться построение веб-сервиса, который принимает на вход некоторый текст и возвращает в ответ 1, если этот текст носит позитивный характер, и -1 — если негативный. Microsoft Azure Machine Learning идеально (почти) подходит для этой задачи, так как там есть встроенная возможность опубликовать результаты вычислений как веб-сервис и поддержка языка R — это избавляет от необходимости писать свои костыли и настраивать свою виртуальную машину/веб-сервер. В общем, все преимущества облачных технологий. К тому же, совсем недавно было объявлено, что все желающие могут попробовать Azure ML даже без аккаунта Azure и кредитной карточки — необходим только Microsoft Account.
Читать дальше →
Total votes 35: ↑29 and ↓6 +23
Views 25K
Comments 16

Анализ отзывов посетителей ресторанов с Meanotek NeuText API

MeanoTek corporate blog Semantics *.NET *API *Machine learning *
Анализ отзывов пользователей ресторанов был частью задачи тестирования SentiRuEval-2015, прошедшего в рамках конференции Диалог-2015. В этой статье поговорим о том, что собственно делают такие анализаторы, зачем это нужно на практике, и как создать такое средство своими руками с помощью Meanotek NeuText API

Анализ отзывов по аспектам часто разделяют на несколько этапов. Рассмотрим например предложение «японские блюда были вкусными, но официант работал медленно». На первом этапе мы выделяем из него важные для нас слова или словосочетания. В данном случае это «японские блюда», «вкусными», «официант», «медленно». Это позволяет понять, о чем идет речь в предложении. Далее мы можем захотеть сгруппировать термины — например отнести «блюда» и «вкусными» к еде, а «официант» к обслуживанию. Такая группировка позволит выдавать агрегированную статистику. Наконец, мы можем захотеть оценить тональность терминов, говорится о них что-то положительное или отрицательное
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 4.5K
Comments 0

Анализ тональности в социальных медиа на русском языке при помощи RussianSentimentAnalyzer API

Semantics *Java *API *
В этом посте я покажу, как воспользоваться API анализа тональности в социальных медиа на русском языке. Одной из отличительных фич системы является возможность определять тональность по отношению к заданному объекту мониторинга. Проиллюстрирую на примере:

Мне нравится телефон X, но телефон Y ужасен.

Читать дальше →
Total votes 17: ↑13 and ↓4 +9
Views 11K
Comments 18

Рекурентная нейронная сеть в 10 строчек кода оценила отзывы зрителей нового эпизода “Звездных войн”

DCA (Data-Centric Alliance) corporate blog Python *Machine learning *
Hello, Habr! Недавно мы получили от “Известий” заказ на проведение исследования общественного мнения по поводу фильма «Звёздные войны: Пробуждение Силы», премьера которого состоялась 17 декабря. Для этого мы решили провести анализ тональности российского сегмента Twitter по нескольким релевантным хэштегам. Результата от нас ждали всего через 3 дня (и это в самом конце года!), поэтому нам нужен был очень быстрый способ. В интернете мы нашли несколько подобных онлайн-сервисов (среди которых sentiment140 и tweet_viz), но оказалось, что они не работают с русским языком и по каким-то причинам анализируют только маленький процент твитов. Нам помог бы сервис AlchemyAPI, но ограничение в 1000 запросов в сутки нас также не устраивало. Тогда мы решили сделать свой анализатор тональности с блэк-джеком и всем остальным, создав простенькую рекурентную нейронную сеть с памятью. Результаты нашего исследования были использованы в статье “Известий”, опубликованной 3 января.



В этой статье я немного расскажу о такого рода сетях и познакомлю с парой классных инструментов для домашних экспериментов, которые позволят строить нейронные сети любой сложности в несколько строк кода даже школьникам. Добро пожаловать под кат.
Читать дальше →
Total votes 82: ↑75 and ↓7 +68
Views 158K
Comments 48

Natural Language Processing — как это будет по-русски?

Stepik.org corporate blog Research and forecasts in IT *Studying in IT Natural Language Processing *
Вокруг нас — огромные объемы текстовых данных в электронном виде, в них — человеческие знания, эмоции и опыт. А еще — спам, который выдает себя за полезную информацию, и надо уметь отделять одно от другого. Люди хотят общаться с теми, кто не знает их родной язык. А еще — управлять своим мобильником/телевизором/умным домом голосом. Все это обеспечивает востребованность и бурное развитие методов Natural Language Processing (NLP).

image

Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Views 19K
Comments 4

Анализ тональности текстов с помощью сверточных нейронных сетей

VK corporate blog Python *Data Mining *Big Data *Machine learning *
Tutorial


Представьте, что у вас есть абзац текста. Можно ли понять, какую эмоцию несет этот текст: радость, грусть, гнев? Можно. Упростим себе задачу и будем классифицировать эмоцию как позитивную или как негативную, без уточнений. Есть много способов решать такую задачу, и один из них — свёрточные нейронные сети (Convolutional Neural Networks). CNN изначально были разработаны для обработки изображений, однако они успешно справляются с решением задач в сфере автоматической обработки текстов. Я познакомлю вас с бинарным анализом тональности русскоязычных текстов с помощью свёрточной нейронной сети, для которой векторные представления слов были сформированы на основе обученной Word2Vec модели.

Статья носит обзорный характер, я сделал акцент на практическую составляющую. И сразу хочу предупредить, что принимаемые на каждом этапе решения могут быть неоптимальными. Перед прочтением рекомендую ознакомиться с вводной статьей по использованию CNN в задачах обработки естественных языков, а также прочитать материал про методы векторного представление слов.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Views 50K
Comments 9

Как без особенных усилий создать ИИ-расиста

Python *Machine learning *Artificial Intelligence
Tutorial
Translation
Предостерегающий урок.

Сделаем классификатор тональности!

Анализ тональности (сентимент-анализ) — очень распространённая задача в обработке естественного языка (NLP), и это неудивительно. Для бизнеса важно понимать, какие мнения высказывают люди: положительные или отрицательные. Такой анализ используется для мониторинга социальных сетей, обратной связи с клиентами и даже в алгоритмической биржевой торговле (в результате боты покупают акции Berkshire Hathaway после публикации положительных отзывов о роли Энн Хэтэуэй в последнем фильме).

Метод анализа иногда слишком упрощён, но это один из самых простых способов получить измеримые результаты. Просто подаёте текст — и на выходе положительные и отрицательные оценки. Не нужно разбираться с деревом синтаксического анализа, строить граф или какое-то другое сложное представление.
Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Views 8.3K
Comments 2

Анализ тональности в русскоязычных текстах, часть 1: введение

VK corporate blog Semantics *Big Data *Machine learning *Social networks and communities
image
Анализ тональности стал мощным инструментом для масштабной обработки мнений, выражаемых в любых текстовых источниках. Практическое применение этого инструмента в английском языке довольно развито, чего не скажешь о русском. В этой серии статей мы рассмотрим, как и для каких целей применялись подходы анализа тональности для русскоязычных текстов, какие результаты удалось достичь, какие проблемы возникали, а также немного поговорим о перспективных направлениях. В отличие от предыдущих работ, я сосредоточился на прикладном применении, а не на самих подходах и их качестве классификации. Первая часть — вводная. Мы рассмотрим, что такое «анализ тональности», какой он бывает и как его за последние 8 лет применяли для анализа русскоязычных текстов. Во второй части детально рассмотрим каждое из 32 основных исследований, которые мне удалось найти. В третьей и заключительной части поговорим об общих сложностях, с которыми сталкивались исследователи, а также о перспективных направлениях на будущее.
Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 11K
Comments 0

Анализ тональности в русскоязычных текстах, часть 2: основные исследования

VK corporate blog Machine learning *Popular science Social networks and communities
image

Исследователи применяли анализ тональности для совершенно разных русскоязычных текстов: постов из соцсетей, отзывов, новостных статей и книг. Как следствие, результаты их исследований тоже были совершенно разными и крайне интересными. Например, кто бы мог подумать, что тексты с положительной тональностью делают обучение иностранному языку более интересным, но менее эффективным? В этой серии статей мы рассмотрим, как и для каких целей применялись подходы анализа тональности для русскоязычных текстов, каких результатов удалось достичь, какие проблемы возникали, а также немного поговорим о перспективных направлениях.

В отличие от предыдущих работ я сосредоточился на прикладном применении, а не на самих подходах и их качестве классификации. В первой статье мы обсудили, что такое «анализ тональности», какой он бывает и как его за последние 8 лет применяли для анализа русскоязычных текстов. В этой части мы детально рассмотрим каждое из 32 основных исследований, которые мне удалось найти. В третьей и заключительной части поговорим об общих сложностях, с которыми сталкивались исследователи, а также о перспективных направлениях на будущее.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Views 6K
Comments 3

Анализ тональности в русскоязычных текстах, часть 3: вызовы и перспективы

VK corporate blog Machine learning *Social networks and communities


Анализ тональности успешно применяется для социальных сетей, отзывов, новостей и даже учебников. На основе ключевых исследований для русского языка, описанных в предыдущей статье, здесь мы рассмотрим основные вызовы, с которыми сталкиваются исследователи, а также перспективные направления на будущее. В отличие от предыдущих работ я сосредоточился на прикладном применении, а не на самих подходах и их качестве классификации.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 6.3K
Comments 0

Financial News Sentiment Dataset: определяем точку входа в акции по настроению новостей

Python *Finance in IT Natural Language Processing *

Набор данных Financial News Sentiment Dataset (FiNeS) содержит в себе заголовки финансовых новостей о компаниях, торгующихся на Московской и СПб биржах. Целевой переменной датасета является оценка тональности новостных заголовков в виде вещественного числа. Идеи для использования датасета: Создание трейдинговых стратегий на основе анализа тональности новостей "на лету"; Анализ новостного фона в разрезе времени (день/неделя) или в разрезе компании.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 3.9K
Comments 14