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

В идеале решением было бы разбить предложения и фразы на определенные компоненты, а затем проанализировать эти компоненты с помощью такой техники, как обработка естественного языка (NLP). NLP включает в себя такие функции, как анализ настроений, распознавание сущностей, анализ синтаксиса, тегирование частей речи и т. д., которые могут помочь нам разбить неструктурированные данные на уровень детализации и обеспечить более глубокий анализ. Существует несколько наборов инструментов, таких как NLTK, SpaCy, Amazon Comprehend, Google Cloud NL API и т. д., которые позволяют обрабатывать тексты и извлекать из них информацию.

Сценарий. Представьте, что ваша организация использует платформу аналитики данных Qlik Sense для визуального понимания данных и ключевых показателей, а также Amazon Comprehend для анализа текста. Ваше требование состоит в том, чтобы иметь возможность анализировать некоторые текстовые данные, понимать настроения и, самое главное, иметь возможность визуализировать обработанные тексты и извлекать любые скрытые идеи. Как бы вы достигли этого, используя два?

Именно здесь в игру вступают расширенные аналитические возможности Qlik Sense. Теперь, как разработчик приложений Qlik Sense, вы можете интегрировать модель данных Qlik с Amazon Comprehend, используя собственныйконнектор для Qlik Sense. Это позволит вам отправить набор данных из сценария перезагрузки Qlik или выражение диаграммы в Comprehend и получить выводы обратно в Qlik.

Теперь, прежде чем мы сосредоточимся конкретно на «анализе настроений», давайте немного поговорим об использовании любых сторонних коннекторов машинного обучения в Qlik Sense (включая Amazon Comprehend для этого конкретного случая использования). Это поможет вам понять, что скрывается за капотом, и заложить основу для использования любого аналитического соединителя.

1. Аналитические связи:

Первым шагом для начала взаимодействия с любой сторонней конечной точкой машинного обучения из Qlik Sense является установление аналитического соединения. Его можно создать в редакторе загрузки данных, и он является родным для клиента Qlik Sense.

2. Функции расширения на стороне сервера (SSE):

После создания соединения следующим шагом будет интеграция модели данных Qlik со сторонней платформой машинного обучения с использованием соединения. Это позволит:

  • отправка данных из модели данных Qlik и получение выводов с помощью скрипта загрузки
  • выполнение расчетов в реальном времени в выражениях диаграммы

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

  • ScriptEval — используется со скриптом загрузки данных. Здесь вы можете отправить одну таблицу в модель ML, и будет возвращена одна таблица данных. Затем мы можем использовать оператор LOAD … EXTENSION для загрузки данных обратно в Qlik.
  • ScriptAggrStr — используется с выражением диаграммы. Здесь мы не можем использовать таблицу, возвращенную из вызова функции SSE, и Qlik Sense будет использовать только первый возвращенный столбец.

Весь рабочий процесс для любой интеграции подключения машинного обучения в Qlik Sense состоит из следующих шагов:

  1. функции и параметры SSE сначала обрабатываются в Qlik Sense.
  2. затем они преобразуются в запросы REST.
  3. запросы REST отправляются для обработки сторонним моделям машинного обучения.
  4. Модели машинного обучения обрабатывают запрос и отправляют вывод обратно в Qlik.

На изображении ниже показан весь поток.

Условие:

  • Аналитические подключения для конечных точек машинного обучения должны быть включены администратором арендатора в консоли управления.
  • Необходимо иметь доступ к сторонним моделям машинного обучения, которые предоставляют конечные точки API на основе REST.

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

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

  1. Загрузить данные. Сначала мы загрузим наш набор данных, который находится в файле CSV, используя подключение к папке. Сценарий в редакторе загрузки данных выглядит следующим образом. Обратите внимание, что мы также добавили новое поле «RowNo() as RowID» в нашу таблицу [Hotel_review]. Целью этого является создание ассоциаций между этим и таблицами, возвращаемыми сторонними системами машинного обучения (понимание в данном случае), чтобы мы могли использовать преимущества уникального ассоциативного механизма Qlik во время анализа.

2. Создайте соединение. Поскольку мы планируем использовать Amazon Comprehend для анализа текста, мы создадим новое соединение в редакторе загрузки данных. Amazon Comprehend предоставляет следующие 5 сервисов для анализа текста:

Поскольку в данном случае нашей целью является анализ тональности, мы выберем выделенный сервис из раскрывающегося списка. Вам также нужно будет предоставить специфичные для Amazon данные для подключения (подробности читайте здесь) и, наконец, имя (Amazon_Comprehend_demo).

