Наглядное руководство по анализу тональности арабских текстов.

Выявление и категоризация мнений, выраженных в отрывке текста (также известное как анализ настроений), является одной из наиболее часто выполняемых задач в НЛП. Арабскому языку, несмотря на то, что он является одним из наиболее распространенных языков мира, мало внимания уделяется анализу сантиментов. Поэтому эта статья посвящена реализации анализа тональности арабского языка (ASA) с использованием Python.

Обзор

  1. Набор данных
  2. Импорт библиотеки и исследование данных
  3. Предварительная обработка текста
  4. Анализ настроений с помощью различных алгоритмов машинного обучения.
  5. Вывод
  6. использованная литература

Данные

Набор данных, используемый в этой статье, состоит из 1800 твитов, отмеченных как положительные и отрицательные. Это можно найти здесь"

Импорт библиотеки и исследование данных

У нас здесь очень сбалансированные классы.

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

Как человек, привыкший работать с английскими текстами, я обнаружил, что в первую очередь сложно переводить этапы предварительной обработки, обычно используемые для английских текстов, на арабский. К счастью, позже я наткнулся на сайт G ithub repo с кодом для очистки текстов на арабском языке. Эти шаги в основном включают удаление знаков препинания, арабских диакритических знаков (короткие гласные и другие хараки), удлинения и стоп-слов (что доступно в корпусе NLTK).

Анализ настроений с помощью различных техник

Цель этой статьи - продемонстрировать, как различные методы извлечения информации могут использоваться для SA. Но для простоты я продемонстрирую здесь только векторизацию слов (т.е. tf-idf). Как и в любой задаче контролируемого обучения, данные сначала делятся на функции (Feed) и метку (Sentiment). Затем данные разделяются на обучающие и тестовые наборы, и, начиная с логистической регрессии, реализуются различные классификаторы.

Логистическая регрессия

Логистическая регрессия - очень распространенный алгоритм классификации. Он прост в реализации и может служить базовым алгоритмом для задач классификации. Чтобы сделать код короче, в Scilkit-Learn используется класс Pipeline, который сочетает в себе векторизацию, преобразование, поиск сетки и классификацию. Подробнее о gridsearch вы можете прочитать в официальной документации здесь.

Достигнута точность 84%.

Классификатор случайного леса

Наивный байесовский классификатор (полиномиальный)

Машина опорных векторов

Вывод

В этой статье показаны этапы анализа тональности арабского языка. Основное различие между арабским и английским НЛП - это этап предварительной обработки. Все подходящие классификаторы дали впечатляющие оценки точности - от 84 до 85%. В то время как наивный байесовский метод, логистическая регрессия и случайный лес дали точность 84%, улучшение на 1% было достигнуто с помощью линейной машины опорных векторов. Модели можно улучшить, применив такие методы, как встраивание слов и рекуррентные нейронные сети, которые я попытаюсь реализовать в следующей статье.

Ссылки



Https://github.com/motazsaad/process-arabic-text/blob/master/clean_arabic_text.py