Практическое применение
В качестве примера практического применения классификатора тональности, я реализовал на скорую руку классификатор твитов, схема работа которой следующая:
производим поиск в Твиттере по названию фильмов
пропускаем твиты через классификатор тональности
получаем положительные и отрицательные высказывания о фильмах из Твиттера
Пример работы анализатора:
Как
видно, результаты не особо удовлетворительные.
Классификатор делает 2 типа ошибок:
Классифицирует нейтральные твиты (описание фильма, новости, спам) как положительные/отрицательные
Неправильно классифицирует тональность отзывов
Первый тип ошибок можно исправить, если добавить дополнительный классификатор, который будет фильтровать нейтральные твиты. Это непростая задача, но вполне осуществимая. Второй тип ошибок возникает в основном из-за того, что твиты сильно отличаются от коллекции обучения: присутствует сленг, орфографические ошибки, отличается манера высказывания. Тут надо либо искать другую коллекцию для обучения классификатора (взять те же твиты, например), либо улучшить набор признаков (например, добавить смайлы). Но в целом, этот пример показывает, что создать систему анализа мнений в Твиттере вполне возможно.
Заключение
Создание системы анализа мнений является сложной задачей, но вполне посильной, если имеются данные для обучения и заранее определен домен (тема). При использовании машинного обучения важно тестировать разные параметры, чтобы подобрать те, которые работают лучше на тестовых данных. В частности нужно тестировать разные алгоритмы классификации (NB, SVM), набор признаков (униграммы, биграммы, символьные N-граммы), функцию взвешивания признаков. Существует еще куча способов для улучшения классификации тональности, такие как использование тональных словарей, дополнительные лингвистические признаки (например, части речи), так и общие способы улучшение машинного обучения (бустинг, баггинг и др.). В этой статье я постарался описать лишь основные методы.
FAQ:
В демо неправильно классифицируются отзывы! — да, это всего лишь прототип написанный за день А что если в тексте присутствует и положительный, и отрицательный отзыв? — текущий алгоритм классифицирует только один из них А если я специально напишу негативный отзыв положительными словами? — он будет неправильно классифицирован (а что вы ожидали от компьютера?)
