Ниже приведено мое понимание реализации анализа настроений в наивной байесовской модели с нуля без использования каких-либо модулей Python, таких как Scikit-Learn, Tensor и Pytorch.

Набор данных основан на валлийском языке, который был предоставлен профессором класса НЛП (обработка естественного языка), в котором я был зачислен.

Введение

Наивный байесовский классификатор — один из простых вероятностных классификаторов, используемых для обработки текста. Он основан на теореме Байеса, которая гласит:

По этой формуле мы можем найти вероятность события A при условии, что произошло событие B. Следовательно, событие B является доказательством, а событие A — гипотезой. Это дает нам предположение, что признаки независимы по своей природе и, следовательно, они не зависят ни от каких других признаков, что называется наивным.

Импорт библиотек

Для реализации модели импортированы следующие базовые библиотеки Python.

Читать набор данных

Набор данных, который я использовал, был предоставлен моим профессором на основе валлийского языка. Он не был обработан и содержал шумы. Набор данных разделен на файл обучения и файл тестирования, который включает в себя другой набор предложений. Обучающий набор включал 80000 строк с 2 столбцами, а именно Цель и Текст, тестовый набор включает 10000 строки с одинаковыми 2 столбцами.

Очистка набора данных

Набор данных является необработанным и содержит много нежелательных шумов, которые необходимо удалить, чтобы передать данные в качестве входных данных для модели. На этом шаге я удаляю следующее, используя функцию регулярного выражения, импортированную из модуля ‘re’.

  • HTML-теги
  • URL-адреса
  • не буквенно-цифровые символы
  • смайлики
  • пробелы

Я не удаляю здесь стоп-слова, потому что я не встречал много стоп-слов в валлийском языке.

Подсчет частотности пары {word, label}

Я определяю пользовательскую функцию, которая подсчитывает частоту пары слов и соответствующую ей метку (положительную/отрицательную).

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

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

Эта функция гарантирует, что мы не найдем одну и ту же пару слов в повторении.

Расчет частотности всех уникальных слов в словаре

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

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

При написании этой функции я предполагал следующее. Результаты:

Независимый

Согласно концепции наивного Байеса предполагается, что одна переменная не зависит от другой.

Относительная частота

Тем не менее, вы можете столкнуться с некоторыми «чистыми» наборами данных, которые были намеренно сбалансированы, чтобы иметь равное количество благоприятных и неблагоприятных твитов. Пожалуйста, имейте в виду, что в реальном мире данные могут быть несколько более зашумленными.

Модель, которую я построил, имеет точность 0,781, что довольно умеренно. Но из этого мы можем убедиться, что модель не переоснащается.

Заключение

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

Спасибо, что прочитали!

Свяжитесь со мной в LinkedIn: https://www.linkedin.com/in/vijay-varshini-ln/