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

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

Относить комментарии к положительным или отрицательным будем при помощи наивного байесовского классификатора.
В 1764 г. была опубликована работа Essay towards Solving a Problem in the Doctrine of Chances в журнале, издаваемом Лондонским Королевским обществом. В этой работе была приведена теорема Байеса, названная в честь министра и математика Реверенда Томаса Байеса. Суть теоремы заключается в следующем
Изучая следствия, можно определять вероятность причины.
Т.е. причина и следствие как бы меняются местами.
Приложения теоремы нашли своё применение в виде классификаторов. Например, в медицине с помощью байесовских классификаторов определяют причины заболеваний, таких как рак.
Другим очень полезным применением теоремы является классификация документов: новостей, почты, комментариев и прочих текстов. Здесь полезно представлять документ как «сумку» со словами.
Следует отметить, что слово «наивный» означает независимость документов друг от друга, а также независимость слов в документах друг от друга. Эти допущения позволяют упростить модель классификатора, что делает его легким для программирования.
Рассмотрим небольшой пример, в котором мы обучим классификатор двум положительным и двум отрицательным мнениям. А затем проверим как будет классифицировано положительное мнение.
Это пример обучения с учителем(supervised learning), т.е. сначала мы обучаем программу, а затем она на основе обучающей выборки(training set) предсказывает правильный ответ(hypotesis).
В нашем случае ответ — это класс с наибольшим значением вероятности, которое вычисляется по формуле

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

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

Относить комментарии к положительным или отрицательным будем при помощи наивного байесовского классификатора.
Наивный байесовский классификатор
В 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).
В нашем случае ответ — это класс с наибольшим значением вероятности, которое вычисляется по формуле

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