Как стать автором
Поиск
Написать публикацию
Обновить

Opinion Mining по Байесу

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

Кинопоиск. Рецензия



Эти сообщения несут в себе эмоциональную окраску, например, положительную:
Джеймс Камерон войдет в историю как смелый эксперементатор, благодаря замечательному фильму Аватар, который несомненно является лучом света в темном царстве кинематографа
, отрицательную:
Кроме тупого сюжета, дешевых декораций и уродливых актрисс, мне не понравились сиськи Джениффер
или содержащую сарказм:
Этот замечательный фильм обязательно победит на ГавноАвардс

Условно, сообщения можно разделить на два класса: положительные и отрицательные. В этой записи мы рассмотрим самый простой случай классификации мнений. В качестве источника будем использовать комментарии к фильму «Ирония любви».

Ирония любви


Относить комментарии к положительным или отрицательным будем при помощи наивного байесовского классификатора.

Наивный байесовский классификатор


В 1764 г. была опубликована работа Essay towards Solving a Problem in the Doctrine of Chances в журнале, издаваемом Лондонским Королевским обществом. В этой работе была приведена теорема Байеса, названная в честь министра и математика Реверенда Томаса Байеса. Суть теоремы заключается в следующем

Изучая следствия, можно определять вероятность причины.

Т.е. причина и следствие как бы меняются местами.

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

Другим очень полезным применением теоремы является классификация документов: новостей, почты, комментариев и прочих текстов. Здесь полезно представлять документ как «сумку» со словами.

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

Рассмотрим небольшой пример, в котором мы обучим классификатор двум положительным и двум отрицательным мнениям. А затем проверим как будет классифицировано положительное мнение.
<?php
/*
* Источник мнений:
* http://www.kinopoisk.ru/level/1/film/468194/
*/

include "NaiveBayesClassifier.php";

// Задаем классы: положительный и отрицательный
$aClasses = array('+', '-');
$oClassifier = new NaiveBayesClassifier($aClasses);

// Учим классифицировать отрицательные мнения
$oClassifier->train('
Собственно о фильме сказать практически нечего,
ведь фильма-то мы в конце концов даже и не увидели.
Кривляния актеров чередовались с кадрами в стиле
«как не надо снимать кино», в то время сценарист
готовился к контрольной работе по природоведению,
а многоуважаемый режиссер посещал сеансы
по корректировке врожденной умственной неполноценности.
', '-');

$oClassifier->train('
Сказать, что я осталась довольна увиденным будет
не совсем правильно, скорее вся это история оставила
меня совершенно равнодушной, что довольно странно.
Я всегда очень эмоционально смотрю кино. Почти в каждом
фильме, даже самом трешевом, есть эпизоды,
которые мне запоминаются.
', '-');

// Учим классифицировать положительные мнения
$oClassifier->train('
Пошла на этот фильм в самый первый день проката.
Ожидала достаточно многого просто по трейлеру
когда в первый раз увидела его в кино,
захотелось посмотреть и сам фильм из-за юмора,
в первую очередь.

Не разочаровалась. Пожалуй, единственным минусом
можно назвать сам сюжет — несколько банален, и жесток.
А вот всё остальное, если сравнивать с другими
русскими картинами, на высоком уровне. Итак, опишу.
', '+');

$oClassifier->train('
Наверное, только в посредственных и стереотипных
вещах можно увидеть самое главное.
Фильм Александра Черняева «Ирония любви» — яркий
пример извечного проходного сказочного сюжета о том,
как принцесса влюбляется в обычного «Ивана», сюжета,
перенесенного в наши реалии. Фильм можно ругать
сколько угодно, но в нем в очередной раз подмечено
много интересного о психологии современного человека
', '+');

// Это положительное мнение к фильму
$sOpinion = '
В целом фильм стоит воспринимать как приятную
милую картину, которая заставляет умиляться, улыбаться,
сопереживать героям. Советую к просмотру девушкам,
мечтающим о принце на белом коне и верящим в любовь.
';

// Будет классифицировано как положительное
echo $oClassifier->getHypotesis($sOpinion);
?>



Это пример обучения с учителем(supervised learning), т.е. сначала мы обучаем программу, а затем она на основе обучающей выборки(training set) предсказывает правильный ответ(hypotesis).

В нашем случае ответ — это класс с наибольшим значением вероятности, которое вычисляется по формуле

Вероятность принадлежности мнения к категории C


, где
p(c|opinion) — вероятность принадлежности мнения к категории c;
p© — априорная вероятность встречаемости категории с;
count(c, word) — количество слов в мнении из категории с.
Исходный код классификатора и пример

Ссылки


Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.