Я помню не столь печально известную цитату из фильма «Я, робот», которая звучит так:

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

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

Возни с машинным обучением привели меня к интересной и весьма заманчивой концепции анализа настроений. Анализ настроений не нов, на самом деле существует множество вариантов использования и примеров, доступных в Интернете. Анализ настроений использует НЛП для понимания настроений в текстовых данных. AWS предоставляет анализ тональности как услугу, используя «Amazon comprehend» для определения тональности в отзывах клиентов. Мета предоставляет «Понимание аудитории» для того же. Доступно несколько библиотек Python, которые выполняют анализ настроений как для контролируемых, так и для неконтролируемых данных. Существует 2 типа анализа настроений: на основе полярности и на основе валентности.

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

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

Постановка проблемы
Обычно в продуктах есть форма обратной связи, в которой пользователей просят поделиться своим опытом и степенью удовлетворенности. В то время как многие из них имеют полноценные формы со шкалами оценок с радиокнопками для оценки удовлетворительности, за ними также следует текстовое поле, чтобы зафиксировать то, что конечный пользователь хочет передать. Некоторые продукты прямо имеют 5-звездочный рейтинг или кнопку «Нравится-не нравится», чтобы зафиксировать удовлетворенность пользователя, хотя это действительно фиксирует удовлетворенность пользователя, но не отражает то, что пользователь хочет сказать, что он/она думает о продукте. В любом случае, учитывая поле textarea для конечного пользователя для отправки отзыва, возникает вопрос, как автоматически извлечь настроение в сообщении отзыва?

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

Требуемые навыки
Машинное обучение — контролируемые и неконтролируемые алгоритмы
Методы оценки
Библиотеки машинного обучения: Python (pandas)

Целевая аудитория
Любой, кто ищет знания и активно учится

Дизайн
Масса имеющихся данных не имеет меток, так как это данные без предварительно прикрепленных меток. Изучив различные варианты использования, я решил проверить данные на неконтролируемом алгоритме для пометки на них метки.

Неконтролируемая маркировка с использованием VADER
После изучения различных алгоритмов машинного обучения я решил придерживаться VADER (словарь с учетом валентности и анализатор настроений). Это алгоритм, основанный на правилах, специально предназначенный для определения настроений, выраженных в социальных сетях. Это неконтролируемый алгоритм, широко используемый для маркировки поляризованных настроений, встроенных в сообщение. Он опирается на специализированный словарь слов, фраз и смайликов. Его полностью открытый исходный код под лицензией MIT. Он доступен на Python в виде пакета с метким названием «vaderSentiment». Вейдер получает входное сообщение и возвращает вероятность того, что сообщение будет положительным, отрицательным или нейтральным. Его довольно просто использовать, не требуется специального обучения, нет хлопот.

После того, как вы запустите приведенный выше скрипт, он напечатает приведенный ниже вывод.

Выходные данные отображают оператор как более склонный к положительному значению со значением 0,674. Сумма положительных, отрицательных и нейтральных значений равна 1.

VADER также может анализировать смайлики, как в примере ниже.

Если есть определенные слова или жаргоны, специфичные для продукта, которые влияют на результат настроения, мы можем добавить слова в лексикон VADER, чтобы настроить результат.

Для проекта, которым я занимаюсь, цель состояла в том, чтобы убедиться, что анализ тональности на основе полярности позволяет определить тональность данного сообщения клиента. Я экспортировал отзывы клиентов из базы данных в CSV, а затем передал их в скрипт, который использует только соответствующие столбцы, такие как столбец «сообщение». Поскольку я имею дело с неразмеченными данными, мне пришлось вручную проверить, соответствует ли результат настроению, заложенному в утверждении.

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