Определение настроения текста по отношению к определенному аспекту

Здравствуйте, любители НЛП! Недавно мы узнали, что такое анализ настроений, поэтому естественно говорить о его эволюции, то есть об анализе настроений на основе аспектов. Наслаждаться! 😄

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

Методы традиционного анализа тональности рассматривают текст как единое целое и присваивают ему единую метку тональности (например, положительную, отрицательную или нейтральную). Этого достаточно для многих задач, но есть также много ситуаций, когда было бы полезно знать тональность текста по отношению к определенному аспекту. Например, рассмотрим обзор ресторана. Рецензент может дать ресторану общую положительную оценку, но отметить плохое обслуживание. В этом случае было бы полезно знать, что отношение к аспекту услуга отрицательное, хотя общее отношение положительное.

Приложения ABSA

Некоторые реальные приложения анализа настроений на основе аспектов:

  1. Отслеживание уровня удовлетворенности клиентов определенным продуктом или услугой. Это можно сделать, отслеживая отзывы клиентов и комментарии в социальных сетях. Понимая, что клиенты говорят о компании, предприятия могут внести необходимые изменения для повышения удовлетворенности клиентов.
  2. Мониторинг общественного мнения о компаниях (ваших и ваших конкурентов). Это можно сделать, отслеживая комментарии в социальных сетях и отзывы клиентов. Понимая, что говорит общественность, предприятия могут внести необходимые изменения для улучшения своего имиджа.
  3. Понимание того, как сотрудники относятся к своей работе и компании. Это можно сделать, отслеживая отзывы сотрудников и комментарии в социальных сетях. Понимая, что говорят сотрудники, предприятия могут вносить необходимые изменения для повышения удовлетворенности сотрудников.

Обучение модели ABSA

Аспектный анализ тональности — сложная задача, потому что он требует идентификации «аспектов» в тексте, а также присвоения этим аспектам меток тональности. Есть несколько способов приблизиться к ABSA, но один из распространенных подходов состоит в том, чтобы сначала определить аспекты в тексте, а затем использовать модель ABSA для обозначения тональности каждого аспекта.

Идентификация аспекта – это задача, к которой можно подойти несколькими способами, но один из наиболее распространенных – использование метода, основанного на правилах, например словаря. Например, каждый раз, когда мы находим слова «iPhone X» или «MacBook Pro», мы можем рассматривать их как аспекты.

После того, как аспекты были определены, нам нужно обучить классификатор ABSA классифицировать настроение аспекта по отношению к предложению как контекст. Например, мы можем использовать классификатор, чтобы получить тональность аспекта «обслуживание» в контекстном предложении «У нас был отличный опыт в ресторане, еда была вкусной, но обслуживание было довольно плохим».

Существует ряд различных подходов к построению классификаторов ABSA, но один из распространенных подходов заключается в использовании метода обучения с учителем. В этом случае нам понадобится обучающий набор данных, то есть набор текстов, помеченных аспектами и их тональностью. Например:

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

Вы можете найти наборы данных для ABSA здесь.

К счастью, есть и публичные предварительно обученные модели! Например, вы можете попробовать это Точная настройка DeBERTa по наборам данных ABSA. Давайте посмотрим, как его использовать.

Использование общедоступной предварительно обученной модели

Сначала устанавливаем библиотеку transformers вместе с токенизатором SentencePiece (который нужен некоторым моделям библиотеки, например DeBERTa).

Затем импортируем необходимые библиотеки и загружаем две разные модели:

  • absa_model и absa_tokenizer для тестирования deberta-v3-base-abas-v1.1 предварительно обученной модели ABSA.
  • sentiment_model для тестирования стандартной модели тональности (необязательно). Мы попробуем модель twitter-xlm-roberta-base-sentiment, обученную примерно на 198 млн твитов и настроенную для анализа настроений.

Сделаем следующие тесты:

  • Вычислите отношение к аспекту «еда» из контекстного предложения «У нас был отличный опыт в ресторане, еда была вкусной, но обслуживание было довольно плохим». Результат «положительный» с оценкой ~0.997.
  • Вычислите отношение к аспекту «обслуживание» из контекстного предложения «У нас был отличный опыт в ресторане, еда была вкусной, но обслуживание было довольно плохим». Результат «отрицательный» с оценкой ~0.994.
  • Вычислите общее настроение предложения «У нас был отличный опыт в ресторане, еда была вкусной, но обслуживание было довольно плохим». Результат «отрицательный» с оценкой ~0.770.

Несмотря на то, что контекстное предложение имеет отрицательное общее настроение, модель ABSA способна правильно присвоить положительное настроение «еде» и отрицательное настроение «обслуживанию».

Следующие шаги

Возможные следующие шаги:

Спасибо за чтение! Если вы хотите узнать больше о НЛП, не забудьте подписаться на NLPlanet на Medium, LinkedIn, Twitter и присоединяйтесь к нашему новому Discord серверу!