3. Отправить данные в Comprehend. Затем мы воспользуемся кнопкой «Выбрать данные» в нашем соединении, чтобы отправить таблицу и поле из Qlik Sense к системе Amazon Comprehend для анализа настроений. table должно быть именем таблицы с исходными данными, которую вы загрузили в свое приложение. В нашем случае это таблица «Hotel_Review», а поле «Отзывы».

4. Загрузить возвращенную таблицу: после отправки имени таблицы и поля из Qlik Sense в Comprehend доступная возвращаемая таблица автоматически появится в Раздел «Таблицы» (как показано ниже). При выборе таблицы вы можете выбрать или отменить выбор столбцов для загрузки. В нашем случае мы выберем все 5 полей в таблице «Настроения», возвращенной Comprehend, и нажмем «Вставить сценарий».

Ниже показано, как выглядит сценарий. Как и в шаге 1, мы также добавляем поле «RowNo() as RowID» для сохранения связей, а затем перезагружаем наше приложение. Обратите внимание, что когда происходит перезагрузка приложения, оно сначала ожидает загрузки исходных данных в виде резидентной таблицы и использования их в качестве входных данных для запроса к конечным точкам Amazon Comprehend.

Для простоты давайте визуально разберем функцию SSE.

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

5.Анализ. Наш последний шаг — создать панель инструментов и провести некоторый анализ, чтобы мы могли понять настроения отзывов об отелях, обработанных Comprehend.

Во-первых, я хочу знать количество каждой прогнозируемой категории тональности. Итак, я создаю гистограмму, используя «Настроение» в качестве измерения и «Count(RowID)» в качестве меры. Обратите внимание, как мы можем использовать поле, возвращаемое системой Comprehend, вместе с доступными данными Qlik sense для получения информации.

Итак, похоже, что есть много «смешанных» отзывов об отелях. Из любопытства я хотел знать, почему было так много противоречивых отзывов об этих отелях. Поэтому я создал объект-таблицу с подробными обзорами, заголовками и выбрал в качестве фильтра только «Смешанные» из гистограммы. Результат ниже:

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

Я также хотел визуализировать предсказанные настроения по исходным рейтингам отелей. Итак, я решил создать диаграмму Mekko, которая позволила бы мне визуализировать рейтинги для каждого сегмента настроений. Для этого я использую «Настроение» в качестве параметра, «Рейтинги» в качестве ячеек и «Количество (RowID)» в качестве показателя. .

Отсюда мы можем сделать некоторые выводы. Например, из всех положительных отзывов 71,3% были оценены в 5 звезд, что соответствует нашему общему пониманию. Негативные настроения состоят из оценок в диапазоне от 2,5 до 2,9. Итак, они оказались отрицательными.

Наконец, давайте создадим лист анализа настроений в реальном времени в нашем приложении Qlik Sense. Это очень интересно, поскольку облегчает следующее:

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

Для построения листа мы будем использовать объект Variable input из комплекта панели инструментов Qlik, который может служить текстовым полем. Мы создаем новую переменную с именем vText для использования с этой переменной.

Затем мы перетаскиваем объект на наш лист, и результат ниже:

Далее нам нужно передать входной текст в Amazon Comprehend и получить результат в режиме реального времени. Для этого мы воспользуемся выражением диаграммы на основе SSE. Поскольку нам нужно создать выражение, нам в основном нужен объект, который может показать нам «Показатели». Объект KPI является естественным выбором для этой цели. Итак, мы перетаскиваем объект KPI и записываем наше выражение.

endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Amz_comprehend_sentiment","parameters":{"languagecode":"$(vLanguage)"}}}',vText)

Результат виден ниже.

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

pick(match(endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Amazon_Comprehend_Sentiment","parameters":{"languagecode":"$(vLanguage)"}}}',vText),
'POSITIVE','NEUTRAL','NEGATIVE','MIXED'),
'😀','😐','🙁','🙄')

Собрав все вместе, окончательный результат можно увидеть ниже -

Вот приборная панель в действии.

Идея этого блога заключалась в том, чтобы дать отправную точку пользователям Qlik Sense, которые планируют интегрировать сторонние системы машинного обучения и беспрепятственно проводить расширенную аналитику. Существуют также определенные ограничения, характерные для Amazon Comprehend и коннектора, о которых вы можете прочитать здесь. В следующей паре блогов мы расширим это руководство, включив в него еще несколько интересных вариантов использования различных коннекторов аналитики, доступных в Qlik Sense SaaS.

Если вы хотите проверить это демо-приложение, вот ссылка — https://github.com/dipankarqlik/QlikSenseApps