Обучаем компьютер чувствам (sentiment analysis по-русски) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-02-08 15:52 Sentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением мнений и эмоций в текстовых документах. Недавно на хабре появилась статья про использование машинного обучения для анализа тональности, однако, она была настолько плохо составлена, что я решил написать свою версию. Итак, в этой статье я постараюсь доступно объяснить, что такое анализ тональности, и как реализовать подобную систему для русского языка. Анализ тональности Целью анализа тональности является нахождение мнений в тексте и определение их свойств. В зависимости от поставленной задачи нас могут интересовать разные свойства, например:
В литературе встречаются разные способы формализировать модель мнений. Я лишь привел в пример одну из них. Также используется и разная терминология. В английском языке эту область исследования обычно называют opinion mining and sentiment analysis (дословно: «поиск мнений и анализ чувств»). В русских статьях обычно употребляется термин «анализ тональности». Несмотря на то, что тональность является лишь одной из характеристик мнения, именно задача классификации тональности является наиболее часто изучаемой в наши дни. Это можно объяснить несколькими причинами:
Анализ тональности находит свое практическое применение в разных областях:
Подходы к классификации тональности Анализ тональности обычно определяют как одну из задач компьютерной лингвистики, т.е. подразумевается, что мы можем найти и классифицировать тональность, используя инструменты обработки естественного языка (такие как теггеры, парсеры и др.). Сделав большое обобщение, можно разделить существующие подходы на следующие категории:
Первый тип систем состоит из набора правил, применяя которые система делает заключение о тональности текста. Например, для предложения «Я люблю кофе», можно применить следующее правило:
Многие коммерческие системы используют данный подход, несмотря на то что он требует больших затрат, т.к. для хорошей работы системы необходимо составить большое количество правил. Зачастую правила привязаны к определенному домену (например, «ресторанная тематика») и при смене домена («обзор фотоаппаратов») требуется заново составлять правила. Тем не менее, этот подход является наиболее точным при наличии хорошей базы правил, но совершенно неинтересным для исследования. Подходы, основанные на словарях, используют так называемые тональные словари (affective lexicons) для анализа текста. В простом виде тональный словарь представляет из себя список слов со значением тональности для каждого слова. Вот пример из базы ANEW, переведенный на русский:
Чтобы проанализировать текст, можно воспользоваться следующим алгоритмом: сначала каждому слову в тексте присвоить его значением тональности из словаря (если оно присутствует в словаре), а затем вычислить общую тональность всего текста. Вычислять общую тональность можно разными способами. Самый простой из них — среднее арифметическое всех значений. Более сложный — обучить классификатор (напр. нейронная сеть). Машинное обучение с учителем является наиболее распространенным методом, используемым в исследованиях. Его суть состоит в том, чтобы обучить машинный классификатор на коллекции заранее размеченных текстах, а затем использовать полученную модель для анализа новых документов. Именно про этот метод я расскажу далее. Машинное обучение без учителя представляет собой, наверное, наиболее интересный и в то же время наименее точный метод анализа тональности. Одним из примеров данного метода может быть автоматическая кластеризация документов. Машинное обучение с учителем Процесс создания системы анализа тональности очень похож на процесс создания других систем с применением машинного обучения:
Количество классов Количество классов, на которые делят тональность, обычно задается из спецификации системы. Например, заказчику требуется, чтобы система различала три вида тональности: «положительная», «нейтральная», «отрицательная». В исследованиях обычно рассматривается задача бинарной классификации тональности, т.е. классов всего два: «положительный» и «отрицательный». Из своего опыта могу сказать, что классификация тональности на более чем два класса — это очень сложная задача. Даже с тремя классами очень сложно достичь хорошей точности независимо от применяемого подхода.
Обычно иерархическая классификация дает лучшие результаты чем плоская, т.к. для каждого классификатора можно найти набор признаков, который позволяет улучшить результаты. Однако, он требует больших времени и усилий для обучения и тестирования. Регрессия может показать лучшие результаты, если классов действительно много (от 5 и более). Выбор признаков Качество результатов напрямую зависят от того, как мы представим документ для классификатора, а именно, какой набор характеристик мы будем использовать для составления вектора признаков. Наиболее распространенный способ представления документа в задачах комп. лингвистики и поиска — это либо в виде набора слов (bag-of-words) либо в виде набора N-грамм. Так, например, предложение «Я люблю черный кофе» можно представить в виде набора униграмм (Я, люблю, черный, кофе) или биграмм (Я люблю, люблю черный, черный кофе).
Символьные N-граммы применяются гораздо реже чем N-граммы слов, но иногда они могут улучшить результаты. Также можно использовать дополнительные признаки, такие как: части речи, пунктуация (наличие в тексте смайлов, восклицательных знаков), наличие в тексте отрицаний («не», «нет», «никогда»), междометий и т.д. Взвешенный вектор Следующим шагом в составлении вектора признаков является присваивание каждому признаку его вес. Для некоторых классификаторов это является необязательным, например, для байесовского классификатора, т.к. он сам высчитывает вероятность для признаков. Но если вы используете метод опорных векторов, то задание весов может заметно улучшить результаты.
Однако, существуют методы оценки важности слов, которые вычисляют веса слов, дающие гораздо лучшие результаты при классификации тональности, например, дельта TF-IDF. Реализация классификатора Я реализовал простой классификатор тональности отзывов о фильмах на питоне. Данные были собраны с Кинопоиска. Было отобрано 500 положительных и 500 отрицательных отзывов. В качестве алгоритма классификации я использовал наивный байесовский классификатор (NB) и метод опорных векторов (SVM). В качестве признаков я протестировал униграммы, биграммы и их комбинацию, а в качестве функции взвешивания: бинарная функция для байеса и SVM, и дельта TF-IDF для SVM. Для оценки работы классификатора я провел перекрестную проверку: для каждого набора параметров было запущено подряд 5 тестов, в каждом из которых использовалось 800 отзывов для обучения и 200 для тестирования. Ниже представлены результаты (точность в процентах) для всех 9-ти наборов параметров.
На примере негативных N-граммов особо заметно, что их вес отражает негативную тональность. Практическое применение В качестве примера практического применения классификатора тональности, я реализовал на скорую руку классификатор твитов, схема работа которой следующая:
Пример работы анализатора:
Как видно, результаты не особо удовлетворительные. Классификатор делает 2 типа ошибок:
Первый тип ошибок можно исправить, если добавить дополнительный классификатор, который будет фильтровать нейтральные твиты. Это непростая задача, но вполне осуществимая. Второй тип ошибок возникает в основном из-за того, что твиты сильно отличаются от коллекции обучения: присутствует сленг, орфографические ошибки, отличается манера высказывания. Тут надо либо искать другую коллекцию для обучения классификатора (взять те же твиты, например), либо улучшить набор признаков (например, добавить смайлы). Но в целом, этот пример показывает, что создать систему анализа мнений в Твиттере вполне возможно. Заключение Создание системы анализа мнений является сложной задачей, но вполне посильной, если имеются данные для обучения и заранее определен домен (тема). При использовании машинного обучения важно тестировать разные параметры, чтобы подобрать те, которые работают лучше на тестовых данных. В частности нужно тестировать разные алгоритмы классификации (NB, SVM), набор признаков (униграммы, биграммы, символьные N-граммы), функцию взвешивания признаков. Существует еще куча способов для улучшения классификации тональности, такие как использование тональных словарей, дополнительные лингвистические признаки (например, части речи), так и общие способы улучшение машинного обучения (бустинг, баггинг и др.). В этой статье я постарался описать лишь основные методы. FAQ: В демо неправильно классифицируются отзывы! Источник: habr.com Комментарии: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||