Каждую секунду публикуются миллионы твитов. Это помогает нам узнать, как публика реагирует на конкретное событие. Чтобы понять настроения твитов, мы можем использовать алгоритм классификации наивного Байеса, который представляет собой просто применение правила Байеса.

Правило Байеса

Правило Байеса просто описывает вероятность события при наличии предварительной информации о наступлении другого события, связанного с ним.

Тогда вероятность наступления события A при условии, что событие B уже произошло, равна

И для вероятности наступления события B, учитывая, что событие A уже произошло, составляет

Используя оба этих уравнения, мы можем переписать их вместе как

Давайте посмотрим на твиты и на то, как мы собираемся извлекать из них функции

У нас будет два набора твитов, положительных и отрицательных.

Положительные твиты: «Я счастлив, потому что изучаю НЛП», «Я счастлив, а не грустен».

Отрицательные твиты: «Мне грустно, я не изучаю НЛП», «Мне грустно, но я не счастлив».

Предварительная обработка

Нам нужно предварительно обработать наши данные, чтобы мы могли сэкономить много памяти и сократить вычислительный процесс.

  1. Нижний регистр: мы преобразуем весь текст в нижний регистр. Таким образом, такие слова, как "обучение" и "обучение" можно воспринимать как одни и те же слова.
  2. Удаление знаков препинания, URL-адресов, имен. Мы удалим URL-адреса, имена и хэштеги с пунктуацией, поскольку они не влияют на анализ тональности твита.
  3. Удаление игнорируемых слов: такие слова, как «the», «is», не влияют на тональность. Поэтому эти слова нужно убрать.
  4. Основание: такие слова, как «взял», «взять», обрабатываются как те же слова и преобразуются в базовые слова, здесь это «взять». Это экономит много памяти и времени.

Вероятностный подход:

Чтобы получить статистику вероятности для слов, мы создадим словарь этих слов и будем считать, что каждое слово встречается в положительных и отрицательных твитах.

Давайте посмотрим, как эти подсчеты слов помогают определить вероятность слова для обоих классов. Здесь слово «i» встречается три раза, а общее количество уникальных слов в положительном корпусе равно 13. Таким образом, вероятность появления слова «i» при условии, что твит положительный, будет равна

Проделав это для всех слов в нашем словаре, мы получим такую ​​таблицу:

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

Это отношение известно как вероятность, и его значение находится между (0, ∞). Значение, стремящееся к нулю, указывает на очень низкую вероятность появления в положительном твите по сравнению с вероятностью появления в отрицательном твите, а значение отношения, стремящееся к бесконечности, показывает, что вероятность его появления в отрицательном твите очень мала, поскольку по сравнению с вероятностью попадания в положительный твит. Другими словами, высокое значение коэффициента подразумевает позитив. Кроме того, значение коэффициента 1 означает, что имя нейтральное.

Сглаживание Лапласа

Некоторые слова могли встречаться только в каком-то конкретном классе. Слова, которые не попали в отрицательный класс, будут иметь вероятность 0, что делает соотношение неопределенным. Итак, мы будем использовать технику сглаживания Лапласа, чтобы разобраться в подобной ситуации. Давайте посмотрим, как изменяется уравнение при применении сглаживания Лапласа:

Добавление «1» в числитель делает вероятность отличной от нуля. Этот коэффициент называется альфа-фактором и находится между (0,1]; в частности, когда мы устанавливаем этот альфа-коэффициент равным 1, сглаживание называется сглаживанием Лапласа.Кроме того, сумма вероятностей останется равной 1.

В нашем примере количество уникальных слов восемь дает нам V = 8.

После сглаживания Лапласа таблица вероятностей будет иметь следующий вид:

Наивный Байес:

Чтобы оценить тональность твита, мы возьмем произведение отношения вероятностей каждого слова, встречающегося в твите. Обратите внимание: слова, которых нет в нашем словарном запасе, не будут использоваться и будут считаться нейтральными. Уравнение для наивного Байеса в нашем приложении будет таким:

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

Поскольку мы берем произведение всех этих соотношений, мы можем получить число, слишком большое или слишком маленькое для хранения на нашем устройстве, поэтому здесь возникает концепция логарифмической вероятности. Мы используем логарифмическое уравнение наивного Байеса.

После записи уравнения правдоподобия масштаб изменится следующим образом:

Давайте посмотрим на пример. Твитнуть: «Я счастлив, потому что учусь.

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

Недостатки:

  1. Наивный алгоритм Байеса предполагает, что слова не зависят друг от друга.
  2. Относительные частоты в корпусе: иногда люди блокируют определенные типы твитов, которые могут быть оскорбительными и т. Д., Что приводит к дисбалансу данных.
  3. Порядок слов: изменив порядок слов, настроение может измениться, но с Наивным Байесом мы не можем столкнуться с этим.
  4. Удаление знаков препинания: помните, что при предварительной обработке данных мы удалили знаки пунктуации, которые могли изменить тональность твита. Вот пример: «Моя любимая бабушка :(»

Заключение:

Наивный байесовский алгоритм - это простой и мощный алгоритм, зная данные, можно соответствующим образом обработать данные. Наивный алгоритм Байеса также используется во многих аспектах общества, таких как классификация спама, одобрение ссуд и т. Д.